PageSourceSearch

https://florasavage.net/blog/

html florasavage.net collected 2026-09-26 18:43:07 UTC 218,564 bytes, 3,502 lines download raw bytes

1<!DOCTYPE html>
2<html class="noIE" lang="en-US">
3    <head>
3<script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={xpid:"UA4PVVdRGwUHV1NQBwU=",licenseKey:"0ac16663c3",applicationID:"6732204",browserID:"6732206"};;/*! For license information please see nr-loader-full-1.322.0.min.js.LICENSE.txt */
4(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.322.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
4e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
4const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>S,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
4if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,R(e,t)}function R(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function w(e,t,r,n,i){if(R(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(w(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(w(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function S(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let R=0,w=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(R=R>0?Math.min(R,e):e),t&&(w=w>0?Math.max(w,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return R>0?Math.min(e,R):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return w>0?Math.max(e,w):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
4o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){u([e],r)}for(var n in e)o.call(e,n)&&(t[n]=e[n])}
4(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
4;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({95:"nr-full-compressor",222:"nr-full-recorder",649:"nr-full-iframe-message-handler",89
41:"nr-full"}[e]+"-1.322.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,s,a)=>{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={891:"sha512-YFF+tf82v8eglmCSz5XYYPZ9svAEVPEL8CjIs/VJ5WDjxajLkBKoCp6iBhqtcYRu8v8sXwAWX58PGV4RVzB2dQ==",222:"sha512-y0XrI32v2ZxZdktMLngwYUsETp/i/aYkdx9JOeIAmr2KYJdlDneMKYdNwPaZiOX3gb7AXywTby7jg1okwEkArw==",95:"sha512-WtCe89dmBu8YGhCnszRdHzYCzOqwTSeitVhY/ahmZczjI+0C6KOazsnU/vPsTDaM7VSG+iZW7zidI1t5+hpiYQ==",649:"sha512-AYJxsYTPRDF5tWSm4lWONX5VM69Ou9twLFZ8apchUI9gNOrXBkzP8QZ+PQkMz8nGjh/7oVMR+1cA+5dWFYhmmw=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={85:0,959:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.322.0.PROD"]=self["webpackChunk:NRBA-1.322.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
4ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var R=r(9232);var w=r(7836),T=r(3241);const S={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var A=r(9908),x=r(9752);function _(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,S)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:R.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=w.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,A.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var O=r(1863),k=r(4261),L=r(1738);var M=r(1687),P=r(4234),N=r(5289),j=r(5270),I=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends P.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,M.Ak)(e,this.featureName),t()}))}):(0,M.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
4{if((0,I.V)(e.init))try{const{setupAgentSession:t}=await r.e(891).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,A.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(649).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(891).then(r.bind(r,6589)),r.e(891).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,M.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,M.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,N.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,j.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}_(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,L.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,A.p)("api-"+k.Fw,[(0,O.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(891).then(r.bind(r,908)):r.e(891).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,N.sB)(t=>{e(t,"DOMContentLoaded")}),(0,N.GG)(t=>{e(t,"load")}),(0,N.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),_(this,e,e.loaderType||"agent"),t=this,(0,L.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,L.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,L.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,A.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,L.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,L.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,L.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,L.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,L.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,A.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,A.p)("docHidden",[(0,O.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,A.p)("winPagehide",[(0,O.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(891).then(r.bind(r,9018))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(891).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,O.t)()){"string"==typeof e&&(e=new Error(e)),(0,A.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,A.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,O.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,O.t)()){(0,A.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,O.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
4null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,A.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,O.t)()){(0,A.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,O.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,O.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,O.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const Re=["entry","scripts","all"],we=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Se={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Ae(e){(0,L.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Se.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=R.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:R.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||Re.includes(r.timingMethod)||(Se.invalidTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||R.f.BA,"parent.id":r.parent?.id})}
4),Object.entries(r.tags).forEach(([e,t])=>{we.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Se.disabled),u(r.id)&&u(r.name)||d(()=>Se.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Se.duplicateName(r),n===r.id&&t!==r.name&&Se.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Se.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,O.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
4imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,O.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,A.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class _e extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,L.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,L.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,L.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Ae(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,A.p)("ierr",[ee(t),(0,O.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,A.p)("err",[te(t),(0,O.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,A.p)("err",[re(t),(0,O.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(891).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var Oe=r(8990);let ke=1;function Le(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,Oe.I)(e,"nr@id",function(){return ke++})}function Me(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Pe=r(8139),Ne=r(3434),je=r(5732);const Ie={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||w.ee;const n=function(e){return(e||w.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(Ie[n.debugId]++)return n;Ie[n.debugId]=1,(0,Pe.u)(r,t);var i=(0,Ne.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,je.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||w.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,je.$5)(t);var o;r.emit(i+"before-start",[e],n),n[w.P]&&n[w.P].dt&&(o=n[w.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
4return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,ye.ZF)(),a=(0,ye.el)(),o=Date.now(),c={spanId:s,traceId:a,timestamp:o};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,o,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,a,o,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,A.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=S,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){_(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Me(i);a&&(n.txSize=a)}this.startTime=(0,O.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
4!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Le(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Le(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,O.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,O.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,O.t)()-this.xhrCbStart,this.onload,t],t)}function R(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function w(e,t){this.params={},this.metrics={},this.startTime=(0,O.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Me(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,O.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Me(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function S(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):_(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Me(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function _(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Me(e.response):"text"===r||""===r||void 0===r?Me(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,A.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",R),r.on("fetch-start",w),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(891).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||w.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Ne.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,L.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,A.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,A.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,L.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,A.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
4if(!(0,I.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Pe.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,O.t)()}),this.eventsEE.on(pt,function(e,r){(0,A.p)("bst",[e[0],r,this.bstStart,(0,O.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,O.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,A.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,A.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(891).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,L.Y)(k.CH,function(){(0,A.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,L.Y)(k.Tb,function(){(0,A.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,j.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(891).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,A.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,j.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(891),r.e(222)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var Rt=r(981);const wt={},Tt=new Set;function St(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class At{constructor(e,t){this.timestamp=(0,O.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class xt extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,L.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,L.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Ae(e),function(e){(0,L.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(wt[r.debugId]++)return r;wt[r.debugId]=1,(0,V.G)(()=>{const e=(0,O.t)();Tt.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
4class n extends WebSocket{static name=Rt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new At(e[0],e[1]),this.targets=(0,je.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,O.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),Tt.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=St(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,O.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,Tt.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=St(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,A.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,A.p)("spv",[_t(e),(0,O.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,A.p)("spv",[_t(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,A.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
4h(e=>{const t=(0,C.s)(e=>{(0,A.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,A.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,A.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,A.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,A.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(891).then(r.bind(r,8019))):this.deregisterDrain()}}function _t(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Ot=r(2646);const kt=new Map;function Lt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||w.ee).get("logger")}(e),o=(0,Ne.YM)(a,void 0,s),c=new Ot.y(w.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Ne.Jt]||t[r];return kt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>kt.get(d),void 0,!0),a}var Mt=r(1910);class Pt extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,L.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,L.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Lt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Ae(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Mt.i)(g.gm.console[t]),Lt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(891).then(r.bind(r,5288)))}}new F({features:[K,G,vt,Et,nt,Y,_e,xt,Pt],loaderType:"pro"})})()})();</script>
4
5        <meta name="viewport" content="width=device-width, initial-scale=1">
6<link href="https://asset.bloomnation.com" rel="preconnect" crossorigin>
7<link rel="preconnect" href="https://fonts.googleapis.com">
8<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9<link rel="preconnect" href="https://promfiles.com/" crossorigin>
10
11    <style>
12        :root {
13            --bn--default-font: 'Avenir', Helvetica, Arial, sans-serif;
14        }
15
16        @font-face {
17            font-display: swap;
18            font-family: 'Avenir';
19            src: local('Avenir'),
20            url('https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/fonts/woff2/AvenirNext-Regular.dbfaaeb9.woff2') format('woff2'),
21            url('https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/fonts/woff/AvenirNext-Regular.1017e4f4.woff') format('woff');
22            font-weight: 100;
23            unicode-range: U+000-5FF;
24        }
25
26        @font-face {
27            font-display: swap;
28            font-family: 'Avenir';
29            src: local('Avenir'),
30            url('https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/fonts/woff2/AvenirNext-Medium.8f8afa8e.woff2') format('woff2'),
31            url('https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/fonts/woff/AvenirNext-Medium.bb4e0d80.woff') format('woff');
32            font-weight: 200;
33            unicode-range: U+000-5FF;
34        }
35
36        @font-face {
37            font-display: swap;
38            font-family: 'Avenir';
39            src: local('Avenir'),
40            url('https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/fonts/woff2/AvenirNext-UltraLight.d9fd23ba.woff2') format('woff2'),
41            url('https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/fonts/woff/AvenirNext-UltraLight.99b9fd3e.woff') format('woff');
42            font-weight: 50;
43            unicode-range: U+000-5FF;
44        }
45
46        @font-face {
47            font-display: swap;
48            font-family: 'Avenir';
49            src: local('Avenir'),
50            url('https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/fonts/woff2/AvenirNext-DemiBold.eea19314.woff2') format('woff2'),
51            url('https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/fonts/woff/AvenirNext-DemiBold.37566b7a.woff') format('woff');
52            font-weight: 300;
53            unicode-range: U+000-5FF;
54        }
55
56        @font-face {
57            font-display: swap;
58            font-family: 'Avenir';
59            src: local('Avenir'),
60            url('https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/fonts/woff2/AvenirNext-Bold.b652524b.woff2') format('woff2'),
61            url('https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/fonts/woff/AvenirNext-Bold.d1a3cf86.woff') format('woff');
62            font-weight: 400;
63            unicode-range: U+000-5FF;
64        }
65
66        * {
67            letter-spacing: 0 !important;
68            font-smoothing: antialiased;
69            -webkit-font-smoothing: antialiased;
70            -moz-font-smoothing: antialiased;
71            -o-font-smoothing: antialiased;
72        }
73
74        body {
75            --bn--primary-font: var(--bn--default-font);
76            font-family: var(--bn--primary-font);
77        }
78    </style>
79    <title>Your New Orleans floral expert | Flora Savage</title>
80    <meta name="google-site-verification" content="iuPLZsM60xFMypifrGy3JLYqEaw5Cq3VuS1NaLxUZmQ"/>
81    <meta name="description" content="Order fresh flowers online that are hand-delivered by the best local florists. Find local flower shops with same-day flower delivery and shop from unique flower arrangements designed by certified floral designers. Forget cheap flowers and discover that perfect gift for Mother's Day, birthdays, anniversaries, funerals, and all occasions."/>
82    <meta name="keywords" content=""/>
83    <link rel="canonical" href="https://florasavage.net/blog/"/>
84
85    <link rel="icon" href="https://asset.bloomnation.com/f_auto,q_auto/v1/vendor/global/favicon/favicon.ico" type="image/x-icon"/>
86    <link rel="shortcut icon" href="https://asset.bloomnation.com/f_auto,q_auto/v1/vendor/global/favicon/favicon.ico" type="image/x-icon"/>
87
88
89    
89<script type="text/javascript" src="https://promfiles.com/bloom/dist/js/lib/jquery/jquery-1.12.1.min.2a534122.js"></script>
89
90    
90<script>jQuery.noConflict();</script>
90
91    
91<script type="application/ld+json">{"@context":"https://schema.org/","@type":["Florist","LocalBusiness","Organization"],"@id":"https://florasavage.net/#florist","name":"Flora Savage","image":"https://asset.bloomnation.com/c_fit,dpr_2,f_auto,h_500,q_auto,w_852/v1/vendor/2705/profile/f/l/florasavage-logo.png","logo":"https://asset.bloomnation.com/c_fit,dpr_2,f_auto,h_500,q_auto,w_852/v1/vendor/2705/profile/f/l/florasavage-logo.png","url":"https://florasavage.net/","address":{"@type":"PostalAddress","streetAddress":"1301 Royal St. ","addressLocality":"New Orleans","addressRegion":"LA","postalCode":"70116","addressCountry":"US"},"telephone":"+15045814728","priceRange":"$$","openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"10:00","closes":"17:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Saturday","opens":"10:00","closes":"15:00"},{"@type":"OpeningHoursSpecification","validFrom":"2027-02-14","validThrough":"2027-02-14","opens":"10:00","closes":"10:00"},{"@type":"OpeningHoursSpecification","validFrom":"2026-12-25","validThrough":"2026-12-25","opens":"00:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","validFrom":"2027-09-06","validThrough":"2027-09-06","opens":"00:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","validFrom":"2027-05-31","validThrough":"2027-05-31","opens":"00:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","validFrom":"2027-01-01","validThrough":"2027-01-01","opens":"00:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","validFrom":"2026-11-26","validThrough":"2026-11-28","opens":"00:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","validFrom":"2026-09-25","validThrough":"2026-09-26","opens":"00:00","closes":"00:00"}],"areaServed":[{"@type":"Place","address":{"@type":"PostalAddress","addressCountry":"US","addressRegion":"LA","addressLocality":"Metairie"}},{"@type":"Place","address":{"@type":"PostalAddress","addressCountry":"US","addressRegion":"LA","addressLocality":"Arabi"}},{"@type":"Place","address":{"@type":"PostalAddress","addressCountry":"US","addressRegion":"LA","addressLocality":"Chalmette"}},{"@type":"Place","address":{"@type":"PostalAddress","addressCountry":"US","addressRegion":"LA","addressLocality":"Green Lawn Terrace"}},{"@type":"Place","address":{"@type":"PostalAddress","addressCountry":"US","addressRegion":"LA","addressLocality":"Kenner"}},{"@type":"Place","address":{"@type":"PostalAddress","addressCountry":"US","addressRegion":"LA","addressLocality":"Beachview"}}],"description":"French Quarter Florist","sameAs":["https://www.facebook.com/FloraSavage","https://www.instagram.com/florasavage/","https://www.google.com/maps?cid=8856762549799062052","https://www.pinterest.com/florasavage13/","https://www.yelp.com/biz/flora-savage-new-orleans","https://www.bloomnation.com/florist/flora-savage/"],"geo":{"@type":"GeoCoordinates","longitude":-90.0604561,"latitude":29.9629489},"hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","applicableCountry":"US","returnPolicyCategory":"https://schema.org/MerchantReturnNotPermitted","merchantReturnLink":"https://florasavage.net/policies"},"hasShippingService":{"@type":"ShippingService","@id":"https://florasavage.net/#delivery-service","name":"Local Hand Delivery","description":"Fresh flowers hand-delivered by your local florist","fulfillmentType":"FulfillmentTypeDelivery","handlingTime":{"@type":"ServicePeriod","businessDays":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"duration":{"@type":"QuantitativeValue","minValue":0,"maxValue":0,"unitCode":"DAY"},"cutoffTime":"14:00:00-05:00"},"shippingConditions":[{"@type":"ShippingConditions","shippingDestination":{"@type":"DefinedRegion","addressCountry":"US"},"shippingRate":{"@type":"MonetaryAmount","value":"20.00","currency":"USD"},"transitTime":{"@type":"ServicePeriod","duration":{"@type":"QuantitativeValue","minValue":0,"maxValue":0,"unitCode":"DAY"}}}]},"hasMemberProgram":{"@type":"MemberProgram","name":"Flower Points","description":"Earn 1 Flower Points for every $1.00 spent. Redeem 200 Flower Points for $10.00 off.","hasTiers":[{"@type":"MemberProgramTier","name":"Flower Points","hasTierBenefit":[{"@type":"TierBenefitLoyaltyPoints"}],"membershipPointsEarned":1}]},"aggregateRating":{"@type":"AggregateRating","ratingValue":"4.9024","reviewCount":"1538","worstRating":"1","bestRating":"5","url":"https://www.bloomnation.com/florist/flora-savage/reviews/"}}</script>
91
92
93<link rel="stylesheet" href="https://promfiles.com/bloom/dist/js/bloomnation/review-photos.8ea4dd02.css" />
94<link rel="stylesheet" href="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/css/bootstrap.min.8dd31aca.css" media="all" />
95<link rel="stylesheet" href="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/css/font-awesome.min.da606908.css" media="all" />
96<link rel="stylesheet" href="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/css/layout.c5c342e2.css" media="all" />
97<link rel="stylesheet" href="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/css/typography.ab03696f.css" media="all" />
98<link rel="stylesheet" href="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/css/header.min.6ecf0dca.css" media="all" />
99<link rel="preload" as="style" href="https://promfiles.com/bloom/dist/frontend/base/default/css/popup.0c21c495.css" onload="this.onload=null;this.rel='stylesheet'" /><noscript><link rel="stylesheet" href="https://promfiles.com/bloom/dist/frontend/base/default/css/popup.0c21c495.css" /></noscript>
100<link rel="preload" as="style" href="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/css/components.min.a065e359.css" onload="this.onload=null;this.rel='stylesheet'" /><noscript><link rel="stylesheet" href="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/css/components.min.a065e359.css" /></noscript>
101<script src="https://promfiles.com/bloom/dist/js/runtime.8353d46c.js"></script>
vendor: 1 bytes, line 101
101
102<script src="https://promfiles.com/bloom/dist/js/lib/ccard.0b909381.js"></script>
vendor: 1 bytes, line 102
102
103<script src="https://promfiles.com/bloom/dist/js/bloomnation/global.612205a7.js"></script>
vendor: 1 bytes, line 103
103
104<script src="https://promfiles.com/bloom/dist/js/bloomnation/forms/clear-validation-state.cb4122c4.js"></script>
vendor: 1 bytes, line 104
104
105<script src="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/runtime.ceb56166.js"></script>
vendor: 1 bytes, line 105
105
106<script src="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/js/bootstrap.min.ed580635.js"></script>
vendor: 1 bytes, line 106
106
107<script src="https://promfiles.com/bloom/dist/js/popup/popup.eace3136.js" defer></script>
vendor: 1 bytes, line 107
107
108<script src="https://promfiles.com/bloom/dist/js/bloomnation/review-photos.59481161.js" defer></script>
vendor: 1 bytes, line 108
108
109<script src="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/js/main-nav.05e9f99c.js" defer></script>
vendor: 1 bytes, line 109
109
110<script src="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/js/wm-slider.2c143ae6.js" defer></script>
110
111
112
113
114    
115                    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,700&amp;display=swap" media="print" onload="this.media='all'">
116    
117    <style id="bn__site_theme">
118
119                :root {
120                    --primary-font: Avenir, Helvetica, Arial, sans-serif;
121                    --site-max-width: 1150px;
122                    --body-bg: rgb(17, 17, 17);
123                    --body-text-color: rgb(255, 255, 255);
124                    --text-action-color: #1c5772;
125                    --button-text-color: #ffffff;
126                    --element-action-color: #4C6700;
127                    --header-bg: rgb(194, 192, 173);
128                    --header-text-color: rgb(255, 255, 255);
129                    --footer-bg: rgb(17, 17, 17);
130                    --footer-text-color: rgb(255, 255, 255);
131                    --menu-color: rgb(17, 17, 17);
132                    --header-address-color: rgb(33, 36, 39);
133                    --my-account-color: rgb(33, 36, 39);
134                    --color-light: #fff;
135                    --card-action-color: rgb(28, 87, 114);
136                    --popular-pick-action-color: rgb(28, 87, 114);
137                    --element-action-color-active: #4C670090;
138                    --text-action-color-active: #587684;
139                    --header-text-color-active: #21242790;
140                    --body-text-color-active: #ffffff90;
141                    --footer-text-color-active: #ffffff90;
142                    --decorative-font: Avenir, Helvetica, Arial, sans-serif;
143                    --card-action-color-active: #35708b;
144                    --popular-pick-action-color-active: #35708b;
145                }
146        
147        body {
148            font-family: var(--primary-font);
149        }
150
151        body:not(.cms-page-view) {
152            background: var(--body-bg);
153        }
154
155        .row {
156            max-width: var(--site-max-width);
157        }
158
159        a,
160        a:active,
161        a:visited {
162            color: var(--text-action-color);
163        }
164
165        a:hover {
166            color: var(--text-action-color-active);
167        }
168
169        #header {
170            background: var(--header-bg);
171        }
172
173        .my-account-mob .header-cartBtn {
174            background-color: transparent !important;
175        }
176
177        .header-cartBtn .header-cartIcon {
178            color: var(--header-icon-color, #333);
179        }
180
181        #header .header-nav.headerNav-wrapper {
182            background: var(--menu-color);
183        }
184
185        .information-heading .infoHeading-item {
186            color: var(--header-address-color);
187        }
188
189        .nav-itemText {
190            color: var(--header-text-color);
191        }
192
193        .nav-itemText:hover,
194        .nav-itemWrapper:hover,
195        .nav-item:hover {
196            color: var(--header-text-color-active);
197        }
198
199        .note-msg,
200        .listings .note-msg,
201        ul.disc,
202        .listings-sorting_options span,
203        span.pagination-page_count,
204        .designerschoice-index-view #content,
205        a.itemListings-subheaderLink,
206        .breadcrumb>li,
207        .breadcrumb li a,
208        ul.disc li a {
209            color: var(--body-text-color);
210        }
211
212        a.itemListings-subheaderLink:hover,
213        .breadcrumb>li:hover,
214        .breadcrumb li a:hover,
215        ul.disc li a:hover {
216            color: var(--body-text-color-active);
217        }
218
219        .cms-page-view .breadcrumb>li,
220        .cms-page-view .breadcrumb li a {
221            color: inherit;
222        }
223
224        .cms-page-view .breadcrumb li a:visited,
225        .cms-page-view .breadcrumb li a:active,
226        .cms-page-view .breadcrumb li a:hover {
227            color: inherit;
228        }
229
230        h1.banners-header {
231            color: var(--body-text-color);
232        }
233
234        h2.itemListings-header {
235            color: var(--body-text-color);
236        }
237
238        h3.itemListings-subheader {
239            color: var(--body-text-color);
240        }
241
242        .cms-index-aboutus #content,
243        .cms-index-aboutus #content h1[itemprop=name],
244        .cms-index-aboutus #content span[itemprop=description],
245        .cms-index-faq #content,
246        .cms-index-faq #content h1[itemprop=name],
247        .cms-index-faq #content span[itemprop=description],
248        .about-us-nlp__header,
249        .product_details-about-designer h3,
250        .product_details-about-designer span {
251            color: var(--body-text-color);
252        }
253
254        .cms-index-gallery #content,
255        .cms-index-gallery #content a {
256            color: var(--body-text-color);
257        }
258
259        .cms-index-gallery #content a:hover {
260            color: var(--body-text-color-active);
261        }
262
263        .listings .sidebar-sort > div.sidebar {
264            background: var(--color-light, #fff);
265        }
266
267        .listings .sidebar-sort > div.sidebar-best_selling {
268            background: var(--color-light, #fff);
269        }
270
271        h1.catalog-header {
272            color: var(--body-text-color);
273        }
274        .pagination > .active > a,
275        .pagination > .active > span,
276        .pagination > .active > a:hover,
277        .pagination > .active > span:hover,
278        .pagination > .active > a:focus,
279        .pagination > .active > span:focus {
280            border-color: var(--element-action-color);
281            color: var(--button-text-color);
282            background: var(--element-action-color);
283        }
284
285        .pagination > li > a,
286        .pagination > li > span,
287        .pagination > li > a:hover,
288        .pagination > li > span:hover {
289            color: var(--text-action-color);
290        }
291        a.search-results-empty__btn,
292        .btn-success,
293        .btn-update,
294        .btn-continue {
295            border-color: var(--element-action-color);
296            color: var(--button-text-color);
297            background: var(--element-action-color);
298        }
299
300        a.search-results-empty__btn:hover,
301        .btn-success:hover,
302        .btn-update:hover,
303        .btn-continue:hover,
304        .btn-success:focus,
305        .btn-success:active {
306            border-color: var(--element-action-color-active);
307            color: var(--button-text-color);
308            background: var(--element-action-color-active);
309        }
310        #footer {
311            background: var(--footer-bg);
312            color: var(--footer-text-color);
313        }
314
315        .footer-social_media {
316            background: var(--footer-bg);
317        }
318
319        section#footer #super-footer a,
320        section#footer #super-footer p,
321        section#footer a {
322            color: var(--footer-text-color);
323        }
324
325        section#footer #super-footer a:hover,
326        section#footer a:hover {
327            color: var(--footer-text-color-active);
328        }
329
330        #my-account_menu-label {
331            color: var(--my-account-color, #333);
332        }
333
334        .my-account-icon {
335            color: var(--header-icon-color, #333);
336        }
337
338        .link-default,
339        .link-default:visited,
340        .link-default:active,
341        .sidebar a,
342        .sidebar a:active,
343        .sidebar a:visited,
344        .delivery__content a,
345        .delivery__content a:active,
346        .delivery__content a:visited {
347            color: var(--card-action-color, #428bca);
348        }
349
350        a.link-default:hover,
351        .sidebar a:hover,
352        .delivery__content a:hover {
353            color: var(--card-action-color-active, #2a6496);
354        }
355
356        a.social__icon-link:hover {
357            color: var(--card-action-color-active, #2a6496);
358        }
359
360        .poppick_item a,
361        .poppick_item a:active,
362        .poppick_item a:visited {
363            color: var(--popular-pick-action-color, #428bca);
364        }
365
366        .poppick_item a:hover {
367            color: var(--popular-pick-action-color-active, #2a6496);
368        }
369
370        .social__icon-link,
371        .social__icon-link:active,
372        .social__icon-link:visited {
373            color: inherit;
374        }
375
376        .subscription-list-page__title,
377        .subscription-list-page__description,
378        .subscription-customize-form-section,
379        .subscription-customize-form-terms-section,
380        .subscription-customize-form__disclaimer,
381        .product-list__additional-info,
382        .subscription-customize-form__header {
383            color: var(--body-text-color);
384        }
385
386        .member_of_bloomnation-logo {
387            background: rgba(255,255,255,0.7);
388            border-radius: 12px;
389        }
390    </style>
391
392    <style>
393    :root {
394        --bn--primary-color: ;
395        --bn--secondary-color: ;
396        --bn--background-color: ;
397        --bn--mobile-menu-text-color: ;
398    }
399
400    /* Primary Color Classes */
401    
402    /* Secondary Color Classes */
403    
404    /* Background Color Classes */
405    
406    /* Background Color Classes */
407    </style>
408
409    <style data-id="vendor-css">
410        @import url(//fonts.googleapis.com/css?family=Open+Sans:400,700&display=swap);#WhippyWidget iframe{opacity:1 !important}:root{--color-dark:#111;--color-secondary:#7E0029;--bn-pdp-background:transparent;--bn-pdp-text:#fff}html{font-size:62.5%}body{background:var(--body-bg)}.row{max-width:var(--site-max-width)}a,a:active,a:visited{color:var(--text-action-color);font-weight:bold !important}a:hover{color:var(--text-action-color-active)}.toolbar-bottom .pagination-page_count em,.pagination-page_count em{color:var(--color-light)}.mobile-filters-btn{color:white;border:1px solid #fff !important}#super-footer .copyright__link{color:#4aa5f2 !important}.pdp-review-aggregate-count,.cross-sell__title{color:var(--color-light) !important}.zipcode-check_day{color:#63d868 !important}.zipcode-check--delivery-available .zipcode-check_change-zip{color:#54a1f9 !important}#header{padding:2.5rem 0 0}.row.header-innerContainer{display:flex;justify-content:center;align-items:center}.infoHeading{margin-bottom:0}.infoHeading-item{color:var(--header-text-color)}.header-logo{margin-top:0}.cms-index-gallery .companyLogo-img,.checkout-onestep-index .company-logo img,.companyLogo-img{max-width:25rem}.my-account-mob .header-cartBtn{background:var(--color-secondary)}.my-account-mob .header-cartBtn:hover{background:#7E002990}.header-cartBtn .header-cartIcon{color:var(--button-text-color)}.header-cart .my-account-button-text,.cart_text{color:var(--header-text-color)}.header-cart .my-account-button-text:hover,.cart_text:hover{color:var(--header-text-color-active)}.header-cart .header-cartBtn-wrapper .cart-badge,.badge{background:var(--text-action-color)}.header-nav{background:var(--color-dark);border-bottom:1px solid var(--color-light)}.nav-itemText{color:var(--color-light)}.nav-item:hover,.nav-itemText:hover,.nav-itemWrapper:hover,.nav-itemWrapper .nav-item:hover{color:#efefef;background:transparent}.header-subnav .nav-item--subnav:hover{color:var(--color-dark)}.cart.row h3,.note-msg,.listings .note-msg,ul.disc,.listings-sorting_options span,span.pagination-page_count,.designerschoice-index-view #content,a.itemListings-subheaderLink,.breadcrumb>li,.breadcrumb li a,ul.disc li a,.designerschoice-index-view [id^="custom-page-main-content"]{color:var(--body-text-color)}a.itemListings-subheaderLink:hover,.breadcrumb>li:hover,.breadcrumb li a:hover,ul.disc li a:hover{color:var(--body-text-color-active)}h1.banners-header{z-index:9999;color:var(--body-text-color)}h2.itemListings-header{color:var(--body-text-color)}.banner--left{width:100%}h3.itemListings-subheader{color:var(--body-text-color)}.product-card__name{height:calc(var(--font-size)*var(--line-height)*2)}.product_details-innerContainer,.productInfo-item{background-color:var(--bn-pdp-background)}.cross-sell-products .cross-sell-heading,.product_details-innerContainer h1,.product_details-innerContainer p,.productInfo-item p,.productInfo-item,.productView h1.product-name,.item--extra,.item--extra span,#orderForm span.price-additional-text{color:var(--bn-pdp-text)}.cms-index-aboutus #content,.cms-index-aboutus #content h1[itemprop=name],.cms-index-aboutus #content span[itemprop=description],.product_details-about-designer h3,.product_details-about-designer span,.cms-index-aboutus [id^="custom-page-main-content"]{color:var(--body-text-color)}#mapContainer{max-width:var(--site-max-width);margin:0 auto}.gallery-title{text-align:center}.cms-index-gallery #content,.cms-index-gallery #content a,.cms-index-gallery [id^="custom-page-main-content"]{color:var(--body-text-color)}.cms-index-gallery #content a:hover{color:var(--body-text-color-active)}.featured_listings{display:none}.search_bar{background:transparent}.bar-quick_sort .search_bar,.bar-quick_select,.bar-quick_sort .search_bar>div{background:var(--color-light)}.bar-quick_sort .search_bar button{background:var(--element-action-color);color:var(--button-text-color)}.sidebar-title{background:var(--color-light)}.listings .sidebar-sort>div.sidebar{background:var(--color-light)}.listings .sidebar-sort>div.sidebar-best_selling{background:var(--color-light)}h1.catalog-header{color:var(--body-text-color)}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{border-color:var(--element-action-color);color:var(--button-text-color);background:var(--element-action-color)}.pagination>li>a,.pagination>li>span,.pagination>li>a:hover,.pagination>li>span:hover{color:var(--text-action-color)}#shopping-cart-table tr{background:var(--color-light)}.cart .sidebar{background:var(--color-light)}a.search-results-empty__btn,#orderForm .orderForm-checkout .btn,.btn-success,.btn-checkout,.btn-checkout-next,#checkout .sidebar .btn-success,.btn-update,.btn-continue,.checkout-cart-index .cart .btn-proceed-checkout{border-color:var(--element-action-color);color:var(--button-text-color);background:var(--element-action-color);font-weight:400 !important;border-radius:3px !important}a.search-results-empty__btn:hover,#orderForm .orderForm-checkout .btn:hover,.btn-success:hover,.btn-checkout:hover,#checkout .sidebar .btn-success:hover,.btn-update:hover,.btn-continue:hover,.btn-success:focus,.btn-success:active,.checkout-cart-index .cart .btn-proceed-checkout:hover{border-color:var(--element-action-color-active);color:var(--button-text-color);background:var(--element-action-color-active)}.header-secure-badge{float:right}#checkout .sidebar .sidebar-inner,#checkout .step-status,#checkout .step{margin-top:1rem;background:var(--color-light);border:1px solid #efefef}#account-management.account{height:auto}#account-management .account-overlay{background:transparent}.favorite-added,.floating-like-button .bn-heart-wrapper{background:var(--element-action-color)}#footer{padding-bottom:1rem;color:var(--footer-text-color)}section#footer a{color:var(--footer-text-color)}section#footer a:hover{color:var(--footer-text-color-active)}.footer-social_media{background:var(--footer-bg);border-top:1px solid var(--color-light);border-bottom:1px solid var(--color-light)}.social-innerContainer{display:flex;justify-content:center;flex-wrap:wrap;align-items:center}.about-us-page-premier-florist p{white-space:normal}.bloomnationRep-img,img.bloomnation-logo-about-us-page{background:var(--color-light);padding:.2rem}.checkout-page .header-secure-badge>span{color:var(--color-dark)}#footer #super-footer .copyright__all-rights-reserved{color:var(--color-light)}#super-footer .map-container{display:flex;justify-content:center;overflow:hidden}.map-container img{object-fit:cover}.footerImgs-itemsContainer{display:flex;justify-content:center;align-items:center}.footerImgs-itemsContainer::before{display:none}.u-responsiveImg{width:100%}.blog-post-view,.blog-index-list{color:var(--color-light)}
410@media screen and (max-width:900px){.row.about_us-header div:first-child{float:none !important;width:auto !important}.row.about_us-header div:last-child{margin:0 auto !important}}@media screen and (max-width:768px){.cms-index-gallery .companyLogo-img,.companyLogo-img{max-width:100%}.checkout-onestep-index .company-logo img{max-width:15rem}.banner--left{margin-top:0}.bar-quick_sort{margin-top:1.5rem}.bar-quick_sort .search_bar{padding-right:0}}    </style>
411
412<style>
413    .wm-link-button {
414        display: inline-block;
415        margin-bottom: 0;
416        font-weight: normal;
417        text-align: center;
418        vertical-align: middle;
419        cursor: pointer;
420        background-image: none;
421        border: 1px solid transparent;
422        white-space: nowrap;
423        padding: 6px 12px;
424        font-size: 14px;
425        line-height: 1.42857143;
426        border-radius: 4px;
427        -webkit-user-select: none;
428        -moz-user-select: none;
429        -ms-user-select: none;
430        user-select: none;
431    }
432    [id^='custom-page-main-content'] img {
433        max-width: 100%;
434    }
435    [id^='custom-page-main-content'] section:not([data-border='false']) .section-container {
436        padding: 3rem 1.5rem;
437    }
438    [id^='custom-page-main-content'] section[id^='section-blank'] {
439        padding: 1rem 0;
440    }
441    [id^='custom-page-main-content'] section[data-border='true'] {
442        padding: 3rem;
443    }
444    [id^='custom-page-main-content'] section {
445        min-height: fit-content;
446        color: var(--body-text-color);
447    }
448    [id^='custom-page-main-content'] section[data-gradient-type='linear'] {
449        background: linear-gradient(
450            var(--gradient-direction),
451            var(--gradient-from, transparent),
452            var(--gradient-to, transparent)
453        ) !important;
454    }
455
456    [id^='custom-page-main-content'] section[data-gradient-type='radial'] {
457        background: radial-gradient(var(--gradient-from, transparent), var(--gradient-to, transparent)) !important;
458    }
459    [id^='custom-page-main-content'] b,
460    [id^='custom-page-main-content'] strong {
461        font-weight: 700 !important;
462    }
463    [id^='section-banner'] {
464        background-color: #ebedef;
465    }
466    [id^='section-banner'][data-bgcolor='dark'] {
467        background-color: #8b8c92;
468    }
469    [id^='section-banner'][data-border='true'] {
470        padding: 3rem;
471    }
472
473    /* Banner Video Background — text always overlays the video; the
474       videoOverlayDarkness slider controls the optional darkness layer. */
475    [id^='section-banner'][data-bg-type='video'] {
476        position: relative;
477        padding: 0 !important;
478        overflow: hidden;
479        height: auto !important;
480        aspect-ratio: 16 / 9;
481    }
482    [id^='section-banner'][data-bg-type='video'] .banner-container {
483        position: absolute;
484        top: 0;
485        left: 0;
486        width: 100%;
487        height: 100%;
488        z-index: 2;
489        display: flex;
490        pointer-events: none;
491    }
492    [id^='section-banner'][data-bg-type='video'] .banner-container :is(
493        a, button, [data-gjs-type='dynamic-link'], [data-gjs-type='link-button']
494    ) {
495        pointer-events: auto;
496    }
497    [id^='section-banner'][data-bg-type='video'] .banner-container .section-container {
498        display: flex;
499        flex-direction: column;
500        justify-content: center;
501        align-items: center;
502        width: 100%;
503    }
504    [id^='section-banner'] .section-container {
505        height: 100% !important;
506        width: 100% !important;
507    }
508    .banner-video-wrapper {
509        position: relative;
510        width: 100%;
511        aspect-ratio: 16 / 9;
512    }
513    .banner-video-gradient {
514        position: absolute;
515        top: 0;
516        left: 0;
517        width: 100%;
518        height: 100%;
519        z-index: 1;
520        pointer-events: none;
521    }
522    video.banner-video {
523        width: 100%;
524        height: 100%;
525        object-fit: cover;
526        border: none;
527    }
528    iframe.banner-video {
529        width: 100%;
530        height: 100%;
531        border: none;
532    }
533
534    [data-gjs-type='grid-row'] * {
535        max-width: 100%;
536    }
537
538    [data-gjs-type='grid-column'] [data-gjs-type='text'] {
539        width: 100%;
540    }
541
542    [data-gjs-type='grid-row'] [data-gjs-type='grid-column'] {
543        width: 100%;
544        display: flex;
545        flex-direction: column;
546    }
547
548    /* Flex Columns */
549    [data-gjs-type='flex-columns'] {
550        display: flex;
551        width: 100%;
552    }
553    [data-gjs-type='flex-columns'] > [data-gjs-type='flex-column'] {
554        min-width: 0;
555        max-width: 100%;
556        display: flex;
557        flex-direction: column;
558    }
559    [data-gjs-type='flex-columns'] [data-gjs-type='flex-column'] [data-gjs-type='text'] {
560        width: 100%;
561    }
562
563    .wm-map iframe {
564        pointer-events: none;
565    }
566
567    /* Slider Section */
568    [id^='section-slider'] {
569        position: relative;
570    }
571    [id^='section-slider'] .slider-heading {
572        font-family: var(--decorative-font, 'sans-serif');
573        margin: 0 0 1.5rem;
574    }
575    [id^='section-slider'] .swiper {
576        width: 100%;
577        overflow: hidden;
578    }
579    [id^='section-slider'][data-nav-style='arrows-sides'] .swiper {
580        width: 85%;
581        margin: auto;
582    }
583    [id^='section-slider'] .swiper-wrapper {
584        display: flex;
585    }
586    [id^='section-slider'] .swiper-slide {
587        display: flex;
588        gap: 30px;
589        width: 100%;
590        min-height: 200px;
591        flex-shrink: 0;
592    }
593    [id^='section-slider'] .swiper-slide [data-gjs-type='grid-column'] {
594        flex: 1 1 0%;
595        min-width: 0;
596        display: flex;
597        flex-direction: column;
598    }
599
600    /* Slider Navigation — Arrow Icons */
601    [id^='section-slider'] .swiper-button-prev::after,
602    [id^='section-slider'] .swiper-button-next::after {
603        content: '';
604        display: block;
605        width: 8px;
606        height: 8px;
607        border-top: 2px solid var(--button-text-color, #fff);
608        border-right: 2px solid var(--button-text-color, #fff);
609    }
610    [id^='section-slider'] .swiper-button-next::after {
611        transform: rotate(45deg);
612        margin-left: -3px;
613    }
614    [id^='section-slider'] .swiper-button-prev::after {
615        transform: rotate(-135deg);
616        margin-right: -3px;
617    }
618
619    /* Slider Navigation — Arrows Top Right */
620    [id^='section-slider'][data-nav-style='arrows-top-right'] .swiper-button-prev,
621    [id^='section-slider'][data-nav-style='arrows-top-right'] .swiper-button-next {
622        position: absolute;
623        top: 0;
624        right: 16px;
625        left: auto;
626        width: 32px;
627        height: 32px;
628        border-radius: 50%;
629        background: var(--element-action-color, #333);
630        color: var(--button-text-color, #fff);
631        display: flex;
632        align-items: center;
633        justify-content: center;
634        cursor: pointer;
635        z-index: 10;
636    }
637    [id^='section-slider'][data-nav-style='arrows-top-right'] .swiper-button-prev {
638        right: 65px;
639    }
640    [id^='section-slider'][data-nav-style='arrows-top-right'] .swiper-pagination {
641        display: none;
642    }
643
644    /* Slider Navigation — Arrows Sides */
645    [id^='section-slider'][data-nav-style='arrows-sides'] .swiper-button-prev,
646    [id^='section-slider'][data-nav-style='arrows-sides'] .swiper-button-next {
647        position: absolute;
648        top: 50%;
649        transform: translateY(-50%);
650        width: 40px;
651        height: 40px;
652        border-radius: 50%;
653        background: var(--element-action-color, #333);
654        color: var(--button-text-color, #fff);
655        display: flex;
656        align-items: center;
657        justify-content: center;
658        cursor: pointer;
659        z-index: 10;
660    }
661    [id^='section-slider'][data-nav-style='arrows-sides'] .swiper-button-prev {
662        left: 10px;
663    }
664    [id^='section-slider'][data-nav-style='arrows-sides'] .swiper-button-next {
665        right: 10px;
666    }
667    [id^='section-slider'][data-nav-style='arrows-sides'] .swiper-pagination {
668        display: none;
669    }
670
671    /* Slider Navigation — Dots Bottom */
672    [id^='section-slider'][data-nav-style='dots-bottom'] .swiper-button-prev,
673    [id^='section-slider'][data-nav-style='dots-bottom'] .swiper-button-next {
674        display: none;
675    }
676    [id^='section-slider'][data-nav-style='dots-bottom'] .swiper-pagination {
677        text-align: center;
678        padding: 16px 0;
679    }
680    [id^='section-slider'][data-nav-style='dots-bottom'] .swiper-pagination-bullet {
681        display: inline-block;
682        width: 16px;
683        height: 16px;
684        border-radius: 50%;
685        background: #fff;
686        border: 1px solid #000;
687        margin: 0 6px;
688        cursor: pointer;
689    }
690    [id^='section-slider'][data-nav-style='dots-bottom'] .swiper-pagination-bullet-active {
691        background: #000;
692    }
693
694    .text-and-image-section [data-position='right'] {
695        order: 1 !important;
696    }
697    .text-and-image-section .right-text {
698        order: 0 !important;
699    }
700    .text-and-image-section.cover .wm-image-container {
701        width: 50%;
702    }
703    .wm-image-container {
704        position: relative;
705        width: max-content;
706        max-width: 100%;
707    }
708    .wm-image-container .image-overlay{
709        position: absolute;
710        top: 0;
711        left: 0;
712        z-index: 1;
713        width: 100%;
714        height: 100%;
715        background-color: #000;
716        opacity: 0.25;
717        pointer-events: none;
718        display: none;
719    }
720    .wm-image-container.has-overlay .image-overlay {
721        display: block;
722    }
723
724    section .section-container {
725        max-width: var(--site-max-width);
726        margin: 0 auto;
727        min-height: fit-content;
728        height: auto;
729        display: flex;
730        flex-direction: column;
731    }
732
733    [data-gjs-type='divider']::before {
734        content: '';
735        position: absolute;
736        left: 0;
737        right: 0;
738        top: 50%;
739        border-top: var(--divider-height, 1px) solid var(--divider-color, #000);
740        transform: translateY(-50%);
741    }
742
743    .nlp-llm-text-block h2,
744    .nlp-llm-text-block h3 {
745        font-family: var(--decorative-font, 'sans-serif');
746    }
747
748    /* Shop Address */
749    .wm-shop-address__grid {
750        display: grid;
751        align-content: start;
752    }
753    .wm-shop-address__grid--item a {
754        text-decoration: underline;
755        color: var(--body-text-color, '#333');
756        font-family: var(--primary-font);
757        font-size: 16px;
758        font-weight: var(--bn--font-medium);
759    }
760    .wm-shop-address__grid--item a:hover {
761        color: var(--body-text-color-active, '#000');
762    }
763    .wm-shop-address__grid--item svg path {
764        fill: var(--body-text-color, '#333');
765    }
766
767    /* Shop Hours */
768    .wm-shop-hours__title {
769        margin-top: 0;
770        font-family: var(--decorative-font, 'sans-serif');
771    }
772    .wm-shop-hours__grid {
773        display: grid;
774        grid-template-columns: max-content 1fr;
775        column-gap: 1.5rem;
776        row-gap: 0.75rem;
777        font-size: inherit;
778    }
779    .wm-shop-hours__grid--item {
780        font-weight: var(--bn--font-medium);
781    }
782    .wm-nlp-section .wm-shop-hours__grid {
783        font-size: 14px;
784        font-weight: 200;
785    }
786
787    /* Reviews section */
788    .wm-reviews {
789        [data-gjs-type='grid-column'] {
790            background-color: #fff;
791            border: 1px solid #E4E4E4;
792            padding: 1.2rem;
793            border-radius: 8px;
794            box-shadow: 0px 0px 20px 0px #4345511A;
795        }
796        [data-gjs-type='grid-column'] [data-gjs-type='text'] {
797            width: auto;
798        }
799        h2 {
800            margin: 0 0 2rem;
801            font-family: var(--decorative-font), sans-serif;
802        }
803        .wm-reviews__header {
804            display: grid;
805            grid-template-columns: max-content 1fr;
806            gap: 1rem;
807            align-items: center;
808            margin-bottom: .5rem;
809
810            h3 {
811                font-size: 14px;
812                font-family: var(--decorative-font), sans-serif;
813                font-weight:600 !important;
814                margin: 0;
815            }
816        }
817        .wm-reviews__rating {
818            margin-bottom: 0.5rem;
819        }
820        .wm-reviews__circle {
821            height: 40px;
822            width: 40px;
823            border-radius: 50%;
824            background-color: #FCE4EC;
825            display: flex;
826            align-items: center;
827            justify-content: center;
828        }
829        .wm-reviews__circle > span {
830            font-size: 14px;
831            font-weight:600 !important;
832            color: #880E4F;
833        }
834        .wm-reviews__date {
835            font-size: 12px;
836            color: #8B8C92;
837        }
838        .wm-reviews__content {
839            font-size: 14px;
840            line-height: 20px;
841            height: 80px;
842            overflow: auto;
843            font-weight: var(--bn--font-medium);
844        }
845        .wm-reviews__read-more {
846            background-color: transparent;
847            border: 0;
848            color: #1251CA;
849            transition: all 0.3s ease;
850            font-size: 12px;
851            padding: 0;
852            margin-top: .5rem;
853        }
854        .wm-reviews__read-more:hover {
855            text-decoration: underline;
856            filter: brightness(0.9);
857        }
858        .wm-reviews__dialog {
859            max-width: 600px;
860            width: 100%;
861            border: 0;
862            border-radius: 4px;
863            position: relative;
864
865            article {
866                margin-bottom: 0;
867                border-bottom: 0;
868                padding-bottom: 0;
869            }
870
871            .wm-reviews__dialog--close {
872                position: absolute;
873                top: 15px;
874                right: 15px;
875                background-color: transparent;
876                border: 0;
877                cursor: pointer;
878            }
879        }
880    }
881
882    /* Review photos strip (BLOOM-17499); the overlay is .wm-review-photos-overlay below. */
883    .wm-reviews .wm-reviews__photos {
884        display: flex;
885        flex-wrap: wrap;
886        gap: 8px;
887        list-style: none;
888        margin: 12px 0 0;
889        padding: 0;
890    }
891    .wm-reviews .wm-reviews__photo-item {
892        margin: 0;
893        padding: 0;
894    }
895    .wm-reviews .wm-reviews__photo {
896        display: block;
897        width: 96px;
898        height: 96px;
899        padding: 0;
900        border: 0;
901        border-radius: 4px;
902        overflow: hidden;
903        background: #eee;
904        cursor: zoom-in;
905        line-height: 0;
906    }
907    .wm-reviews .wm-reviews__photo img {
908        display: block;
909        width: 100%;
910        height: 100%;
911        object-fit: cover;
912    }
913    .wm-reviews .wm-reviews__photo:focus-visible {
914        outline: 2px solid currentColor;
915        outline-offset: 2px;
916    }
917
918    /* Product List Section */
919    .product-list--horizontal {
920        overflow-x: auto;
921        white-space: nowrap;
922        padding: 0 0 10px 15px;
923    }
924
925    .product-list--horizontal .product-list__item {
926        display: inline-block;
927        width: 252px;
928        margin-right: 15px;
929    }
930
931    /* Atomic CSS Helpers */
932    .text-uppercase {
933        text-transform: uppercase;
934    }
935
936    /* Custom arrangements & subscriptions */
937    .custom-page-nlp__customArrangements .text-image-text > div,
938    .custom-page-nlp__subscriptions .text-image-text > div {
939        font-size: 18px;
940    }
941
942    /* Blog posts */
943    .wm-blog-posts {
944        display: grid;
945        grid-template-columns: repeat(var(--columns, 2), 1fr);
946        column-gap: var(--column-gap);
947        row-gap: var(--row-gap);
948        padding: var(--frame);
949    }
950    .wm-blog-posts:not(.side-image) .wm-blog-posts__item {
951        display: flex;
952        flex-direction: column;
953    }
954    .wm-blog-posts:not(.side-image) .wm-blog-posts__content {
955        flex-grow: 1;
956        align-items: start;
957    }
958    .wm-blog-posts:not(.side-image) .wm-blog-posts__image {
959        border: 1px solid #DDD;
960        border-bottom: none;
961    }
962    .wm-blog-posts.side-image .wm-blog-posts__image {
963        border: 1px solid #DDD;
964        border-right: none;
965        height: 100%;
966    }
967    .wm-blog-posts.side-image .wm-blog-posts__image-link {
968        width: 100%;
969        height: 100%;
970    }
971    .wm-blog-posts .wm-blog-posts__item {
972        display: flex;
973        flex-direction: column;
974    }
975    .wm-blog-posts__heading {
976        grid-column: 1 / -1;
977        font-family: var(--decorative-font, 'sans-serif');
978        font-size: 3rem;
979        font-weight: 700;
980        line-height: 1.3;
981    }
982    .wm-blog-posts img {
983        height: 300px;
984        object-fit: cover;
985        width: 100%;
986    }
987    .wm-blog-posts .wm-blog-posts__content {
988        background: #F4F4F4;
989        padding: 2rem;
990        height: auto;
991        display: flex;
992        flex-direction: column;
993        justify-content: center;
994    }
995    .wm-blog-posts.two-column .wm-blog-posts__content {
996        align-items: center;
997    }
998    .wm-blog-posts.two-column {
999        align-items: center;
1000    }
1001    .wm-blog-posts.list .wm-blog-posts__content {
1002        background-color: transparent;
1003    }
1004    .wm-blog-posts.side-image .wm-blog-posts__content,
1005    .wm-blog-posts.list .wm-blog-posts__content,
1006    .wm-blog-posts.two-column .wm-blog-posts__content {
1007        height: 100%;
1008    }
1009    .wm-blog-posts.side-image img {
1010        height: 250px;
1011    }
1012    .wm-blog-posts.side-image .wm-blog-posts__item {
1013        display: grid;
1014        align-items: center;
1015    }
1016    .wm-blog-posts.side-image[style*="--columns:1"] .wm-blog-posts__item,
1017    .wm-blog-posts.side-image[style*="--columns: 1"] .wm-blog-posts__item {
1018        grid-template-columns: 1fr;
1019    }
1020    .wm-blog-posts.side-image[style*="--columns:2"] .wm-blog-posts__item,
1021    .wm-blog-posts.side-image[style*="--columns: 2"] .wm-blog-posts__item {
1022        grid-template-columns: 45% 55%;
1023    }
1024    .wm-blog-posts__date {
1025        color: #282A35;
1026        display: block;
1027        margin-bottom: 1rem;
1028    }
1029    .wm-blog-posts__title {
1030        color: #282A35;
1031        font-family: var(--decorative-font, 'sans-serif');
1032        font-size: 2.25rem;
1033        font-weight: 700;
1034        line-height: 1.3;
1035        margin-bottom: 1rem;
1036    }
1037    .wm-blog-posts__excerpt {
1038        margin-bottom: 1.75rem;
1039    }
1040    .wm-blog-posts__read-more {
1041        margin-top: auto;
1042        text-decoration: underline;
1043    }
1044
1045    /* Recent Deliveries */
1046    * + .recent-deliveries {
1047        margin-top: 4rem;
1048    }
1049    .recent-deliveries:not(:last-child) {
1050        margin-bottom: 4rem;
1051    }
1052    .recent-deliveries__feed {
1053        list-style: none;
1054        margin: 0 auto;
1055        padding: 0;
1056        max-width: 640px;
1057        display: flex;
1058        flex-direction: column;
1059        gap: 3.2rem;
1060    }
1061    .recent-deliveries__entry {
1062        background: var(--body-bg, #fff);
1063        border: 1px solid var(--divider-color, #e5e7eb);
1064        border-radius: 1.6rem;
1065        padding: 3.2rem 4rem;
1066        color: var(--body-text-color);
1067    }
1068    .recent-deliveries__shop {
1069        display: flex;
1070        align-items: center;
1071        gap: 1.4rem;
1072        margin-bottom: 2.8rem;
1073    }
1074    .recent-deliveries__avatar {
1075        width: 44px;
1076        height: 44px;
1077        border-radius: 50%;
1078        object-fit: cover;
1079        flex: 0 0 auto;
1080    }
1081    .recent-deliveries__avatar--initials {
1082        display: flex;
1083        align-items: center;
1084        justify-content: center;
1085        color: #fff;
1086        font-size: 1.5rem;
1087        font-weight: 600;
1088        letter-spacing: 0.05rem;
1089        text-transform: uppercase;
1090        user-select: none;
1091    }
1092    .recent-deliveries__shop-info {
1093        min-width: 0;
1094    }
1095    .recent-deliveries__shop-name {
1096        font-size: 1.7rem;
1097        font-weight: 600;
1098        margin: 0;
1099        color: var(--body-text-color);
1100    }
1101    .recent-deliveries__shop-location {
1102        font-size: 1.3rem;
1103        margin: 0.2rem 0 0;
1104        color: var(--body-text-color);
1105        opacity: 0.7;
1106    }
1107    .recent-deliveries__image-wrapper {
1108        display: flex;
1109        justify-content: center;
1110        margin-bottom: 2.8rem;
1111    }
1112    .recent-deliveries__image {
1113        width: 65%;
1114        height: auto;
1115        aspect-ratio: 1 / 1;
1116        object-fit: cover;
1117        border-radius: 6px;
1118        display: block;
1119    }
1120    .recent-deliveries__caption {
1121        margin-bottom: 2.4rem;
1122    }
1123    .recent-deliveries__caption-text {
1124        font-size: 1.5rem;
1125        line-height: 1.6;
1126        margin: 0;
1127        color: var(--body-text-color);
1128    }
1129    .recent-deliveries__date {
1130        display: block;
1131        margin-top: 1.4rem;
1132        font-size: 1.1rem;
1133        text-transform: uppercase;
1134        letter-spacing: 0.2rem;
1135        color: var(--body-text-color);
1136        opacity: 0.6;
1137        white-space: nowrap;
1138    }
1139    .recent-deliveries__product {
1140        border-top: 1px solid var(--divider-color, #e5e7eb);
1141        padding-top: 2rem;
1142        display: flex;
1143        align-items: flex-start;
1144        justify-content: space-between;
1145        gap: 1.6rem;
1146    }
1147    .recent-deliveries__product-info {
1148        min-width: 0;
1149    }
1150    .recent-deliveries__product-name {
1151        font-size: 1.6rem;
1152        font-weight: 500;
1153    }
1154    a.recent-deliveries__product-name {
1155        color: var(--text-action-color);
1156        text-decoration: none;
1157        border-bottom: 1px solid currentColor;
1158    }
1159    a.recent-deliveries__product-name:hover {
1160        color: var(--text-action-color-active);
1161        text-decoration: none;
1162    }
1163    span.recent-deliveries__product-name {
1164        color: var(--body-text-color);
1165    }
1166    .recent-deliveries__upgrade {
1167        font-size: 1.2rem;
1168        text-transform: uppercase;
1169        letter-spacing: 0.15rem;
1170        margin: 0.6rem 0 0;
1171        color: var(--body-text-color);
1172        opacity: 0.6;
1173    }
1174    .recent-deliveries__occasion {
1175        display: block;
1176        margin-top: .75rem;
1177        font-size: 1rem;
1178        text-transform: uppercase;
1179        letter-spacing: 0.2rem !important;
1180        color: var(--body-text-color);
1181        white-space: nowrap;
1182    }
1183    /* FAQ */
1184    [data-gjs-type] .store-faq__faq {
1185        margin: 0;
1186    }
1187    .store-faq__faq-items {
1188        display: grid;
1189        gap: 8px;
1190    }
1191    .faq {
1192        border: 1px solid #e2e2e2;
1193        border-radius: 8px;
1194        background: #FAFAFA;
1195        overflow: hidden;
1196        padding: 20px;
1197    }
1198    .faq__q {
1199        display: block;
1200        margin: 0;
1201        padding-right: 24px;
1202        cursor: pointer;
1203        font-size: 16px;
1204        font-weight: 600;
1205        position: relative;
1206        outline: none;
1207        user-select: none;
1208        list-style: none;
1209    }
1210    .faq__q::-webkit-details-marker {
1211        display: none;
1212    }
1213    .faq__q::marker {
1214        content: none;
1215    }
1216    .faq__q::after {
1217        content: "";
1218        position: absolute;
1219        right: 0;
1220        top: 50%;
1221        width: 10px;
1222        height: 10px;
1223        border-right: 2px solid #495057;
1224        border-bottom: 2px solid #495057;
1225        transform: translateY(-50%) rotate(-45deg);
1226        transition: transform 200ms ease;
1227    }
1228    .faq[open] .faq__q::after {
1229        transform: translateY(-50%) rotate(45deg);
1230    }
1231    .faq__content {
1232        display: grid;
1233        grid-template-rows: 0fr;
1234        transition: grid-template-rows 200ms ease;
1235    }
1236    .faq[open] .faq__content {
1237        grid-template-rows: 1fr;
1238    }
1239    .faq__a {
1240        margin-top: 20px;
1241        overflow: hidden;
1242    }
1243    .faq__a-inner {
1244        color: #333;
1245        line-height: 1.5;
1246        font-weight: 300;
1247        font-size: 16px;
1248    }
1249
1250    /* Gallery */
1251    .wm-gallery {
1252        padding: var(--frame, 0);
1253    }
1254    .wm-gallery__description {
1255        margin-bottom: 1.5rem;
1256        color: var(--body-text-color, #333);
1257    }
1258    .wm-gallery__grid {
1259        display: grid;
1260        grid-template-columns: repeat(var(--columns, 2), 1fr);
1261        column-gap: var(--column-gap, 16px);
1262        row-gap: var(--row-gap, 16px);
1263    }
1264    .wm-gallery__item {
1265        display: block;
1266        overflow: hidden;
1267        cursor: pointer;
1268    }
1269    .wm-gallery__item--linked {
1270        cursor: pointer;
1271    }
1272    .wm-gallery__image {
1273        width: 100%;
1274        height: auto;
1275        object-fit: cover;
1276        aspect-ratio: var(--aspect-ratio, 4/3);
1277        border-radius: var(--border-radius, 0);
1278        transition: transform 0.3s ease;
1279    }
1280    .wm-gallery__item:hover .wm-gallery__image {
1281        transform: scale(1.02);
1282    }
1283    .wm-gallery__caption {
1284        padding: 0.5rem 0;
1285        display: flex;
1286        flex-direction: column;
1287        gap: 0.25rem;
1288    }
1289    .wm-gallery__image-title {
1290        font-weight: bold !important;
1291        font-size: 16px;
1292        margin-top: 4px;
1293    }
1294
1295    /* Gallery - Masonry layout */
1296    .wm-gallery--masonry .wm-gallery__grid {
1297        display: block;
1298        column-count: var(--columns, 2);
1299        column-gap: var(--column-gap, 16px);
1300    }
1301    .wm-gallery--masonry .wm-gallery__item {
1302        break-inside: avoid;
1303        margin-bottom: var(--row-gap, 16px);
1304    }
1305    .wm-gallery--masonry .wm-gallery__image {
1306        aspect-ratio: unset;
1307        height: auto;
1308        object-fit: contain;
1309    }
1310
1311    .wm-gallery--masonry .wm-gallery__grid--fill-row {
1312        display: grid;
1313        grid-template-columns: repeat(var(--columns, 2), 1fr);
1314        column-gap: var(--column-gap, 16px);
1315        row-gap: var(--row-gap, 16px);
1316        align-items: start;
1317    }
1318    .wm-gallery--masonry .wm-gallery__grid--fill-row .wm-gallery__item {
1319        margin-bottom: 0;
1320    }
1321    .wm-gallery--masonry .wm-gallery__grid--fill-row.is-masonry-js {
1322        grid-auto-rows: 1px;
1323        row-gap: 0;
1324    }
1325
1326    .wm-gallery.wm-gallery--carousel {
1327        max-width: 800px;
1328        margin: 0 auto;
1329    }
1330
1331    /* Gallery - Carousel (Swiper core styles) */
1332    .swiper {
1333        margin-left: auto;
1334        margin-right: auto;
1335        position: relative;
1336        overflow: hidden;
1337        list-style: none;
1338        padding: 0;
1339        z-index: 1;
1340        display: block;
1341    }
1342    .swiper-wrapper {
1343        position: relative;
1344        width: 100%;
1345        height: 100%;
1346        z-index: 1;
1347        display: flex;
1348        transition-property: transform;
1349        transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);
1350        box-sizing: content-box;
1351    }
1352    .swiper-slide {
1353        flex-shrink: 0;
1354        width: 100%;
1355        height: 100%;
1356        position: relative;
1357        transition-property: transform;
1358    }
1359    .swiper-slide-invisible-blank {
1360        visibility: hidden;
1361    }
1362    /* Hide default Swiper navigation buttons */
1363    .swiper-button-prev,
1364    .swiper-button-next {
1365        display: none;
1366    }
1367
1368    /* Gallery Carousel component */
1369    .wm-gallery-carousel {
1370        position: relative;
1371        width: 100%;
1372    }
1373    .wm-gallery-carousel__main {
1374        position: relative;
1375        display: flex;
1376        align-items: center;
1377        gap: 16px;
1378    }
1379    .wm-gallery-carousel__swiper {
1380        width: 100%;
1381        overflow: hidden;
1382    }
1383    .wm-gallery-carousel__link {
1384        display: block;
1385        width: 100%;
1386    }
1387    .wm-gallery-carousel__link--active {
1388        cursor: pointer;
1389    }
1390    .wm-gallery-carousel__link:not(.wm-gallery-carousel__link--active) {
1391        pointer-events: none;
1392    }
1393    .wm-gallery-carousel__image {
1394        width: 100%;
1395        height: auto;
1396        object-fit: cover;
1397        display: block;
1398    }
1399    /* Carousel navigation buttons */
1400    .wm-gallery-carousel__nav {
1401        flex-shrink: 0;
1402        width: 40px;
1403        height: 40px;
1404        display: flex;
1405        align-items: center;
1406        justify-content: center;
1407        background: white;
1408        border: 1px solid #e0e0e0;
1409        border-radius: 50%;
1410        cursor: pointer;
1411        transition: background-color 0.2s, border-color 0.2s;
1412        z-index: 10;
1413    }
1414    .wm-gallery-carousel__nav:hover {
1415        background-color: #f5f5f5;
1416        border-color: #ccc;
1417    }
1418    .wm-gallery-carousel__nav:disabled {
1419        opacity: 0.5;
1420        cursor: not-allowed;
1421    }
1422    /* Overlay navigation (for full-width carousel) */
1423    .wm-gallery-carousel__nav--overlay {
1424        position: absolute;
1425        top: 50%;
1426        transform: translateY(-50%);
1427        background: rgba(255, 255, 255, 0.9);
1428    }
1429    .wm-gallery-carousel__nav--overlay.wm-gallery-carousel__nav--prev {
1430        left: 16px;
1431    }
1432    .wm-gallery-carousel__nav--overlay.wm-gallery-carousel__nav--next {
1433        right: 16px;
1434    }
1435    /* Thumbnails layout - arrows outside */
1436    .wm-gallery-carousel--carousel-thumbnails .wm-gallery-carousel__main {
1437        display: flex;
1438        align-items: center;
1439    }
1440    .wm-gallery-carousel--carousel-thumbnails .wm-gallery-carousel__swiper {
1441        flex: 1;
1442        min-width: 0;
1443    }
1444    .wm-gallery-carousel--carousel-thumbnails .wm-gallery-carousel__nav {
1445        position: relative;
1446    }
1447    /* Full-width layout - arrows on image */
1448    .wm-gallery-carousel--carousel .wm-gallery-carousel__main {
1449        position: relative;
1450    }
1451    .wm-gallery-carousel--carousel .wm-gallery-carousel__swiper {
1452        width: 100%;
1453    }
1454    /* Thumbnails */
1455    .wm-gallery-carousel__thumbs {
1456        margin-top: 16px;
1457        overflow: hidden;
1458        display: flex;
1459        justify-content: center;
1460    }
1461    .wm-gallery-carousel__thumbs .swiper-wrapper {
1462        justify-content: center;
1463        gap: 0.75rem;
1464        overflow: auto;
1465    }
1466    .wm-gallery-carousel__thumbs .swiper-slide {
1467        opacity: 0.6;
1468        cursor: pointer;
1469        transition: opacity 0.2s;
1470        width: 80px !important;
1471        height: 80px;
1472        flex-shrink: 0;
1473
1474    }
1475    .wm-gallery-carousel__thumbs .swiper-slide-thumb-active {
1476        opacity: 1;
1477    }
1478    .wm-gallery-carousel__thumb-image {
1479        width: 80px;
1480        height: 80px;
1481        object-fit: cover;
1482        display: block;
1483    }
1484
1485    /* Gallery Lightbox (wm-gallery-lightbox CSR element) */
1486    .wm-glb {
1487        position: fixed;
1488        inset: 0;
1489        z-index: 99999;
1490        background: rgba(0, 0, 0, 0.92);
1491        display: flex;
1492        align-items: center;
1493        justify-content: center;
1494    }
1495    .wm-glb__swiper {
1496        width: 100%;
1497        height: 100%;
1498    }
1499    .wm-glb__slide {
1500        display: flex;
1501        align-items: center;
1502        justify-content: center;
1503        width: 100%;
1504        height: 100%;
1505        box-sizing: border-box;
1506        padding: 72px 88px 112px;
1507    }
1508    .wm-glb__slide .swiper-zoom-container {
1509        width: 100%;
1510        height: 100%;
1511    }
1512    .wm-glb__image {
1513        max-width: 100%;
1514        max-height: 100%;
1515        width: auto;
1516        height: auto;
1517        object-fit: contain;
1518        margin: auto;
1519        display: block;
1520    }
1521    .wm-glb__close {
1522        position: absolute;
1523        top: 16px;
1524        right: 20px;
1525        z-index: 2;
1526        background: transparent;
1527        border: none;
1528        padding: 8px;
1529        color: #fff;
1530        cursor: pointer;
1531        line-height: 0;
1532    }
1533    .wm-glb__nav {
1534        position: absolute;
1535        top: 50%;
1536        transform: translateY(-50%);
1537        z-index: 2;
1538        background: transparent;
1539        border: none;
1540        padding: 12px;
1541        color: #fff;
1542        cursor: pointer;
1543        line-height: 0;
1544        opacity: 0.85;
1545        transition: opacity 0.2s ease;
1546    }
1547    .wm-glb__nav:hover,
1548    .wm-glb__nav:focus-visible,
1549    .wm-glb__close:hover,
1550    .wm-glb__close:focus-visible {
1551        opacity: 1;
1552    }
1553    .wm-glb__nav:focus-visible,
1554    .wm-glb__close:focus-visible,
1555    .wm-glb__view:focus-visible {
1556        outline: 2px solid #fff;
1557        outline-offset: 2px;
1558    }
1559    .wm-glb__nav--prev {
1560        left: 12px;
1561    }
1562    .wm-glb__nav--next {
1563        right: 12px;
1564    }
1565    .wm-glb__caption {
1566        position: absolute;
1567        bottom: 24px;
1568        left: 50%;
1569        transform: translateX(-50%);
1570        z-index: 2;
1571        max-width: 80vw;
1572        text-align: center;
1573        color: #fff;
1574        display: flex;
1575        flex-direction: column;
1576        gap: 6px;
1577    }
1578    .wm-glb__title {
1579        position: absolute;
1580        top: 18px;
1581        left: 50%;
1582        transform: translateX(-50%);
1583        z-index: 2;
1584        max-width: 60vw;
1585        text-align: center;
1586        color: #fff;
1587        font-weight: bold;
1588        font-size: 20px;
1589    }
1590    .wm-glb__description {
1591        font-size: 16px;
1592        opacity: 0.85;
1593    }
1594    .wm-glb__view {
1595        align-self: center;
1596        margin-top: 6px;
1597        padding: 6px 18px;
1598        border: 1px solid #fff;
1599        border-radius: 4px;
1600        background: #fff;
1601        color: #000 !important;
1602        text-decoration: none;
1603        font-size: 14px;
1604    }
1605    .wm-glb__view:hover {
1606        opacity: 0.85;
1607    }
1608    .wm-glb__counter {
1609        position: absolute;
1610        top: 20px;
1611        left: 24px;
1612        z-index: 2;
1613        color: #fff;
1614        font-size: 14px;
1615        opacity: 0.85;
1616    }
1617    @media (max-width: 600px) {
1618        .wm-glb__slide {
1619            padding: 64px 56px 104px;
1620        }
1621        .wm-glb__nav {
1622            padding: 6px;
1623        }
1624    }
1625
1626    /* Review photos overlay (wm-review-photos-overlay CSR element, BLOOM-17499): a native <dialog>
1627       appended to <body>, so nothing here nests under .wm-reviews. */
1628    .wm-review-photos-overlay {
1629        position: fixed;
1630        inset: 0;
1631        width: 100%;
1632        max-width: none;
1633        height: 100%;
1634        max-height: none;
1635        margin: 0;
1636        padding: 0;
1637        border: 0;
1638        background: transparent;
1639        color: #fff;
1640        overflow: hidden;
1641    }
1642    .wm-review-photos-overlay::backdrop {
1643        background: rgba(0, 0, 0, 0.88);
1644    }
1645    .wm-review-photos-overlay__stage {
1646        position: absolute;
1647        inset: 0;
1648        display: flex;
1649        align-items: center;
1650        justify-content: center;
1651        padding: 56px 64px;
1652        box-sizing: border-box;
1653        touch-action: pan-y;
1654    }
1655    .wm-review-photos-overlay__image {
1656        display: block;
1657        max-width: 100%;
1658        max-height: 100%;
1659        width: auto;
1660        height: auto;
1661        object-fit: contain;
1662        border-radius: 4px;
1663        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
1664    }
1665    .wm-review-photos-overlay__button {
1666        position: absolute;
1667        display: flex;
1668        align-items: center;
1669        justify-content: center;
1670        width: 44px;
1671        height: 44px;
1672        padding: 0;
1673        border: 0;
1674        border-radius: 50%;
1675        background: rgba(255, 255, 255, 0.14);
1676        color: #fff;
1677        cursor: pointer;
1678        line-height: 0;
1679    }
1680    .wm-review-photos-overlay__button:hover,
1681    .wm-review-photos-overlay__button:focus-visible {
1682        background: rgba(255, 255, 255, 0.3);
1683        outline: 2px solid #fff;
1684        outline-offset: 2px;
1685    }
1686    .wm-review-photos-overlay__button svg {
1687        width: 22px;
1688        height: 22px;
1689        fill: none;
1690        stroke: currentColor;
1691        stroke-width: 2;
1692        stroke-linecap: round;
1693        stroke-linejoin: round;
1694    }
1695    .wm-review-photos-overlay__close {
1696        top: 12px;
1697        right: 12px;
1698    }
1699    .wm-review-photos-overlay__prev,
1700    .wm-review-photos-overlay__next {
1701        top: 50%;
1702        transform: translateY(-50%);
1703    }
1704    .wm-review-photos-overlay__prev {
1705        left: 12px;
1706    }
1707    .wm-review-photos-overlay__next {
1708        right: 12px;
1709    }
1710    .wm-review-photos-overlay__counter {
1711        position: absolute;
1712        left: 0;
1713        right: 0;
1714        bottom: 16px;
1715        margin: 0;
1716        font-size: 14px;
1717        line-height: 20px;
1718        text-align: center;
1719        color: rgba(255, 255, 255, 0.85);
1720    }
1721    .wm-review-photos-overlay[data-single] .wm-review-photos-overlay__prev,
1722    .wm-review-photos-overlay[data-single] .wm-review-photos-overlay__next,
1723    .wm-review-photos-overlay[data-single] .wm-review-photos-overlay__counter {
1724        display: none;
1725    }
1726    body.wm-review-photos-open {
1727        overflow: hidden;
1728    }
1729    @media (max-width: 767px) {
1730        .wm-review-photos-overlay__stage {
1731            padding: 56px 12px;
1732        }
1733        .wm-review-photos-overlay__prev,
1734        .wm-review-photos-overlay__next {
1735            top: auto;
1736            bottom: 44px;
1737            transform: none;
1738        }
1739    }
1740
1741    /* Gallery List — shared */
1742    .wm-gallery-list__image {
1743        width: 100%;
1744        aspect-ratio: 4/3;
1745        object-fit: cover;
1746        border-radius: var(--border-radius, 0);
1747    }
1748    .wm-gallery-list__title {
1749        font-family: var(--decorative-font, 'sans-serif');
1750        font-size: 20px;
1751        font-weight: 600;
1752        color: inherit;
1753        text-decoration: none;
1754    }
1755    .wm-gallery-list__title:hover {
1756        text-decoration: underline;
1757    }
1758    .wm-gallery-list__description {
1759        color: var(--body-text-color, #333);
1760        margin-top: 0.5rem;
1761    }
1762    .wm-gallery-list__image-link {
1763        display: block;
1764        overflow: hidden;
1765        border-radius: var(--border-radius, 0);
1766    }
1767
1768    /* Gallery List — columns variant */
1769    .wm-gallery-list--columns {
1770        display: grid;
1771        grid-template-columns: repeat(var(--columns, 3), 1fr);
1772        gap: 24px;
1773    }
1774    .wm-gallery-list--columns .wm-gallery-list__item {
1775        display: flex;
1776        flex-direction: column;
1777    }
1778    .wm-gallery-list--columns .wm-gallery-list__content {
1779        text-align: center;
1780    }
1781    .wm-gallery-list--columns .wm-gallery-list__title {
1782        display: block;
1783        margin-top: 0.75rem;
1784    }
1785
1786    /* Gallery List — textAndImageVertical variant */
1787    .wm-gallery-list--textAndImageVertical {
1788        display: flex;
1789        flex-direction: column;
1790        gap: 24px;
1791    }
1792    .wm-gallery-list--textAndImageVertical .wm-gallery-list__item {
1793        display: grid;
1794        grid-template-columns: 1fr 1fr;
1795        gap: 24px;
1796        align-items: center;
1797    }
1798
1799    /* Gallery List — textAndImageHorizontal variant */
1800    .wm-gallery-list--textAndImageHorizontal {
1801        display: flex;
1802        flex-direction: column;
1803    }
1804    .wm-gallery-list--textAndImageHorizontal .wm-gallery-list__item {
1805        display: grid;
1806        grid-template-columns: 1fr 1fr;
1807        align-items: center;
1808    }
1809    .wm-gallery-list--textAndImageHorizontal .wm-gallery-list__item .wm-gallery-list__content {
1810        padding: 8%;
1811    }
1812    .wm-gallery-list--textAndImageHorizontal .wm-gallery-list__item--reversed {
1813        direction: rtl;
1814    }
1815    .wm-gallery-list--textAndImageHorizontal .wm-gallery-list__item--reversed > * {
1816        direction: ltr;
1817    }
1818
1819    /* Gallery List — noImages variant */
1820    .wm-gallery-list--noImages {
1821        display: flex;
1822        flex-direction: column;
1823        gap: 12px;
1824    }
1825    .wm-gallery-list--noImages .wm-gallery-list__item {
1826        text-align: center;
1827    }
1828
1829    /* Mobile */
1830    @media (max-width: 800px) {
1831        [id^='custom-page-main-content'] [data-mobile-font-size='true'] {
1832            font-size: var(--mobile-font-size, 16px) !important;
1833        }
1834
1835        [data-gjs-type='grid-row']:not([data-nostack='true']) {
1836            grid-template-columns: 1fr !important;
1837        }
1838
1839        .wwd-service-areas__grid {
1840            grid-template-columns: 1fr !important;
1841        }
1842
1843        [data-gjs-type='flex-columns']:not([data-nostack='true']) {
1844            flex-wrap: wrap !important;
1845            overflow-x: visible !important;
1846        }
1847        [data-gjs-type='flex-columns']:not([data-nostack='true']) > [data-gjs-type='flex-column'] {
1848            flex: 1 1 100% !important;
1849        }
1850
1851        [id^='section-slider'] .swiper-slide {
1852            flex-direction: column;
1853        }
1854        [id^='section-slider'] .swiper-slide [data-gjs-type='grid-column'] {
1855            flex: 1 1 100% !important;
1856        }
1857        [id^='section-slider'][data-nav-style='arrows-sides'] .swiper {
1858            width: 100%;
1859        }
1860        [id^='section-slider'][data-nav-style='arrows-sides'] .swiper-button-prev,
1861        [id^='section-slider'][data-nav-style='arrows-top-right'] .swiper-button-prev {
1862            top: unset;
1863            right: auto;
1864            transform: translateX(-50%);
1865            bottom: 0;
1866            left: 45%;
1867        }
1868        [id^='section-slider'][data-nav-style='arrows-sides'] .swiper-button-next,
1869        [id^='section-slider'][data-nav-style='arrows-top-right'] .swiper-button-next {
1870            top: unset;
1871            left: auto;
1872            transform: translateX(50%);
1873            bottom: 0;
1874            right: 45%;
1875        }
1876
1877        section .section-container {
1878            width: 100% !important;
1879        }
1880
1881        .people-image-wrapper,
1882        .services-image-wrapper {
1883            height: auto !important;
1884        }
1885
1886        .banner-container {
1887            min-height: fit-content !important;
1888            padding: 2.5rem 0;
1889        }
1890        [id^='section-banner'][data-bg-type='video'] .banner-container {
1891            padding: 0;
1892        }
1893        [id^='section-banner'][data-bg-type='video'] .banner-container .section-container {
1894            padding: 6% !important;
1895        }
1896
1897        .text-and-image-section .text-and-image-container {
1898            flex-direction: column !important;
1899            padding: 0 !important;
1900        }
1901
1902        .text-and-image-section .text-image-text {
1903            width: 100% !important;
1904        }
1905
1906        .text-and-image-section.cover .text-image-text {
1907            padding: 3rem 15px !important;
1908        }
1909
1910        .text-and-image-section.cover.img-top .text-image-text {
1911            padding: 1rem 15px 3rem !important;
1912        }
1913
1914        .text-and-image-section .text-image-img,
1915        .text-and-image-section .text-image-text {
1916            padding: 0 !important;
1917        }
1918
1919        .text-and-image-section .text-image-img {
1920            width: auto !important;
1921        }
1922        .text-and-image-section.cover .text-image-img,
1923        .text-and-image-section.cover .wm-image-container {
1924            width: 100% !important;
1925        }
1926
1927        .text-and-image-section [data-position='right'] {
1928            order: 0 !important;
1929        }
1930        .text-and-image-section .right-text {
1931            order: 1 !important;
1932        }
1933        .text-and-image-section [data-position='left'] img {
1934            margin-right: auto !important;
1935            margin-left: 0 !important;
1936        }
1937        .text-and-image-section img {
1938            width: 100% !important;
1939        }
1940        .wm-map-container {
1941            float: none !important;
1942            width: auto !important;
1943            max-width: 100% !important;
1944        }
1945        .wm-link, .wm-link-button {
1946            display: flex;
1947            align-items: center;
1948            justify-content: center;
1949            max-width: max-content;
1950        }
1951
1952        .wm-link-button {
1953            height: 44px;
1954        }
1955        .wm-blog-posts {
1956            grid-template-columns: 1fr;
1957        }
1958        .wm-blog-posts.side-image {
1959            grid-template-columns: 1fr;
1960        }
1961        /* Side-image layout should look like grid layout on mobile */
1962        .wm-blog-posts.side-image .wm-blog-posts__item {
1963            display: flex;
1964            flex-direction: column;
1965            grid-template-columns: 1fr;
1966        }
1967        .wm-blog-posts.side-image .wm-blog-posts__image,
1968        .wm-blog-posts.side-image .wm-blog-posts__content {
1969            width: 100%;
1970        }
1971        .wm-blog-posts.side-image .wm-blog-posts__image {
1972            border: 1px solid #DDD;
1973            border-bottom: none;
1974        }
1975        .wm-blog-posts.side-image .wm-blog-posts__content {
1976            flex-grow: 1;
1977            align-items: start;
1978            height: auto;
1979        }
1980        .wm-blog-posts.side-image img {
1981            height: 300px;
1982        }
1983
1984        /* Recent Deliveries mobile */
1985        .recent-deliveries__entry {
1986            padding: 2.4rem 2rem;
1987        }
1988        .recent-deliveries__image {
1989            width: 100%;
1990        }
1991
1992        /* Gallery mobile */
1993        .wm-gallery__grid,
1994        .wm-gallery-list--columns {
1995            grid-template-columns: 1fr;
1996        }
1997        .wm-gallery-list--textAndImageVertical .wm-gallery-list__item,
1998        .wm-gallery-list--textAndImageHorizontal .wm-gallery-list__item {
1999            grid-template-columns: 1fr;
2000        }
2001        .wm-gallery-list--textAndImageHorizontal .wm-gallery-list__item--reversed {
2002            direction: ltr;
2003        }
2004        .wm-gallery--masonry .wm-gallery__grid {
2005            column-count: 1;
2006        }
2007        /* Row-fill masonry collapses to a single grid column on mobile. Because it
2008           is always a grid (never column-count), the flat DOM keeps the 1, 2, 3…
2009           reading order regardless of whether the JS staggering has run. */
2010        .wm-gallery--masonry .wm-gallery__grid--fill-row {
2011            grid-template-columns: 1fr;
2012        }
2013        .wm-gallery-list--textAndImageHorizontal {
2014            gap: 24px;
2015        }
2016        .wm-gallery-list--textAndImageHorizontal .wm-gallery-list__item .wm-gallery-list__content {
2017            padding: 0;
2018            margin-top: 0.75rem;
2019        }
2020    }
2021
2022    @media (max-width: 480px) {
2023        [id^='section-slider'][data-nav-style='arrows-sides'] .swiper-button-prev,
2024        [id^='section-slider'][data-nav-style='arrows-top-right'] .swiper-button-prev {
2025            left: 41%;
2026            bottom: -25px;
2027        }
2028        [id^='section-slider'][data-nav-style='arrows-sides'] .swiper-button-next,
2029        [id^='section-slider'][data-nav-style='arrows-top-right'] .swiper-button-next {
2030            right: 41%;
2031            bottom: -25px;
2032        }
2033    }
2034
2035    /* Appointment Widget (wm-appointment-widget) */
2036    .wm-appt {
2037        --wm-appt-border: #e2e4ea;
2038        --wm-appt-text: #1f2430;
2039        --wm-appt-muted: #6b7280;
2040        /* Neutral palette mirrors the premium site checkout button (ps AppButton --primary,
2041           --color-gray-800 base / --color-gray-950 hover); green for success. */
2042        --wm-appt-primary: #1f2937;
2043        --wm-appt-primary-hover: #0d1016;
2044        --wm-appt-success: #2e7d32;
2045        font-family: inherit;
2046        /* Explicit base so type sizing doesn't depend on the page's root font-size. */
2047        font-size: 16px;
2048        line-height: 1.5;
2049        color: var(--wm-appt-text);
2050        max-width: 920px;
2051        margin: 0 auto;
2052        border: 1px solid var(--wm-appt-border);
2053        border-radius: 12px;
2054        background: #fff;
2055        box-shadow: 0 1px 10px rgba(67, 69, 81, 0.08);
2056        overflow: hidden;
2057    }
2058
2059    .wm-appt__header {
2060        padding: 28px 32px;
2061        background: linear-gradient(180deg, #f7f8fb 0%, #fff 100%);
2062        border-bottom: 1px solid var(--wm-appt-border);
2063    }
2064
2065    .wm-appt__title {
2066        margin: 0 0 6px;
2067        font-size: 24px;
2068        font-weight: 700 !important;
2069        line-height: 1.2;
2070    }
2071
2072    .wm-appt__caption {
2073        margin: 0;
2074        font-size: 16px;
2075        color: var(--wm-appt-text);
2076    }
2077
2078    .wm-appt__columns {
2079        display: grid;
2080        grid-template-columns: 1fr 1fr;
2081    }
2082
2083    .wm-appt__calendar {
2084        padding: 24px 32px;
2085        border-right: 1px solid var(--wm-appt-border);
2086    }
2087
2088    .wm-appt__times {
2089        padding: 24px 32px;
2090    }
2091
2092    .wm-appt__eyebrow {
2093        display: block;
2094        font-size: 12px;
2095        color: var(--wm-appt-text);
2096        margin-bottom: 16px;
2097    }
2098
2099    .wm-appt__month-nav {
2100        display: flex;
2101        align-items: center;
2102        justify-content: space-between;
2103        margin-bottom: 16px;
2104    }
2105
2106    .wm-appt__month {
2107        font-size: 18px;
2108        font-weight: 600 !important;
2109    }
2110
2111    .wm-appt__month-arrows {
2112        display: flex;
2113        gap: 4px;
2114    }
2115
2116    .wm-appt__arrow {
2117        width: 32px;
2118        height: 32px;
2119        display: inline-flex;
2120        align-items: center;
2121        justify-content: center;
2122        border: none;
2123        background: transparent;
2124        border-radius: 6px;
2125        cursor: pointer;
2126        color: var(--wm-appt-text);
2127    }
2128
2129    .wm-appt__arrow:hover:not(:disabled) {
2130        background: rgba(31, 41, 55, 0.08);
2131    }
2132
2133    .wm-appt__arrow:disabled {
2134        opacity: 0.35;
2135        cursor: default;
2136    }
2137
2138    .wm-appt__weekdays,
2139    .wm-appt__days {
2140        display: grid;
2141        grid-template-columns: repeat(7, 1fr);
2142    }
2143
2144    .wm-appt__weekday {
2145        text-align: center;
2146        font-size: 12px;
2147        font-weight: 500 !important;
2148        color: #6a7282;
2149        padding-bottom: 8px;
2150    }
2151
2152    .wm-appt__days {
2153        gap: 4px;
2154    }
2155
2156    .wm-appt__day {
2157        aspect-ratio: 1;
2158        display: inline-flex;
2159        align-items: center;
2160        justify-content: center;
2161        border: none;
2162        background: transparent;
2163        border-radius: 8px;
2164        font-size: 14px;
2165        font-weight: 500 !important;
2166        cursor: pointer;
2167        color: var(--wm-appt-text);
2168    }
2169
2170    .wm-appt__day:hover:not(.wm-appt__day--disabled):not(.wm-appt__day--selected) {
2171        background: rgba(31, 41, 55, 0.08);
2172    }
2173
2174    .wm-appt__day--selected {
2175        background: var(--wm-appt-primary);
2176        color: #fff;
2177        font-weight: 600 !important;
2178    }
2179
2180    .wm-appt__day--disabled {
2181        color: #c8ccd4;
2182        cursor: default;
2183    }
2184
2185    .wm-appt__times-empty {
2186        height: 100%;
2187        min-height: 220px;
2188        display: flex;
2189        flex-direction: column;
2190        align-items: center;
2191        justify-content: center;
2192        text-align: center;
2193        color: #b4b8c2;
2194        gap: 12px;
2195    }
2196
2197    .wm-appt__times-empty p {
2198        margin: 0;
2199        font-size: 16px;
2200    }
2201
2202    .wm-appt__times-title {
2203        margin: 0 0 20px;
2204        font-size: 18px;
2205        font-weight: 600 !important;
2206    }
2207
2208    .wm-appt__times-none {
2209        color: var(--wm-appt-muted);
2210        font-size: 16px;
2211    }
2212
2213    .wm-appt__slots {
2214        display: grid;
2215        grid-template-columns: 1fr 1fr;
2216        gap: 8px;
2217        max-height: 400px;
2218        overflow-y: auto;
2219        padding-right: 4px;
2220    }
2221
2222    .wm-appt__slot {
2223        padding: 10px 12px;
2224        border: 1px solid var(--wm-appt-border);
2225        background: #fff;
2226        border-radius: 8px;
2227        font-size: 14px;
2228        font-weight: 500 !important;
2229        cursor: pointer;
2230        color: var(--wm-appt-text);
2231        text-align: center;
2232    }
2233
2234    .wm-appt__slot:hover:not(.wm-appt__slot--selected) {
2235        border-color: var(--wm-appt-primary);
2236    }
2237
2238    .wm-appt__slot--selected {
2239        background: var(--wm-appt-primary);
2240        border-color: var(--wm-appt-primary);
2241        color: #fff;
2242        font-weight: 600 !important;
2243    }
2244
2245    .wm-appt__meta {
2246        margin: 20px 0 0;
2247        display: flex;
2248        flex-direction: column;
2249        gap: 6px;
2250    }
2251
2252    .wm-appt__meta div {
2253        display: flex;
2254        gap: 6px;
2255        font-size: 12px;
2256        color: var(--wm-appt-text);
2257    }
2258
2259    .wm-appt__meta dt,
2260    .wm-appt__meta dd {
2261        margin: 0;
2262    }
2263
2264    .wm-appt__details {
2265        padding: 24px 32px 28px;
2266        border-top: 1px solid var(--wm-appt-border);
2267        display: flex;
2268        flex-wrap: wrap;
2269        gap: 16px;
2270    }
2271
2272    .wm-appt__details-lead {
2273        width: 100%;
2274        margin: 0;
2275        font-size: 12px;
2276        font-weight: 400 !important;
2277    }
2278
2279    .wm-appt__field-row {
2280        width: 100%;
2281        display: flex;
2282        gap: 16px;
2283    }
2284
2285    .wm-appt__field {
2286        flex: 1;
2287        display: flex;
2288        flex-direction: column;
2289        gap: 6px;
2290    }
2291
2292    .wm-appt__field--full {
2293        width: 100%;
2294        flex-basis: 100%;
2295    }
2296
2297    .wm-appt__label {
2298        font-size: 14px;
2299        font-weight: 600 !important;
2300        margin-bottom: 0 !important;
2301    }
2302
2303    .wm-appt__required {
2304        margin-left: 2px;
2305        color: #d23b3b;
2306    }
2307
2308    .wm-appt__input {
2309        width: 100%;
2310        box-sizing: border-box;
2311        padding: 12px 14px;
2312        border: 1px solid var(--wm-appt-border);
2313        border-radius: 8px;
2314        font-family: inherit;
2315        font-size: 16px;
2316        color: var(--wm-appt-text);
2317        background: #fff;
2318    }
2319
2320    .wm-appt__input::placeholder {
2321        color: #bcbcbd;
2322    }
2323
2324    .wm-appt__input:focus {
2325        outline: none;
2326        border-color: var(--wm-appt-primary);
2327    }
2328
2329    .wm-appt__input--error {
2330        border-color: #d23b3b;
2331    }
2332
2333    .wm-appt__textarea {
2334        resize: vertical;
2335    }
2336
2337    .wm-appt__field-error {
2338        font-size: 14px;
2339        color: #d23b3b;
2340    }
2341
2342    .wm-appt__error {
2343        width: 100%;
2344        margin: 0;
2345        font-size: 16px;
2346        color: #d23b3b;
2347    }
2348
2349    .wm-appt__submit {
2350        align-self: flex-start;
2351        padding: 12px 24px;
2352        border: none;
2353        border-radius: 8px;
2354        background: var(--wm-appt-primary);
2355        color: #fff;
2356        font-family: inherit;
2357        font-size: 16px;
2358        font-weight: 600 !important;
2359        cursor: pointer;
2360    }
2361
2362    .wm-appt__submit:hover:not(:disabled) {
2363        background: var(--wm-appt-primary-hover);
2364    }
2365
2366    .wm-appt__submit:disabled {
2367        opacity: 0.6;
2368        cursor: default;
2369    }
2370
2371    .wm-appt__confirmation {
2372        padding: 48px 32px;
2373        display: flex;
2374        flex-direction: column;
2375        align-items: center;
2376        text-align: center;
2377        gap: 12px;
2378        color: var(--wm-appt-success);
2379    }
2380
2381    .wm-appt__confirmation-title {
2382        margin: 0;
2383        font-size: 26px;
2384        font-weight: 700 !important;
2385        color: var(--wm-appt-text);
2386    }
2387
2388    .wm-appt__confirmation-message {
2389        margin: 0 0 8px;
2390        font-size: 18px;
2391        color: var(--wm-appt-muted);
2392        max-width: 380px;
2393    }
2394
2395    @media (max-width: 640px) {
2396        .wm-appt__columns {
2397            grid-template-columns: 1fr;
2398        }
2399
2400        .wm-appt__calendar {
2401            border-right: none;
2402            border-bottom: 1px solid var(--wm-appt-border);
2403        }
2404
2405        .wm-appt__field-row {
2406            flex-direction: column;
2407        }
2408    }
2409
2410</style>
2411
2412	<!-- [START] Analytics Content: [default] -->
2413<!-- Google Tag Manager -->
2414<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
2415new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
2416j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
2417'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '&gtm_cookies_win=x';f.parentNode.insertBefore(j,f);
2418})(window,document,'script','dataLayer','GTM-TLR3ZL8');
2419window.dataLayer = window.dataLayer || [];
2420dataLayer.push({"ga4PsId":"G-RWY7QD072S","vendorAccountId":"vndr_uYo3g8hzsHOge3yo"});            var pageMetadataEventObj = {
2421                'event': 'pageMetadata',
2422                'title': document.title,
2423                'path': location.pathname,
2424                'url': location.href,
2425                'referrer': document.referrer,
2426                'search': location.search,
2427                'visitedDomain': 'florasavage.bloomnation.com',
2428                'login': 'notLoggedIn'
2429            };            pageMetadataEventObj['vendorDomain'] = 'florasavage.net';        window.dataLayer.push(pageMetadataEventObj);window.dataLayer = window.dataLayer || [];
2430dataLayer.push([]);
2431</script>
2431
2432<!-- End Google Tag Manager -->
2433	<!-- [END] Analytics Content: [default] -->
2434<script>
2435    //<![CDATA[
2436    var FORM_KEY = (document.cookie.match(/(?:^|;\s*)_csrf=([^;]*)/) || [])[1] || '';
2437    //]]>
2438</script>
2438
2439
2440                        <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,300,0,0" media="print" onload="this.media='all'">
2441                    <meta name="google-site-verification" content="WRf84sAwDZsNzqv2AeQhzmqFktts_3GEBrdM1cn-m-4" />
2442
2443<!-- [START] Custom HTML --><!-- [END] Custom HTML -->    </head>
2444    <body class=" bloom-cms-sitepage-view vendor-2705 bloom growth">
2445
2446        
2447    <a class="skip-to-mp" href="https://www.bloomnation.com/florist/flora-savage/?nav=premium-accessibility" target="_self" rel="nofollow">For <abbr title="Americans with Disabilities Act">ADA</abbr> accessible experience, please visit https://www.bloomnation.com/florist/flora-savage/?nav=premium-accessibility</a>
2448
2449<script>
2450  (function () {
2451    function ready(callback) {
2452      if (document.readyState === 'loading') {
2453        document.addEventListener('DOMContentLoaded', callback);
2454      } else {
2455        callback();
2456      }
2457    }
2458
2459    /**
2460     * Height of an element that may still be display:none.
2461     *
2462     * getComputedStyle() reports the declared height, which is 'auto' whenever the stylesheet does
2463     * not pin one — and parseInt('auto') is NaN. jQuery's .css('height') avoided that by briefly
2464     * laying the element out off-screen, so do the same. layout.css currently does pin
2465     * #header-accessibilityPopup at 205px, which is the only reason the simple read would work
2466     * today; this keeps working if that ever changes.
2467     */
2468    function hiddenHeight(element) {
2469      if (window.getComputedStyle(element).display !== 'none') {
2470        return element.offsetHeight;
2471      }
2472
2473      var style = element.style;
2474      var saved = {
2475        position: style.position,
2476        visibility: style.visibility,
2477        display: style.display
2478      };
2479
2480      style.position = 'absolute';
2481      style.visibility = 'hidden';
2482      style.display = 'block';
2483
2484      var height = element.offsetHeight;
2485
2486      style.position = saved.position;
2487      style.visibility = saved.visibility;
2488      style.display = saved.display;
2489
2490      return height;
2491    }
2492
2493    ready(function () {
2494      var accessibilityBtn = document.querySelector('.accessibility-widget [data-accessibility-btn]');
2495      var accessibilityPopup = document.querySelector('.accessibility-widget [data-accessibility-popup]');
2496      var accessibilityOverlay = document.querySelector('.accessibility-widget-overlay');
2497
2498      if (!accessibilityBtn || !accessibilityPopup || !accessibilityOverlay) {
2499        return;
2500      }
2501
2502      // Must be the exact negative of the container height, so the popup tucks fully out of sight.
2503      var popupHiddenHeight = hiddenHeight(accessibilityPopup) * -1;
2504      var showHide = { attribute: 'top', show: '0px', hide: popupHiddenHeight + 'px' };
2505
2506      function checkPopupVisible() {
2507        return window.getComputedStyle(accessibilityPopup)[showHide.attribute] === showHide.show;
2508      }
2509
2510      function togglePopup(popup, button, action, data) {
2511        popup.style[data.attribute] = data[action];
2512        var show = action === 'show';
2513        button.setAttribute('aria-expanded', String(show));
2514        accessibilityOverlay.style.display = show ? 'block' : 'none';
2515      }
2516
2517      function hideAccessibilityPopup() {
2518        togglePopup(accessibilityPopup, accessibilityBtn, 'hide', showHide);
2519      }
2520
2521      function showAccessibilityPopup() {
2522        accessibilityPopup.style.display = 'block';
2523        // Ensure the transition runs after the display:block above has been applied.
2524        setTimeout(function () {
2525          togglePopup(accessibilityPopup, accessibilityBtn, 'show', showHide);
2526        }, 0);
2527      }
2528
2529      function handleClickOutsidePopup() {
2530        if (checkPopupVisible()) {
2531          hideAccessibilityPopup();
2532        }
2533      }
2534
2535      accessibilityBtn.addEventListener('click', function () {
2536        if (checkPopupVisible()) {
2537          hideAccessibilityPopup();
2538        } else {
2539          showAccessibilityPopup();
2540        }
2541      });
2542
2543      accessibilityPopup.addEventListener('click', hideAccessibilityPopup);
2544
2545      accessibilityPopup.addEventListener('transitionend', function () {
2546        if (!checkPopupVisible()) {
2547          accessibilityPopup.style.display = 'none';
2548        }
2549      });
2550
2551      accessibilityOverlay.addEventListener('click', handleClickOutsidePopup);
2552    });
2553  })();
2554</script>
2554
2555
2556
2557<div class="accessibility-widget">
2558    <div class="accessibility-widget-overlay" aria-hidden="true"></div>
2559    <div class="header-accessibilityInnerContainer">
2560        <button
2561            id="header-accessibilityPopupBtn"
2562            aria-haspopup="true"
2563            aria-expanded="false"
2564            aria-controls="header-accessibilityPopup"
2565            aria-label="Accessibility Information"
2566            data-accessibility-btn
2567        >
2568        <svg class="ada-icon-dot" width="42" height="42" viewBox="0 0 42 42" fill="none" xmlns="http://www.w3.org/2000/svg">
2569            <circle cx="21" cy="21" r="21" fill="#017AFF"/>
2570            <path d="M20.7462 7C22.039 7 23.0857 8.03517 23.0857 9.30595C23.0857 10.585 22.039 11.6201 20.7462 11.6201C19.4624 11.6201 18.416 10.5846 18.4153 9.30595C18.4153 8.03517 19.4617 7 20.7462 7ZM30.8597 14.4567L23.9163 15.3247L23.9192 22.201L27.283 33.31C27.4607 34.0115 27.0344 34.7133 26.333 34.8866C25.6319 35.0599 24.9149 34.6779 24.7383 33.9764L21.2923 23.8639H20.2311L17.061 34.1862C16.7957 34.8598 16.0374 35.1695 15.3573 34.907C14.6838 34.6471 14.2726 33.8887 14.5383 33.2152L17.45 22.3134V15.3247L11.0532 14.4635C10.3967 14.4113 9.95079 13.8394 10.0044 13.1899C10.0525 12.5354 10.6497 12.0495 11.3059 12.1017L19.0777 12.7638H22.486L30.7619 12.0888C31.4196 12.0627 31.9769 12.5687 31.999 13.2243C32.0254 13.8752 31.5176 14.4299 30.8597 14.4567Z" fill="white"/>
2571        </svg>
2572        <svg class="ada-icon-tab" width="42" height="42" viewBox="0 0 42 42" fill="none" xmlns="http://www.w3.org/2000/svg">
2573            <path fill-rule="evenodd" clip-rule="evenodd" d="M42 22.4583C42 33.2509 32.598 42 21 42C9.40202 42 0 33.2509 0 22.4583V21V0H21H42V21V22.4583Z" fill="#017AFF"/>
2574            <path d="M20.7462 7C22.039 7 23.0857 8.03517 23.0857 9.30595C23.0857 10.585 22.039 11.6201 20.7462 11.6201C19.4624 11.6201 18.416 10.5846 18.4153 9.30595C18.4153 8.03517 19.4617 7 20.7462 7ZM30.8597 14.4567L23.9163 15.3247L23.9192 22.201L27.283 33.31C27.4607 34.0115 27.0344 34.7133 26.333 34.8866C25.6319 35.0599 24.9149 34.6779 24.7383 33.9764L21.2923 23.8639H20.2311L17.061 34.1862C16.7957 34.8598 16.0374 35.1695 15.3573 34.907C14.6838 34.6471 14.2726 33.8887 14.5383 33.2152L17.45 22.3134V15.3247L11.0532 14.4635C10.3967 14.4113 9.95079 13.8394 10.0044 13.1899C10.0525 12.5354 10.6497 12.0495 11.3059 12.1017L19.0777 12.7638H22.486L30.7619 12.0888C31.4196 12.0627 31.9769 12.5687 31.999 13.2243C32.0254 13.8752 31.5176 14.4299 30.8597 14.4567Z" fill="white"/>
2575        </svg>
2576    </button>
2577    <aside id="header-accessibilityPopup" aria-labelledby="header-accessibilityPopupBtn" data-accessibility-popup>
2578        <p>For an accessible ADA experience, please <a href="https://www.bloomnation.com/florist/flora-savage/?nav=premium-accessibility" rel="nofollow">visit our Marketplace.</a></p>
2579        <p><a href="https://florasavage.net/accessibility-statement/">Visit our Accessibility page</a> for further assistance or to learn more about our efforts.</p>
2580    </aside>
2581    </div>
2582</div>
2583
2584
2585	<!-- [START] Analytics Content: [default] -->
2586<!-- Google Tag Manager (noscript) -->
2587<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TLR3ZL8&gtm_cookies_win=x%22"
2588height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
2589<!-- End Google Tag Manager (noscript) -->
2590	<!-- [END] Analytics Content: [default] -->
2591
2592        
2593<script>
2594    (function () {
2595        /*
2596         * A page restored from the back/forward cache is not re-executed, so the cart count, the
2597         * logged-in state and any flash messages would be whatever they were when the visitor left.
2598         * PageTransitionEvent.persisted is true only for that restore, so reload to rebuild the page
2599         * server-side. This reads the native event directly; the jQuery version had to unwrap
2600         * event.originalEvent to reach the same flag.
2601         */
2602        window.addEventListener('pageshow', function (event) {
2603            if (event.persisted) {
2604                window.location.reload();
2605            }
2606        });
2607
2608        /*
2609         * Kill switch that freezes navigation: while window.forceDisableAllLinks is set, every
2610         * anchor without a force-redirect attribute stops navigating. Nothing in this repository
2611         * sets the flag, so this does nothing unless a script injected into the page turns it on.
2612         *
2613         * The jQuery version bound a handler to every anchor present at DOM ready and did nothing at
2614         * all on the flag-is-off path. One listener costs nothing while the flag is off and also
2615         * covers anchors added after DOM ready — but it has to run in the capture phase to match
2616         * the old reach: dropdown-nav.js stops propagation on every .dropdown-toggle and
2617         * .dropdown-content click, as does toggleDropdown() in topMobile.phtml, so a listener
2618         * delegated on the bubble phase would never see the desktop subnav links at all.
2619         */
2620        document.addEventListener('click', function (event) {
2621            if (!window.forceDisableAllLinks) {
2622                return;
2623            }
2624
2625            var target = event.target;
2626            var link = target && typeof target.closest === 'function' ? target.closest('a') : null;
2627
2628            if (!link || link.hasAttribute('force-redirect')) {
2629                return;
2630            }
2631
2632            event.preventDefault();
2633            // Belt and braces: preventDefault alone has been seen to let a navigation through here.
2634            link.setAttribute('href', '#');
2635        }, true);
2636    })();
2637</script>
2637
2638
2639<header id="header_mobile" class="header-mobile visible-xs text-center">
2640    <table class="header-mobile-grid">
2641        <tbody>
2642            <tr>
2643                <td class="menu-cell">
2644                    <div class="menu-container">
2645                        
2646<nav class="navigation-mobile-wrapper">
2647    <div class="navToggle-container nav-itemWrapper nav-itemWrapper--navToggle text-left">
2648        <!-- Nav Toggle -->
2649        <button
2650            id="navToggleMobile"
2651            class="nav-toggle-mobile nav-item nav-item-mobile nav-item--navToggle text-center"
2652            aria-controls="navigationMobile"
2653            aria-expanded="false"
2654            title="Main Navigation">
2655            <i class="fa fa-reorder"></i>
2656        </button>
2657    </div>
2658    <ul class="navigation col-md-12 navigation-mobile" id="navigationMobile">
2659        <li class="nav-itemWrapper text-right">
2660
2661                            <a href="https://florasavage.net/customer/account/create/" class="nav-item nav-item-mobile account-link">
2662                    <span class="nav-itemText mobile-menu-text-color">Sign Up</span>
2663                </a>
2664                    <span class="nav-itemText mobile-menu-text-color sign-up-log-in-separator">/</span>
2665                <a href="https://florasavage.net/customer/account/login/" class="nav-item nav-item-mobile account-link">
2666                    <span class="nav-itemText mobile-menu-text-color">Log in</span>
2667                </a>
2668            
2669        </li>
2670                                    <li class="nav-itemWrapper text-left">
2671                    <a class="nav-item" href="https://florasavage.net/" target="_self">
2672                        <span class="nav-itemText mobile-menu-text-color">Home</span>
2673                    </a>
2674                </li>
2675                                                <li class="nav-itemWrapper text-left">
2676                    <a class="nav-item" href="https://florasavage.net/new-orleans-florist-flower-delivery/" target="_self">
2677                        <span class="nav-itemText mobile-menu-text-color">Shop Online</span>
2678                    </a>
2679                </li>
2680                                                <li class="nav-itemWrapper text-left">
2681                    <a class="nav-item" href="https://florasavage.net/custom-flower-arrangements/" target="_self">
2682                        <span class="nav-itemText mobile-menu-text-color">Custom Arrangement</span>
2683                    </a>
2684                </li>
2685                                                <li class="nav-itemWrapper text-left">
2686                    <a class="nav-item" href="https://florasavage.net/cms/index/gallery/" target="_self">
2687                        <span class="nav-itemText mobile-menu-text-color">Weddings &amp; Events</span>
2688                    </a>
2689                </li>
2690                                                <li class="nav-itemWrapper text-left">
2691                    <a class="nav-item" href="https://florasavage.net/blog" target="_self">
2692                        <span class="nav-itemText mobile-menu-text-color">Blog</span>
2693                    </a>
2694                </li>
2695                                                <li class="nav-itemWrapper text-left">
2696                    <a class="nav-item" href="https://florasavage.net/about-us/" target="_self">
2697                        <span class="nav-itemText mobile-menu-text-color">About Us</span>
2698                    </a>
2699                </li>
2700                                </ul>
2701    <div class="background-overlay" id="mobileBackgroundOverlay"></div>
2702</nav>
2703<script type="text/javascript">
2704    (function () {
2705        function ready(callback) {
2706            if (document.readyState === 'loading') {
2707                document.addEventListener('DOMContentLoaded', callback);
2708            } else {
2709                callback();
2710            }
2711        }
2712
2713        function each(selector, callback, root) {
2714            Array.prototype.forEach.call((root || document).querySelectorAll(selector), callback);
2715        }
2716
2717        // jQuery's :visible test, which is what the checks below used to run through.
2718        function isVisible(element) {
2719            return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);
2720        }
2721
2722        /*
2723         * jQuery's .width(): the content-box width, as a number. Not getComputedStyle().width, which
2724         * resolves to the border box under the border-box sizing Bootstrap applies globally. Like
2725         * jQuery it also measures a display:none element, by laying it out off-screen — #header_mobile
2726         * carries visible-xs, so it is hidden on desktop.
2727         */
2728        function contentWidth(element) {
2729            if (window.getComputedStyle(element).display === 'none') {
2730                return swapMeasure(element, measureContentWidth);
2731            }
2732
2733            return measureContentWidth(element);
2734        }
2735
2736        function measureContentWidth(element) {
2737            var styles = window.getComputedStyle(element);
2738
2739            return element.offsetWidth
2740                - (parseFloat(styles.paddingLeft) || 0)
2741                - (parseFloat(styles.paddingRight) || 0)
2742                - (parseFloat(styles.borderLeftWidth) || 0)
2743                - (parseFloat(styles.borderRightWidth) || 0);
2744        }
2745
2746        /*
2747         * jQuery's swap() with cssShow: lay a hidden element out off-screen just long enough to
2748         * measure. The measure callback must not re-test display itself — Bootstrap's visible-xs is
2749         * `display: none !important` above 768px, which an inline style cannot beat, so the swap does
2750         * not actually reveal #header_mobile and a self-recursive version would never terminate.
2751         */
2752        function swapMeasure(element, measure) {
2753            var style = element.style;
2754            var saved = {
2755                position: style.position,
2756                visibility: style.visibility,
2757                display: style.display
2758            };
2759
2760            style.position = 'absolute';
2761            style.visibility = 'hidden';
2762            style.display = 'block';
2763
2764            var measured = measure(element);
2765
2766            style.position = saved.position;
2767            style.visibility = saved.visibility;
2768            style.display = saved.display;
2769
2770            return measured;
2771        }
2772
2773        // jQuery's $(document).height().
2774        function documentHeight() {
2775            var body = document.body;
2776            var html = document.documentElement;
2777
2778            return Math.max(
2779                body.scrollHeight,
2780                body.offsetHeight,
2781                html.clientHeight,
2782                html.scrollHeight,
2783                html.offsetHeight
2784            );
2785        }
2786
2787        /*
2788         * Submenu open/close, replacing the $('.dropdown-toggle').dropdown() call that used to sit
2789         * here. That call is what made the submenus toggle at all: the Bootstrap plugin binds
2790         * Dropdown.prototype.toggle straight to each element, and because that handler returns false
2791         * it also stops the click reaching Bootstrap's delegated [data-toggle=dropdown] handler on
2792         * document. Without the direct handler the delegated one runs after clearMenus() has already
2793         * removed the 'open' class, so it reads the menu as closed and re-opens it every time — a
2794         * submenu that can never be closed. The port below keeps the direct-handler semantics
2795         * (including getParent()'s data-target/href lookup and the second-click close) and works
2796         * whether or not Bootstrap is on the page, which it will not be after BLOOM-17575's P9.
2797         */
2798        function dropdownParent(toggle) {
2799            var selector = toggle.getAttribute('data-target');
2800
2801            if (!selector) {
2802                var href = toggle.getAttribute('href');
2803                selector = href && /#[A-Za-z]/.test(href) ? href.replace(/.*(?=#[^\s]*$)/, '') : null;
2804            }
2805
2806            var target = null;
2807
2808            if (selector) {
2809                try {
2810                    target = document.querySelector(selector);
2811                } catch (error) {
2812                    // The mobile toggles carry data-target="#", which is not a valid selector.
2813                    // jQuery quietly returned an empty set for it, so fall through to the parent.
2814                    target = null;
2815                }
2816            }
2817
2818            return target || toggle.parentNode;
2819        }
2820
2821        function closeOpenDropdowns() {
2822            each('[data-toggle="dropdown"]', function (toggle) {
2823                dropdownParent(toggle).classList.remove('open');
2824            });
2825        }
2826
2827        function toggleDropdown(event) {
2828            var toggle = event.currentTarget;
2829
2830            if (toggle.classList.contains('disabled') || toggle.disabled) {
2831                return;
2832            }
2833
2834            var parent = dropdownParent(toggle);
2835            var wasOpen = parent.classList.contains('open');
2836
2837            closeOpenDropdowns();
2838
2839            if (!wasOpen) {
2840                parent.classList.add('open');
2841                toggle.focus();
2842            }
2843
2844            event.preventDefault();
2845            // Bootstrap's handler returned false, which stopped the click reaching its own
2846            // document-level handlers. Keep that so nothing toggles the menu a second time.
2847            event.stopPropagation();
2848        }
2849
2850        ready(function () {
2851            each('.dropdown-toggle', function (toggle) {
2852                toggle.addEventListener('click', toggleDropdown);
2853            });
2854
2855            document.addEventListener('click', closeOpenDropdowns);
2856
2857            var navToggle = document.getElementById('navToggleMobile');
2858            var navigationMobile = document.getElementById('navigationMobile');
2859            var overlay = document.getElementById('mobileBackgroundOverlay');
2860            var headerMobile = document.getElementById('header_mobile');
2861            var body = document.body;
2862
2863            if (!navToggle || !navigationMobile || !overlay) {
2864                return;
2865            }
2866
2867            each('.dropdown-toggle', function (toggle) {
2868                toggle.addEventListener('click', function (event) {
2869                    if (isVisible(navigationMobile)) {
2870                        return;
2871                    }
2872
2873                    event.preventDefault();
2874
2875                    // A page carries several of these — one per desktop dropdown, plus the two
2876                    // dropdown-nav templates — and .is(':visible') was true if ANY of them was
2877                    // showing, so this has to ask all of them, not just the first.
2878                    var desktopSubnavOpen = Array.prototype.some.call(
2879                        document.querySelectorAll('.dropdown-content--arrownav-desktop'),
2880                        isVisible
2881                    );
2882
2883                    if (!desktopSubnavOpen) {
2884                        return;
2885                    }
2886
2887                    each('.dropdown-wrapper--hover', function (wrapper) {
2888                        each('.dropdown-toggle', function (hoverToggle) {
2889                            hoverToggle.setAttribute('aria-expanded', 'false');
2890                        }, wrapper);
2891                        each('.dropdown-content', function (content) {
2892                            content.classList.remove('dropdown-content--visible');
2893                        }, wrapper);
2894                        wrapper.classList.remove('open');
2895                    });
2896                });
2897            });
2898
2899            // Nav Toggle on click
2900            navToggle.addEventListener('click', function () {
2901                if (navigationMobile.classList.contains('open')) {
2902                    hideMenu();
2903                } else {
2904                    showMenu();
2905                }
2906            });
2907
2908            overlay.addEventListener('click', function () {
2909                hideMenu();
2910            });
2911
2912            navigationMobile.addEventListener('touchstart', startTouch, { passive: false });
2913            navigationMobile.addEventListener('touchmove', moveTouch, { passive: false });
2914
2915            // Swipe Up / Down / Left / Right
2916            var initialX = null;
2917            var initialY = null;
2918
2919            function startTouch(e) {
2920                initialX = e.touches[0].clientX;
2921                initialY = e.touches[0].clientY;
2922            }
2923
2924            function moveTouch(e) {
2925                if (initialX === null) {
2926                    return;
2927                }
2928
2929                if (initialY === null) {
2930                    return;
2931                }
2932
2933                var currentX = e.touches[0].clientX;
2934                var currentY = e.touches[0].clientY;
2935
2936                var diffX = initialX - currentX;
2937                var diffY = initialY - currentY;
2938
2939                if (Math.abs(diffX) > Math.abs(diffY)) {
2940                    // sliding horizontally
2941                    if (diffX > 0) {
2942                        // swiped left
2943                        menuSlideLeft();
2944                    }
2945                }
2946
2947                initialX = null;
2948                initialY = null;
2949            }
2950
2951            /*
2952             * Stale selector, kept as it was: the toggle lives in .navToggle-container, a sibling of
2953             * .navigation-mobile rather than a child, so this has matched nothing for a long time.
2954             * Restoring the intent would hide the hamburger while the menu is open — a visible
2955             * change, and not this ticket's.
2956             */
2957            function setNavToggleDisplay(display) {
2958                each('.navigation-mobile .nav-itemWrapper--navToggle', function (wrapper) {
2959                    wrapper.style.display = display;
2960                });
2961            }
2962
2963            function showMenu() {
2964                navToggle.setAttribute('aria-expanded', 'true');
2965                navigationMobile.classList.add('open');
2966                var containerWidth = headerMobile ? contentWidth(headerMobile) : 0;
2967                setNavToggleDisplay('none');
2968                navigationMobile.style.width = (containerWidth * 0.8) + 'px';
2969                overlay.style.height = documentHeight() + 'px';
2970                // The stylesheet hides the overlay, so an empty display would leave it hidden.
2971                overlay.style.display = 'block';
2972                body.style.position = 'fixed';
2973            }
2974
2975            function hideMenu() {
2976                navToggle.setAttribute('aria-expanded', 'false');
2977                navigationMobile.classList.remove('open');
2978                setNavToggleDisplay('');
2979                navigationMobile.style.width = '';
2980                overlay.style.height = '0px';
2981                overlay.style.display = 'none';
2982                body.style.position = '';
2983            }
2984
2985            function menuSlideLeft() {
2986                var containerWidth = headerMobile ? contentWidth(headerMobile) : 0;
2987                var settled = false;
2988                var timer = null;
2989
2990                function settle(event) {
2991                    if (event && event.propertyName && event.propertyName !== 'margin-left') {
2992                        return;
2993                    }
2994
2995                    if (settled) {
2996                        return;
2997                    }
2998
2999                    settled = true;
3000                    window.clearTimeout(timer);
3001                    navigationMobile.removeEventListener('transitionend', settle);
3002                    navigationMobile.style.transition = '';
3003                    navigationMobile.style.marginLeft = '0px';
3004                    navigationMobile.style.width = '';
3005                    navigationMobile.style.height = '';
3006                    navigationMobile.style.top = '';
3007                    navigationMobile.classList.remove('open');
3008                    setNavToggleDisplay('');
3009                    overlay.style.height = '0px';
3010                    overlay.style.display = 'none';
3011                }
3012
3013                navigationMobile.addEventListener('transitionend', settle);
3014                // Fallback for the cases transitionend never fires: reduced motion, or a margin that
3015                // is already at the target value.
3016                timer = window.setTimeout(settle, 150);
3017
3018                navigationMobile.style.transition = 'margin-left 100ms linear';
3019                // Force a reflow so the transition starts from the current margin.
3020                void navigationMobile.offsetWidth;
3021                navigationMobile.style.marginLeft = -(containerWidth * 0.8) + 'px';
3022            }
3023        });
3024    })();
3025</script>
3025
3026                    </div>
3027                </td>
3028                <td class="logo-cell">
3029                    <div class="logo-container">
3030                        <a class="companyLogo-imgContainer" href="https://florasavage.net/">
3031                                                        <img
3032                                class="companyLogo-img"
3033                                src="https://asset.bloomnation.com/c_fit,dpr_1,f_auto,h_353,q_auto,w_600/v1/vendor/2705/profile/f/l/florasavage-logo.png"
3034                                alt="Flora Savage - New Orleans, LA florist"
3035                                srcset="https://asset.bloomnation.com/c_fit%2Cdpr_1%2Cf_auto%2Ch_353%2Cq_auto%2Cw_600/v1/vendor/2705/profile/f/l/florasavage-logo.png 1x, https://asset.bloomnation.com/c_fit%2Cdpr_2%2Cf_auto%2Ch_353%2Cq_auto%2Cw_600/v1/vendor/2705/profile/f/l/florasavage-logo.png 2x"
3036                                                                    width="600"
3037                                    height="353"
3038                                                            />
3039                                                    </a>
3040                    </div>
3041                </td>
3042                <td class="cart-cell">
3043                    <div class="cart-container">
3044                        <a href="https://florasavage.net/checkout/" class="mobile-cart-btn">
3045                            <div class="mobile-cart-icon-wrapper">
3046                                <span class="header-cartIcon mobile-menu-text-color" aria-hidden="true"><svg width="19" height="24" viewBox="0 0 19 24" fill="none" xmlns="http://www.w3.org/2000/svg">
3047<path d="M2.33333 23.3333C1.69167 23.3333 1.14236 23.1049 0.685417 22.6479C0.228472 22.191 0 21.6417 0 21V7C0 6.35833 0.228472 5.80903 0.685417 5.35208C1.14236 4.89514 1.69167 4.66667 2.33333 4.66667H4.66667C4.66667 3.38333 5.12361 2.28472 6.0375 1.37083C6.95139 0.456945 8.05 0 9.33333 0C10.6167 0 11.7153 0.456945 12.6292 1.37083C13.5431 2.28472 14 3.38333 14 4.66667H16.3333C16.975 4.66667 17.5243 4.89514 17.9812 5.35208C18.4382 5.80903 18.6667 6.35833 18.6667 7V21C18.6667 21.6417 18.4382 22.191 17.9812 22.6479C17.5243 23.1049 16.975 23.3333 16.3333 23.3333H2.33333ZM2.33333 21H16.3333V7H14V9.33333C14 9.66389 13.8882 9.94097 13.6646 10.1646C13.441 10.3882 13.1639 10.5 12.8333 10.5C12.5028 10.5 12.2257 10.3882 12.0021 10.1646C11.7785 9.94097 11.6667 9.66389 11.6667 9.33333V7H7V9.33333C7 9.66389 6.88819 9.94097 6.66458 10.1646C6.44097 10.3882 6.16389 10.5 5.83333 10.5C5.50278 10.5 5.22569 10.3882 5.00208 10.1646C4.77847 9.94097 4.66667 9.66389 4.66667 9.33333V7H2.33333V21ZM7 4.66667H11.6667C11.6667 4.025 11.4382 3.4757 10.9812 3.01875C10.5243 2.56181 9.975 2.33333 9.33333 2.33333C8.69167 2.33333 8.14236 2.56181 7.68542 3.01875C7.22847 3.4757 7 4.025 7 4.66667Z" fill="currentColor"/>
3048</svg>
3049</span>
3050                                                            </div>
3051                        </a>
3052                    </div>
3053                </td>
3054            </tr>
3055        </tbody>
3056
3057    </table>
3058</header>
3059<header id="header" class="hidden-xs">
3060        <div class="row header-innerContainer">
3061        <div class="information-heading infoHeading hidden-xs col-sm-4 col-md-4">
3062                        <span class="infoHeading-item infoHeading-item--name">Flora Savage</span>
3063            <span class="infoHeading-item infoHeading-item--address vendor-address">1301 Royal St. <br />
3064            New Orleans,
3065            LA            70116</span>
3066                                            </div>
3067        <div class="header-logo col-xs-12 col-sm-4 col-md-4">
3068            <div class="company-logo">
3069                <a class="companyLogo-imgContainer" href="https://florasavage.net/">
3070                                        <img
3071                        class="companyLogo-img"
3072                        src="https://asset.bloomnation.com/c_fit,dpr_1,f_auto,h_500,q_auto,w_852/v1/vendor/2705/profile/f/l/florasavage-logo.png"
3073                        alt="Flora Savage - New Orleans, LA florist"
3074                        srcset="https://asset.bloomnation.com/c_fit%2Cdpr_1%2Cf_auto%2Ch_500%2Cq_auto%2Cw_852/v1/vendor/2705/profile/f/l/florasavage-logo.png 1x, https://asset.bloomnation.com/c_fit%2Cdpr_2%2Cf_auto%2Ch_500%2Cq_auto%2Cw_852/v1/vendor/2705/profile/f/l/florasavage-logo.png 2x"
3075                                                    width="852"
3076                            height="500"
3077                                            />
3078                                    </a>
3079            </div>
3080        </div>
3081        
3082<nav class="header-cart ps-header-cart col-xs-12 col-sm-4 col-md-4" aria-labelledby="ps-my-account_menu-label">
3083    <div class="ps-header-cartBtn-wrapper">
3084        <div class="ps-my-account-button-wrapper dropdown-wrapper">
3085            <button class="ps-my-account-button dropdown-toggle" aria-expanded="false" aria-haspopup="true">
3086                <span class="ps-my-account-button-text" id="ps-my-account_menu-label">My Account</span>
3087                <span class="ps-my-account-icon" aria-hidden="true"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
3088<path d="M4.49166 17.6167C5.48333 16.8583 6.59166 16.2604 7.81666 15.8229C9.04166 15.3854 10.325 15.1667 11.6667 15.1667C13.0083 15.1667 14.2917 15.3854 15.5167 15.8229C16.7417 16.2604 17.85 16.8583 18.8417 17.6167C19.5222 16.8194 20.0521 15.9153 20.4312 14.9042C20.8104 13.893 21 12.8139 21 11.6667C21 9.08055 20.091 6.87847 18.2729 5.06041C16.4549 3.24236 14.2528 2.33333 11.6667 2.33333C9.08055 2.33333 6.87847 3.24236 5.06041 5.06041C3.24236 6.87847 2.33333 9.08055 2.33333 11.6667C2.33333 12.8139 2.52292 13.893 2.90208 14.9042C3.28125 15.9153 3.81111 16.8194 4.49166 17.6167ZM8.76458 11.6521C7.97708 10.8646 7.58333 9.89722 7.58333 8.75C7.58333 7.60277 7.97708 6.63541 8.76458 5.84791C9.55208 5.06041 10.5194 4.66666 11.6667 4.66666C12.8139 4.66666 13.7812 5.06041 14.5687 5.84791C15.3562 6.63541 15.75 7.60277 15.75 8.75C15.75 9.89722 15.3562 10.8646 14.5687 11.6521C13.7812 12.4396 12.8139 12.8333 11.6667 12.8333C10.5194 12.8333 9.55208 12.4396 8.76458 11.6521ZM11.6667 23.3333C10.0528 23.3333 8.53611 23.0271 7.11666 22.4146C5.69722 21.8021 4.4625 20.9708 3.4125 19.9208C2.3625 18.8708 1.53125 17.6361 0.91875 16.2167C0.30625 14.7972 0 13.2805 0 11.6667C0 10.0528 0.30625 8.53611 0.91875 7.11666C1.53125 5.69722 2.3625 4.4625 3.4125 3.4125C4.4625 2.3625 5.69722 1.53125 7.11666 0.91875C8.53611 0.30625 10.0528 0 11.6667 0C13.2805 0 14.7972 0.30625 16.2167 0.91875C17.6361 1.53125 18.8708 2.3625 19.9208 3.4125C20.9708 4.4625 21.8021 5.69722 22.4146 7.11666C23.0271 8.53611 23.3333 10.0528 23.3333 11.6667C23.3333 13.2805 23.0271 14.7972 22.4146 16.2167C21.8021 17.6361 20.9708 18.8708 19.9208 19.9208C18.8708 20.9708 17.6361 21.8021 16.2167 22.4146C14.7972 23.0271 13.2805 23.3333 11.6667 23.3333ZM14.5833 20.5479C15.4972 20.2465 16.3333 19.8139 17.0917 19.25C16.3333 18.6861 15.4972 18.2535 14.5833 17.9521C13.6694 17.6507 12.6972 17.5 11.6667 17.5C10.6361 17.5 9.66388 17.6507 8.75 17.9521C7.83611 18.2535 7 18.6861 6.24166 19.25C7 19.8139 7.83611 20.2465 8.75 20.5479C9.66388 20.8493 10.6361 21 11.6667 21C12.6972 21 13.6694 20.8493 14.5833 20.5479ZM12.9208 10.0042C13.2514 9.6736 13.4167 9.25555 13.4167 8.75C13.4167 8.24444 13.2514 7.82638 12.9208 7.49583C12.5903 7.16527 12.1722 7 11.6667 7C11.1611 7 10.743 7.16527 10.4125 7.49583C10.0819 7.82638 9.91666 8.24444 9.91666 8.75C9.91666 9.25555 10.0819 9.6736 10.4125 10.0042C10.743 10.3347 11.1611 10.5 11.6667 10.5C12.1722 10.5 12.5903 10.3347 12.9208 10.0042Z" fill="currentColor"/>
3089</svg>
3090</span>
3091            </button>
3092                            
3093<div id="dropdown-nav--js" class="dropdown-nav dropdown-nav--login dropdown-content dropdown-content--arrownav-desktop">
3094    <div class="dropdown-nav__arrow-up"></div>
3095    <div class="dropdown-nav__arrow-up--overlay"></div>
3096
3097    <ul class="dropdown-nav__list">
3098        <li class="dropdown-nav__list-item">
3099            <a class="dropdown-nav__link" href="https://florasavage.net/customer/account/login/" tabindex="-1" rel="nofollow">
3100                <p class="icon material-symbols-outlined">login</p>
3101                <span>Log in</span>
3102            </a>
3103        </li>
3104        <li class="dropdown-nav__list-item">
3105            <a class="dropdown-nav__link" href="https://florasavage.net/customer/account/create/" tabindex="-1" rel="nofollow">
3106                <p class="icon material-symbols-outlined">person</p>
3107                <span>Sign up</span>
3108            </a>
3109        </li>
3110                    <li class="dropdown-nav__list-item">
3111                <a class="dropdown-nav__link" href="https://florasavage.net/customer/account/createEnroll/" tabindex="-1" rel="nofollow">
3112                    <p class="icon material-symbols-outlined">stars</p>
3113                    <span>Join Loyalty</span>
3114                </a>
3115            </li>
3116            </ul>
3117</div>
3118                    </div>
3119
3120        <div class="ps-my-account-mob">
3121            <a href="https://florasavage.net/checkout/" class="btn btn-outline ps-cart_button ps-header-cartBtn" aria-label="view cart with 0 items">
3122                <span class="ps-header-cart-icon" aria-hidden="true"><svg width="19" height="24" viewBox="0 0 19 24" fill="none" xmlns="http://www.w3.org/2000/svg">
3123<path d="M2.33333 23.3333C1.69167 23.3333 1.14236 23.1049 0.685417 22.6479C0.228472 22.191 0 21.6417 0 21V7C0 6.35833 0.228472 5.80903 0.685417 5.35208C1.14236 4.89514 1.69167 4.66667 2.33333 4.66667H4.66667C4.66667 3.38333 5.12361 2.28472 6.0375 1.37083C6.95139 0.456945 8.05 0 9.33333 0C10.6167 0 11.7153 0.456945 12.6292 1.37083C13.5431 2.28472 14 3.38333 14 4.66667H16.3333C16.975 4.66667 17.5243 4.89514 17.9812 5.35208C18.4382 5.80903 18.6667 6.35833 18.6667 7V21C18.6667 21.6417 18.4382 22.191 17.9812 22.6479C17.5243 23.1049 16.975 23.3333 16.3333 23.3333H2.33333ZM2.33333 21H16.3333V7H14V9.33333C14 9.66389 13.8882 9.94097 13.6646 10.1646C13.441 10.3882 13.1639 10.5 12.8333 10.5C12.5028 10.5 12.2257 10.3882 12.0021 10.1646C11.7785 9.94097 11.6667 9.66389 11.6667 9.33333V7H7V9.33333C7 9.66389 6.88819 9.94097 6.66458 10.1646C6.44097 10.3882 6.16389 10.5 5.83333 10.5C5.50278 10.5 5.22569 10.3882 5.00208 10.1646C4.77847 9.94097 4.66667 9.66389 4.66667 9.33333V7H2.33333V21ZM7 4.66667H11.6667C11.6667 4.025 11.4382 3.4757 10.9812 3.01875C10.5243 2.56181 9.975 2.33333 9.33333 2.33333C8.69167 2.33333 8.14236 2.56181 7.68542 3.01875C7.22847 3.4757 7 4.025 7 4.66667Z" fill="currentColor"/>
3124</svg>
3125</span>
3126                <span class="ps-cart_text ps-header-cart-text">(0) Cart</span>
3127                            </a>
3128        </div>
3129    </div>
3130    <style>
3131        /* Account Management Cart Modifications (start) */
3132        .ps-header-cart .ps-header-cart-badge {
3133            display: none;
3134            background: transparent;
3135            color: var(--header-icon-color, #000);
3136            position: absolute;
3137            top: 69%;
3138            left: 50%;
3139            transform: translate(-50%, -50%);
3140            padding: 0;
3141            font-size: 10px;
3142            font-weight: 600 !important;
3143            line-height: 1;
3144            pointer-events: none;
3145        }
3146
3147        .ps-header-cart .ps-my-account-button-wrapper {
3148            display: none;
3149        }
3150
3151        #header .ps-header-cart .ps-cart_button {
3152            border: 0;
3153            padding: 0;
3154        }
3155
3156        .ps-my-account-button {
3157            background: none;
3158            border: none;
3159            padding: 0;
3160        }
3161
3162        .ps-my-account-mob {
3163            display: inline-block;
3164        }
3165
3166        .ps-my-account-button-text {
3167            color: var(--my-account-color, #000);
3168        }
3169
3170        @media only screen and (min-width: 768px) {
3171            .account-management-dropdown-nav,
3172            .ps-header-cart-text {
3173                display: none;
3174            }
3175
3176            .ps-header-cart .ps-my-account-button-wrapper {
3177                position: relative;
3178                display: inline-block;
3179                float: left;
3180                margin-top: 3px;
3181                margin-right: 5px;
3182                cursor: pointer;
3183            }
3184
3185            .ps-header-cart .ps-my-account-button-text {
3186                text-align: right;
3187            }
3188
3189            .ps-header-cart .ps-my-account-button-wrapper {
3190                display: inline-block;
3191            }
3192
3193            .ps-header-cart .ps-my-account-button #ps-my-account_menu-label {
3194                font-weight: 500 !important;
3195                display: inline-block;
3196            }
3197
3198            .ps-header-cart .ps-header-cart-badge {
3199                display: block;
3200            }
3201
3202            .ps-header-cartBtn-wrapper {
3203                float: right;
3204            }
3205
3206            .ps-header-cartBtn {
3207                float: none;
3208                position: relative;
3209                margin: 0;
3210                padding: 0 10px;
3211                width: auto;
3212                height: auto;
3213                border: 0;
3214            }
3215
3216            .ps-header-cart-icon {
3217                width: 25px;
3218                height: 25px;
3219                margin: 0;
3220                vertical-align: middle;
3221                display: inline-flex;
3222                align-items: center;
3223                justify-content: center;
3224                position: relative;
3225                top: 2px;
3226            }
3227
3228            .ps-header-cart-icon svg {
3229                width: 100%;
3230                height: 100%;
3231                display: block;
3232            }
3233            .ps-header-cart-icon svg path {
3234                fill: var(--header-icon-color, var(--my-account-color, #000));
3235            }
3236        }
3237
3238        .ps-my-account-icon {
3239            width: 25px;
3240            height: 25px;
3241            margin: 0 6px;
3242            vertical-align: middle;
3243            display: inline-flex;
3244            align-items: center;
3245            justify-content: center;
3246        }
3247
3248        .ps-my-account-icon svg {
3249            width: 100%;
3250            height: 100%;
3251            display: block;
3252        }
3253
3254        .ps-my-account-icon svg path {
3255            fill: var(--header-icon-color, var(--my-account-color, #000));
3256        }
3257
3258        .ps-my-account-button svg {
3259            width: 25px;
3260            height: 25px;
3261        }
3262
3263        /* Account Management Cart Modifications (end) */
3264    </style>
3265    
3265<script type="text/javascript" src="https://promfiles.com/bloom/dist/frontend/base/default/js/dropdown-nav.5e3dac90.js" defer></script>
3265
3266</nav>
3267        <div class="clearfix"></div>
3268    </div>
3269
3270    <div class="clearfix"></div>
3271    <nav class="header-nav headerNav-wrapper">
3272        <div class="row headerNav-innerContainer">
3273            
3274<ul id="main-nav" class="navigation col-md-12">
3275	<li class="navToggle-container nav-itemWrapper nav-itemWrapper--navToggle">
3276		<!-- Nav Toggle -->
3277		<a href="#" class="nav-toggle nav-item" id="main-nav-toggle" aria-haspopup="true" aria-expanded="false">
3278			<i class="fa fa-reorder"></i>
3279			<span class="nav-show">Menu <i class="fa fa-caret-down"></i></span>
3280			<span class="nav-hide">Hide <i class="fa fa-caret-up"></i></span>
3281		</a>
3282	</li>
3283						<li class="nav-itemWrapper">
3284				<a class="nav-item" href="https://florasavage.net/" target="_self"><span class="nav-itemText">Home</span></a>
3285			</li>
3286								<li class="nav-itemWrapper">
3287				<a class="nav-item" href="https://florasavage.net/new-orleans-florist-flower-delivery/" target="_self"><span class="nav-itemText">Shop Online</span></a>
3288			</li>
3289								<li class="nav-itemWrapper">
3290				<a class="nav-item" href="https://florasavage.net/custom-flower-arrangements/" target="_self"><span class="nav-itemText">Custom Arrangement</span></a>
3291			</li>
3292								<li class="nav-itemWrapper">
3293				<a class="nav-item" href="https://florasavage.net/cms/index/gallery/" target="_self"><span class="nav-itemText">Weddings &amp; Events</span></a>
3294			</li>
3295								<li class="nav-itemWrapper">
3296				<a class="nav-item" href="https://florasavage.net/blog" target="_self"><span class="nav-itemText">Blog</span></a>
3297			</li>
3298								<li class="nav-itemWrapper">
3299				<a class="nav-item" href="https://florasavage.net/about-us/" target="_self"><span class="nav-itemText">About Us</span></a>
3300			</li>
3301			    <li class="account-management-dropdown-nav dropdown nav-dropdown nav-itemWrapper nav-itemWrapper--dropdown dropdown-wrapper">
3302        <button class="dropdown-toggle nav-item nav-item--dropdown" aria-expanded="false" aria-haspopup="true">
3303            <span class="nav-itemText">My Account &#x25BE;</span>
3304        </button>
3305        <ul class="subnav dropdown-menu header-subnav dropdown-content dropdown-content--arrownav-desktop" role="menu">
3306                        <li class="subnav-itemWrapper">
3307                <a class="nav-item nav-item--subnav" href="https://florasavage.net/customer/account/login/">Log in</a>
3308            </li>
3309            <li class="subnav-itemWrapper">
3310                <a class="nav-item nav-item--subnav" href="https://florasavage.net/customer/account/create/">
3311                    Sign Up                </a>
3312            </li>
3313                    </ul>
3314    </li>
3315</ul>
3316        </div>
3317    </nav>
3318
3319        <div class="clearfix"></div>
3320</header>
3321            <noscript>
3322        <div class="global-site-notice noscript">
3323            <div class="notice-inner">
3324                <p>
3325                    <strong>JavaScript seems to be disabled in your browser.</strong><br />
3326                    You must have JavaScript enabled in your browser to utilize the functionality of this website.                </p>
3327            </div>
3328        </div>
3329    </noscript>
3330
3331         <style></style><div id="__nuxt"><div><main id="custom-page-main-content" data-gjs-type="content"><section data-gradient-type="none" id="section-blog-posts" gradienttype="none" data-gjs-type="section-blog-posts"><div class="section-container" data-gjs-type="section-container"><!--[--><div class="wm-blog-posts side-image" style="--columns:2;--column-gap:20px;--row-gap:20px;"><h1 class="wm-blog-posts__heading">Blog</h1><!--[--><div class="wm-blog-posts__item"><a href="https://florasavage.net/blog/chapter-2-2705/" class="wm-blog-posts__image-link"><img src="https://asset.bloomnation.com/image/upload/v1769099345/bloomnation/bn-thumbnail.webp" alt="Chapter 2" class="wm-blog-posts__image" style="border-top-left-radius:0px;border-bottom-left-radius:0px;" loading="lazy"></a><div class="wm-blog-posts__content" style="border-top-right-radius:0px;border-bottom-right-radius:0px;"><time class="wm-blog-posts__date" datetime="2025-07-17 19:34:16">07/17/2025</time><a href="https://florasavage.net/blog/chapter-2-2705/" class="wm-blog-posts__title">Chapter 2</a><p class="wm-blog-posts__excerpt">Chapter 2 It was August in New Orleans, where tempers were short and apathy long. Business was seasonally slow. So after Ilsa got through the shop’s morning...</p><a href="https://florasavage.net/blog/chapter-2-2705/" class="wm-blog-posts__read-more"> Read More </a></div></div><div class="wm-blog-posts__item"><a href="https://florasavage.net/blog/the-fat-ballerina-flower-shop-chapter-one-270
33315/" class="wm-blog-posts__image-link"><img src="https://asset.bloomnation.com/f_auto,q_auto/v1/vendor/2705/blog/e/n/enhanced-21018-1439475923-1.jpg" alt="The Fat Ballerina Flower Shop: Chapter One" class="wm-blog-posts__image" style="border-top-left-radius:0px;border-bottom-left-radius:0px;" loading="lazy"></a><div class="wm-blog-posts__content" style="border-top-right-radius:0px;border-bottom-right-radius:0px;"><time class="wm-blog-posts__date" datetime="2017-06-01 17:46:29">06/01/2017</time><a href="https://florasavage.net/blog/the-fat-ballerina-flower-shop-chapter-one-2705/" class="wm-blog-posts__title">The Fat Ballerina Flower Shop: Chapter One</a><p class="wm-blog-posts__excerpt">The Fat Ballerina Flower Shop: by Suzy Black Chapter One Spring in New Orleans meant optimism, and optimism translated into flower sales. For men it was a...</p><a href="https://florasavage.net/blog/the-fat-ballerina-flower-shop-chapter-one-2705/" class="wm-blog-posts__read-more"> Read More </a></div></div><!--]--></div><div style="display:none;">
3331<script type="application/ld+json">{"@context":"https://schema.org/","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"BlogPosting","headline":"Chapter 2","url":"https://florasavage.net/blog/chapter-2-2705/","datePublished":"2025-07-17 19:34:16","author":{"@type":"Organization","@id":"https://florasavage.net/#florist","name":"Flora Savage"},"description":"Chapter 2 It was August in New Orleans, where tempers were short and apathy long. Business was seasonally slow. So after Ilsa got through the shop’s morning..."}},{"@type":"ListItem","position":2,"item":{"@type":"BlogPosting","headline":"The Fat Ballerina Flower Shop: Chapter One","url":"https://florasavage.net/blog/the-fat-ballerina-flower-shop-chapter-one-2705/","datePublished":"2017-06-01 17:46:29","author":{"@type":"Organization","@id":"https://florasavage.net/#florist","name":"Flora Savage"},"description":"The Fat Ballerina Flower Shop: by Suzy Black Chapter One Spring in New Orleans meant optimism, and optimism translated into flower sales. For men it was a...","image":"https://asset.bloomnation.com/f_auto,q_auto/v1/vendor/2705/blog/e/n/enhanced-21018-1439475923-1.jpg"}}]}</script>
3331</div><!--]--></div></section></main></div></div>
3331<script src="https://recaptcha.net/recaptcha/enterprise.js?render=6LcekH4oAAAAAPgpX9mYKeWkz_ahsVAxMZcI2JYd" async defer></script>
3331<script>window.PS_CONFIG = {"graphqlUrl":"/api/graphql/premiumsite"};</script>
3331<script type="module" src="https://promfiles.com/bloom/dist/js/ps-site-components.e860cdc395b4a676.csr.js" defer></script>
3331
3332                <section id="footer" class="footer-inner">
3333        <div class="social_media footer-social_media">
3334            
3335            
3336            <div class="row social-innerContainer">
3337                                    <a href="https://www.instagram.com/florasavage/" target="_new"
3338                       class="instagram footer-socialItem" aria-label="visit our Instagram page">
3339                        <span class="footer-socialName">Instagram </span>
3340                        <img src="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/images/pages/footer/social/home/instagram.6ebb7516.svg" alt="" />
3341                    </a>
3342                
3343                                    <a href="https://www.facebook.com/FloraSavage" target="_new"
3344                       class="facebook footer-socialItem" aria-label="visit our Facebook page">
3345                        <span class="footer-socialName">Facebook </span>
3346                        <img src="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/images/pages/footer/social/home/facebook.72c20f3c.svg" alt="" />
3347                    </a>
3348                
3349                
3350                
3351                                    <a href="https://www.pinterest.com/florasavage13/" target="_new"
3352                       class="pinterest footer-socialItem" aria-label="visit our Pinterest page">
3353                        <span class="footer-socialName">Pinterest </span>
3354                        <img src="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/images/pages/footer/social/home/pinterest.dc6bd10d.svg" alt="" />
3355                    </a>
3356                
3357                                    <a href="https://www.google.com/maps?cid=8856762549799062052" target="_new"
3358                       class="googleplaces footer-socialItem" aria-label="visit our Google page">
3359                        <span class="footer-socialName">Google</span>
3360                        <img src="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/images/pages/footer/social/home/google.9795e4d3.svg" alt="" />
3361                    </a>
3362                
3363                                    <a href="https://www.yelp.com/biz/flora-savage-new-orleans" target="_new"
3364                       class="yelp footer-socialItem" aria-label="visit our Yelp page">
3365                        <span class="footer-socialName">Yelp </span>
3366                        <img src="https://promfiles.com/bloom/dist/frontend/premiumsites/bloom/images/pages/footer/social/home/yelp.3792410e.svg" alt="" />
3367                    </a>
3368                
3369                
3370                
3371                
3372                <div class="clearfix visible-xs visible-sm"><br/></div>
3373
3374                                    <div class="poweredbybloomnation bloomnationRep col-xs-12 col-sm-12 col-md-12">
3375                        <div class="member_of_bloomnation_wrapper">
3376                            <a href="https://florasavage.net/about-us/" class="member_of_bloomnation">
3377                                <span class="bloomnationRep-text">Premier florist on</span>
3378                            </a>
3379                            <a href="https://www.bloomnation.com/" class="member_of_bloomnation_link" aria-label="BloomNation Home Page">
3380                                <img class="bloomnationRep-img"
3381                                     src="https://asset.bloomnation.com/v1/bloomnation/black_horizontal_logo.svg"
3382                                     alt="BloomNation Member"
3383                                     loading="lazy"
3384                                     width="156"
3385                                     height="23"
3386                                />
3387                            </a>
3388                        </div>
3389                    </div>
3390                            </div>
3391        </div>
3392
3393                <div class="footer-more_information footer-info">
3394            <div class="footer-info__locations">
3395                                    <div class="footer-info__location">
3396                        <div class="footer-info__col footer-info__col--address footer-infoItem footer-infoItem--address">
3397                                                            <h4 class="footer-info__heading infoItem-header infoItem-header--store">Location</h4>
3398                                                                                                                        <p class="footer-info__address infoItem-text">
3399                                                                            <a href="https://www.google.com/maps/dir/?api=1&origin=&destination=1301+Royal+St.+%2C+New+Orleans%2C+LA%2C+70116" target="_blank">1301 Royal St.<br>New Orleans, LA 70116<span class="sr-only">
3399(link opens in a new window)</span></a>
3400                                                                    </p>
3401                                                    </div>
3402                        <div class="footer-info__col footer-info__col--contact footer-infoItem footer-infoItem--email">
3403                                                            <h4 class="footer-info__heading infoItem-header infoItem-header--email">Contact</h4>
3404                                                                                        <p class="infoItem-text infoItem-text--phone"><a href="tel:5045814728">(504) 581-4728</a></p>
3405                                                                                        <p class="infoItem-text infoItem-text--email"><a href="mailto:[email protected]">[email protected]</a></p>
3406                                                    </div>
3407                    </div>
3408                            </div>
3409
3410            <div class="footer-info__hours footer-infoItem footer-infoItem--hours">
3411                <h4 class="footer-info__heading infoItem-header infoItem-header--hours">Hours</h4>
3412                <div class="footer-info__hours-grid store-contact__column store-contact__column--hours store-hours">
3413                                                                    <span class="footer-info__hours-day store-hours__label">Monday</span>
3414                        <span class="footer-info__hours-time">10 AM - 5 PM</span>
3415                                                                    <span class="footer-info__hours-day store-hours__label">Tuesday</span>
3416                        <span class="footer-info__hours-time">10 AM - 5 PM</span>
3417                                                                    <span class="footer-info__hours-day store-hours__label">Wednesday</span>
3418                        <span class="footer-info__hours-time">10 AM - 5 PM</span>
3419                                                                    <span class="footer-info__hours-day store-hours__label">Thursday</span>
3420                        <span class="footer-info__hours-time">10 AM - 5 PM</span>
3421                                                                    <span class="footer-info__hours-day store-hours__label">Friday</span>
3422                        <span class="footer-info__hours-time">10 AM - 5 PM</span>
3423                                                                <span class="footer-info__hours-day store-hours__label">Saturday</span>
3424                        <span class="footer-info__hours-time">10 AM - 3 PM</span>
3425                                            <span class="footer-info__hours-day store-hours__label">Sunday</span>
3426                        <span class="footer-info__hours-time">Closed</span>
3427                                    </div>
3428            </div>
3429        </div>
3430
3431        <section id="super-footer">
3432            <div class="footer-block footer-copyright">
3433                <div id="copyright-info" class="copyright__links">
3434            <a class="copyright__link copyright__faq-link"
3435            href="https://florasavage.net/faq/"
3436        >
3437            FAQs
3438        </a>
3439        <span>&middot;</span>
3440    
3441    <a class="copyright__link"
3442       href="https://florasavage.net/terms-of-service/"
3443    >
3444        Terms of Service
3445    </a>
3446    <span>&middot;</span>
3447
3448    <a class="copyright__link"
3449       href="https://florasavage.net/privacy-policy/"
3450    >
3451        Privacy Policy
3452    </a>
3453    <span>&middot;</span>
3454
3455    <a class="copyright__link"
3456       href="https://florasavage.net/policies/"
3457    >
3458        Policies
3459    </a>
3460    <span>&middot;</span>
3461
3462            <a class="copyright__link"
3463           href="https://florasavage.net/where-we-deliver"
3464        >
3465            Where We Deliver
3466        </a>
3467        <span>&middot;</span>
3468    
3469    <a class="copyright__link"
3470       href="https://florasavage.net/accessibility-statement/"
3471    >
3472        Accessibility
3473    </a>
3474    <span>&middot;</span>
3475
3476    <a class="copyright__link"
3477        href="/sitemap/"
3478    >
3479        Sitemap
3480    </a>
3481    <p class="copyright__all-rights-reserved">All Rights Reserved &copy;</p>
3482</div>
3483            </div>
3484        </section>
3485
3486        
3487    </section>
3488    <!-- [START] Custom HTML --><!-- [END] Custom HTML -->
3488<script>
3489window.dataLayer = window.dataLayer || [];
3490
3491</script>
3491 <div class="announcement" style="display: none">
3492    <div class="announcement-bg"></div>
3493    <div class="splash">
3494        <div class="splash-wrapper">
3495            <div>
3496                <span style="color: rgba(0,0,0,0.75);letter-spacing: -0.1em;font-weight: 400;font-size: 20px;line-height: 1.15;">Your browser is not supported</span>
3497            </div>
3498        </div>
3499    </div>
3500</div>
3501                    
3501<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"0ac16663c3","applicationID":"6732204,2307825","transactionName":"YFIHZkFZXxAEUhUIDlkYJkdATF4OSlMNDg5aaAZfQBdCChFUMQAGUhgTW1ZP","queueTime":0,"applicationTime":283,"atts":"TBUQEAlDTE9HUENbGkpK","errorBeacon":"bam.nr-data.net","agent":""}</script>
3501</body>
3502</html>

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