.elementor-kit-8{--e-global-color-primary:#1A1022;--e-global-color-secondary:#5F5570;--e-global-color-text:#1A1022;--e-global-color-accent:#5D179E;--e-global-color-bgalt:#F5F2FA;--e-global-color-surface:#FFFFFF;--e-global-color-line:#E2D6EF;--e-global-color-linestrong:#B9A2D6;--e-global-color-deep:#2A0A55;--e-global-color-deep2:#1C0439;--e-global-color-ondeepink:#FFFFFF;--e-global-color-ondeepsoft:#C6BAD8;--e-global-color-ondeeplink:#D9CEEA;--e-global-color-ondeepfaint:#9A8CB4;--e-global-color-brandviolet:#5D179E;--e-global-typography-primary-font-family:"Archivo";--e-global-typography-primary-font-weight:700;--e-global-typography-primary-letter-spacing:-0.01em;--e-global-typography-secondary-font-family:"Archivo";--e-global-typography-secondary-font-weight:800;--e-global-typography-text-font-family:"Inter";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"IBM Plex Mono";--e-global-typography-accent-font-weight:700;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-accent-letter-spacing:0.14em;--e-global-typography-eyebrow-font-family:"IBM Plex Mono";--e-global-typography-eyebrow-font-size:12.5px;--e-global-typography-eyebrow-font-weight:700;--e-global-typography-eyebrow-text-transform:uppercase;--e-global-typography-eyebrow-letter-spacing:0.14em;--e-global-typography-quote-font-family:"Archivo";--e-global-typography-quote-font-weight:400;--e-global-typography-quote-font-style:italic;color:#1A1022;font-family:"Inter", Sans-serif;font-size:16px;font-weight:400;line-height:1.55em;}.elementor-kit-8 e-page-transition{background-color:#FFBC7D;}.elementor-kit-8 a{color:#1A1022;}.elementor-kit-8 a:hover{color:#3A0877;}.elementor-kit-8 h1{color:#1A1022;font-family:"Archivo", Sans-serif;font-size:64px;font-weight:700;line-height:1.03em;letter-spacing:-0.01em;}.elementor-kit-8 h2{color:#1A1022;font-family:"Archivo", Sans-serif;font-size:42px;font-weight:700;line-height:1.1em;letter-spacing:-0.01em;}.elementor-kit-8 h3{color:#1A1022;font-family:"Archivo", Sans-serif;font-size:19px;font-weight:700;line-height:1.3em;letter-spacing:-0.01em;}.elementor-kit-8 h4{color:#1A1022;font-family:"Archivo", Sans-serif;font-size:17px;font-weight:700;line-height:1.3em;letter-spacing:-0.01em;}.elementor-kit-8 h5{color:#1A1022;font-family:"Archivo", Sans-serif;font-size:15px;font-weight:700;line-height:1.3em;letter-spacing:-0.01em;}.elementor-kit-8 h6{color:#1A1022;font-family:"Archivo", Sans-serif;font-size:13px;font-weight:700;line-height:1.3em;letter-spacing:-0.01em;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1180px;}.e-con{--container-max-width:1180px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-kit-8 h1{font-size:44px;}.elementor-kit-8 h2{font-size:34px;}.elementor-kit-8 h3{font-size:18px;}.elementor-kit-8 h4{font-size:16px;}.elementor-kit-8 h5{font-size:15px;}.elementor-kit-8 h6{font-size:13px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-8 h1{font-size:38px;}.elementor-kit-8 h2{font-size:28px;}.elementor-kit-8 h3{font-size:18px;}.elementor-kit-8 h4{font-size:16px;}.elementor-kit-8 h5{font-size:15px;}.elementor-kit-8 h6{font-size:13px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* ===== Octopus Movers — design-system layer =====
   Only what Elementor's native controls cannot express:
   pseudo-elements, clip-path, object-fit/aspect-ratio, sticky glass, hover transforms.
   Everything else (color, spacing, type, borders) stays editable in the Elementor panel. */

:root{
  --om-ink:#1A1022; --om-ink-soft:#5F5570; --om-bg:#FFFFFF; --om-bg-rgb:255,255,255;
  --om-bg-alt:#F5F2FA; --om-line:rgba(93,23,158,.16); --om-line-strong:rgba(93,23,158,.34);
  --om-accent:#5D179E; --om-accent-dark:#3A0877; --om-accent-ink:#FFFFFF;
  --om-on-deep-soft:#C6BAD8; --om-on-deep-line:rgba(255,255,255,.14);
  --om-on-deep-line-strong:rgba(255,255,255,.4); --om-on-deep-wash:rgba(255,255,255,.08);
  --om-shadow-card:0 1px 3px rgba(42,10,85,.09), 0 10px 26px -14px rgba(42,10,85,.34);
  --om-r-sm:4px; --om-r-md:9px;
}
body{overflow-x:clip}

/* ---- eyebrow: leading rule ---- */
.om-eyebrow .elementor-heading-title::before{
  content:"";display:inline-block;width:22px;height:2px;background:currentColor;
  margin-right:.6em;vertical-align:middle;
}

/* ---- buttons ---- */
.om-btn .elementor-button{
  display:inline-flex;align-items:center;gap:10px;white-space:nowrap;
  transition:background .2s ease,border-color .2s ease,transform .18s ease,color .2s ease;
}
.om-btn .elementor-button:hover{transform:translateY(-2px)}
.om-btn .elementor-button:active{transform:translateY(0)}
/* signature shipping-tag notch */
.om-btn-tag .elementor-button{
  clip-path:polygon(10px 0,100% 0,100% 100%,10px 100%,0 50%);
  padding-left:26px;
}
.om-btn-ghost .elementor-button{padding:0;background:transparent}
.om-btn-ghost .elementor-button:hover{transform:none}
.om-btn-ghost .elementor-button svg{transition:transform .15s ease}
.om-btn-ghost .elementor-button:hover svg{transform:translateX(3px)}

/* ---- cards: hover lift ---- */
.om-card{transition:transform .22s ease,box-shadow .22s ease,border-color .18s ease}
.om-card:hover{transform:translateY(-4px);box-shadow:var(--om-shadow-card);border-color:var(--om-line-strong)}
.om-tier-popular{transform:translateY(-8px)}
.om-tier-popular:hover{transform:translateY(-12px)}
@media(max-width:900px){.om-tier-popular{transform:none}}

/* ---- media: cover-fill inside fixed ratios ---- */
.om-ratio img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
.om-r-4-5   img{aspect-ratio:4/5}
.om-r-4-84  img{aspect-ratio:4/8.4}
.om-r-1-1   img{aspect-ratio:1/1}
.om-r-2-1   img{aspect-ratio:2/1}
.om-r-5-4   img{aspect-ratio:5/4}
.om-r-16-10 img{aspect-ratio:16/10}
.om-r-4-18  img{aspect-ratio:4/1.8}
.om-zoom img{transition:transform .3s ease}
.om-zoom:hover img{transform:scale(1.015)}

/* ---- photo hero: grayscale bed + directional wash ---- */
/* luminosity blend against a grey ground desaturates the background image */
.om-photo-hero{position:relative;overflow:hidden;background-blend-mode:luminosity;background-color:#9a9a9a}
.om-photo-hero > .e-con-inner{position:relative;z-index:1}
.om-hero-bg{position:absolute;inset:0;z-index:0;pointer-events:none}
.om-hero-bg img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.05)}
.om-hero-bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(var(--om-bg-rgb),.97) 0%,rgba(var(--om-bg-rgb),.93) 34%,
             rgba(var(--om-bg-rgb),.55) 64%,rgba(var(--om-bg-rgb),.22) 100%);
}
.om-photo-hero > .e-con-inner,.om-photo-hero > .e-con{position:relative;z-index:1}

/* ---- vertical rules between borderless columns ---- */
.om-col-rules > .e-con:not(:first-child),
.om-col-rules > .elementor-element:not(:first-child){border-left:1px solid var(--om-line)}
@media(max-width:900px){
  .om-col-rules > .e-con:not(:first-child),
  .om-col-rules > .elementor-element:not(:first-child){
    border-left:0;border-top:1px solid var(--om-line);
  }
}
/* ribbon cells */
.om-ribbon-row > .e-con:not(:first-child){border-left:1px solid var(--om-on-deep-line)}
@media(max-width:900px){
  .om-ribbon-row > .e-con:nth-child(odd){border-left:0}
  .om-ribbon-row > .e-con:nth-child(-n+2){border-bottom:1px solid var(--om-on-deep-line)}
}
@media(max-width:560px){
  .om-ribbon-row > .e-con{border-left:0 !important;border-top:1px solid var(--om-on-deep-line)}
  .om-ribbon-row > .e-con:first-child{border-top:0}
  .om-ribbon-row > .e-con:nth-child(-n+2){border-bottom:0}
}

/* ---- dashed tear edge (packing-tape motif) ---- */
.om-tear{border-bottom:1px dashed var(--om-line-strong)}
.om-tear-top{border-top:1px dashed var(--om-line-strong)}
.om-dashed{border:1px dashed var(--om-line-strong)}

/* ---- glass surfaces ---- */
.om-glass{
  background:rgba(var(--om-bg-rgb),.70);
  -webkit-backdrop-filter:blur(18px) saturate(160%);
  backdrop-filter:blur(18px) saturate(160%);
}

/* ---- sticky glass header ---- */
.om-header{
  position:sticky;top:0;z-index:100;
  background:rgba(var(--om-bg-rgb),0);
  -webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);
  border-bottom:1px solid transparent;
  transition:background .45s cubic-bezier(.22,.61,.36,1),backdrop-filter .45s cubic-bezier(.22,.61,.36,1),
             border-color .45s ease,box-shadow .45s ease;
}
.om-header.om-glassed{
  background:rgba(var(--om-bg-rgb),.66);
  -webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%);
  border-bottom-color:var(--om-line);
  box-shadow:0 8px 30px -18px rgba(0,0,0,.35);
}
.om-brand-word{font-family:Archivo,sans-serif;font-weight:900;font-size:19px;line-height:1;letter-spacing:-.01em}
.om-brand-word small{
  display:block;font-family:'IBM Plex Mono',monospace;font-weight:400;font-size:9.5px;
  letter-spacing:.14em;color:var(--om-ink-soft);margin-top:4px;text-transform:uppercase;
}
.om-brand img{border-radius:50%;object-fit:cover}

/* ---- callout: accent bar quote ---- */
.om-callout{border-left:3px solid var(--om-accent);padding-left:18px}
.om-callout p{font-family:Archivo,sans-serif;font-style:italic;line-height:1.5;margin:0}

/* ---- compare table ---- */
.om-compare table{width:100%;border-collapse:collapse;min-width:640px;background:#fff}
.om-compare th,.om-compare td{
  padding:16px 20px;text-align:left;border-bottom:1px solid var(--om-line);
  font-size:14.5px;color:var(--om-ink-soft);vertical-align:top;
}
.om-compare th{background:var(--om-bg-alt);font-family:Archivo,sans-serif;font-weight:700;color:var(--om-ink);font-size:15px}
.om-compare td:first-child,.om-compare th:first-child{
  font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.04em;
  text-transform:uppercase;white-space:nowrap;
}
.om-compare tbody tr:last-child td,.om-compare tbody tr:last-child th{border-bottom:none}
.om-scroll-x{overflow-x:auto}

/* ---- FAQ accordion ---- */
.om-faq .e-n-accordion-item{border-bottom:1px solid var(--om-line)}
.om-faq .e-n-accordion-item:first-child{border-top:1px solid var(--om-line)}
.om-faq summary{padding:20px 4px}
.om-faq .om-faq-a p{color:var(--om-ink-soft);font-size:15px;max-width:640px}

/* ---- sticky sidebars ---- */
.om-sticky{position:sticky;top:100px}
@media(max-width:900px){.om-sticky{position:static}}

/* ---- mobile sticky CTA bar ---- */
.om-mobile-cta{display:none !important}
@media(max-width:640px){
  .om-mobile-cta{
    display:flex !important;position:fixed;left:0;right:0;bottom:0;z-index:60;width:100%;
    border-top:1px solid var(--om-line-strong);box-shadow:0 -6px 20px rgba(0,0,0,.12);
    padding-bottom:env(safe-area-inset-bottom,0);
  }
  .om-mobile-cta .elementor-button{width:100%;justify-content:center;border-radius:0}
  /*body{padding-bottom:56px}*/
}

/* ---- reveal on scroll ---- */
.om-reveal{opacity:0;transform:translateY(26px) scale(.985);filter:blur(10px);
  transition:opacity .8s cubic-bezier(.22,.61,.36,1),transform .8s cubic-bezier(.22,.61,.36,1),filter .8s cubic-bezier(.22,.61,.36,1)}
.om-reveal.om-in{opacity:1;transform:none;filter:none}
@media (prefers-reduced-motion:reduce){
  .om-reveal{opacity:1;transform:none;filter:none;transition:none}
  .om-header{transition:none}
}

/* ---- forms (Elementor Pro Form styled as a shipping label) ---- */
.om-quote-form .elementor-field-group > label{
  font-size:12.5px;font-weight:700;margin-bottom:6px;letter-spacing:.02em;color:var(--om-ink);
}
.om-quote-form .elementor-field-textual{
  padding:11px 13px;border:1.5px solid var(--om-line-strong);border-radius:var(--om-r-sm);
  background:var(--om-bg);color:var(--om-ink);font-size:14.5px;
}
.om-quote-form .elementor-field-textual:focus{border-color:var(--om-accent);outline:none}
.om-quote-form .elementor-button{
  width:100%;justify-content:center;
  clip-path:polygon(10px 0,100% 0,100% 100%,10px 100%,0 50%);padding-left:26px;
}

/* ---- misc ---- */
.om-chip{border-radius:100px}
.om-hidden-desktop{display:none}
@media(max-width:900px){.om-hidden-desktop{display:block}}


/* ---- header: keep the nav on one line, give it room ---- */
.om-header .e-n-menu-heading{flex-wrap:nowrap}
.om-header .e-n-menu{width:auto}
.om-header .om-header-phone .elementor-button{background:transparent;padding:0}
.om-header .om-brand-row{text-decoration:none}
@media(max-width:900px){
  .om-header .om-brand-word{font-size:17px}
}

/* ---- back to top ---- */
.om-back-to-top{
  position:fixed !important;right:22px;bottom:22px;z-index:90;width:auto !important;
}
.om-back-to-top .elementor-button{
  width:46px;height:46px;padding:0 !important;border-radius:50% !important;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 10px 26px -10px rgba(0,0,0,.4);clip-path:none !important;
}
.om-back-to-top .elementor-button-text{display:none}
@media(max-width:640px){.om-back-to-top{bottom:72px}}

/* ---- footer link lists: no bullet icons ---- */
.om-footer-links .elementor-icon-list-icon{display:none}
.om-footer-links .elementor-icon-list-text{padding-inline-start:0 !important}

/* ---- mega panel links ---- */
.om-header .elementor-icon-list-item > a{padding:9px 8px;border-radius:4px}
.om-header .elementor-icon-list-item > a:hover{background:var(--om-bg-alt)}

/* ---- tentacle: signature hand-drawn underline ---- */
.om-tentacle{
  height:14px !important;width:120px;margin-top:10px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 20' fill='none' stroke='%23121212' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M2 10c14-12 24 12 38 2s24-14 38-2 24 12 38 2 24-14 38-2 24 12 42 0'/%3E%3C/svg%3E") no-repeat left center/contain;
}
.om-tentacle-light{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 20' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M2 10c14-12 24 12 38 2s24-14 38-2 24 12 38 2 24-14 38-2 24 12 42 0'/%3E%3C/svg%3E");
}
.om-tentacle-center{background-position:center center;margin-inline:auto}

/* ---- pricing tier badge ---- */
.om-tier{position:relative}
.om-tier-badge{
  position:absolute;top:-13px;left:26px;background:#1A1022;color:#fff;
  padding:5px 12px;border-radius:100px;margin:0 !important;
}
.om-tier .elementor-icon-list-icon{align-self:flex-start;margin-top:3px}

/* ---- media wrappers keep rounded corners ---- */
.om-media{overflow:hidden}
.om-media img{border-radius:0}

/* ---- icon grid card hover ---- */
.om-icon-card:hover{border-color:#1A1022 !important;transform:translateY(-2px)}

/* ---- breadcrumb ---- */
.om-breadcrumb a:hover{color:#1A1022;text-decoration:underline !important}

/* ---- Elementor Pro Form: shipping-label styling ---- */
.om-quote-form .elementor-form-fields-wrapper{margin-inline:-6px}
.om-quote-form .elementor-field-group{padding-inline:6px;margin-bottom:14px}
.om-quote-form .elementor-field-group.elementor-field-type-submit{margin-top:6px}
.om-quote-form select.elementor-field-textual{
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235A5D5F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;background-size:16px;
  padding-right:36px;
}
.om-form-tag{
  display:flex;justify-content:space-between;gap:12px;
  padding-bottom:14px;margin-bottom:18px;
  border-bottom:1px dashed var(--om-line-strong);
}
.om-form-tag span{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--om-ink-soft);
}

/* ---- before / after pair ---- */
.om-ba-before{border-right:1px dashed var(--om-line-strong)}
.om-compare table td.rec,.om-compare table th.rec{background:var(--om-bg-alt)}

/* ---- FAQ filter + jump list ---- */
.om-faq-filter-btn .elementor-button{transition:background .15s ease,color .15s ease,border-color .15s ease}
.om-faq-filter-btn .elementor-button:hover{border-color:#000;transform:none}
.om-faq-row[hidden]{display:none !important}
.om-cat-heading[data-empty="true"]{display:none}
.om-cat-heading{scroll-margin-top:100px}
.om-jump-list .elementor-icon-list-item{
  border-bottom:1px solid var(--om-line);padding:11px 4px;
  display:flex;justify-content:space-between;
}
.om-jump-list .elementor-icon-list-item > a{
  display:flex;align-items:center;justify-content:space-between;width:100%;
  flex-direction:row-reverse;
}
.om-jump-list .elementor-icon-list-text{padding-inline-start:0 !important}
/* single-item FAQ rows read as one continuous list */
.om-faq-row + .om-faq-row .om-faq .e-n-accordion-item:first-child{border-top:0}

/* ---- newsletter row ---- */
.om-newsletter .elementor-field-group{margin-bottom:0}

/* ---- header at small widths: phone collapses to its icon (matches the source design) ---- */
@media (max-width:900px){
  .om-header .om-header-phone .elementor-button-text{display:none}
  .om-header .om-header-phone .elementor-button-icon{margin:0 !important}
  .om-header .e-con-inner{gap:12px}
}
@media (max-width:520px){
  .om-header .om-brand-word small{display:none}
  .om-header .om-brand-word{font-size:15px}
  .om-header .om-brand img{width:36px}
  .om-header .om-btn-primary .elementor-button{padding:10px 14px 10px 20px;font-size:13.5px}
  .om-header .e-con-inner{gap:8px;padding-inline:14px}
}
/* long words never force a horizontal scrollbar */
.e-con, .elementor-widget-text-editor, .elementor-widget-heading{min-width:0}

/* ---- FAQ accordion: hairline list, no card chrome ---- */
.om-faq .e-n-accordion-item,
.om-faq details.e-n-accordion-item{
  background:transparent !important;border-radius:0 !important;
  border:0 !important;border-bottom:1px solid var(--om-line) !important;
}
.om-faq .e-n-accordion-item:first-child{border-top:1px solid var(--om-line) !important}
.om-faq summary,
.om-faq .e-n-accordion-item-title{
  background:transparent !important;padding:20px 4px !important;
  border-radius:0 !important;
}
.om-faq .e-n-accordion-item-title-text{font-weight:700}
.om-faq .e-n-accordion-item-title-icon{color:#000}
/* consecutive single-item rows read as one continuous list */
.om-faq-row + .om-faq-row .om-faq .e-n-accordion-item:first-child{border-top:0 !important}
/* chevron sits at the far right of the row */
.om-faq summary.e-n-accordion-item-title{
  display:flex !important;justify-content:space-between !important;
  align-items:center;gap:16px;width:100%;
}
.om-faq .e-n-accordion-item-title-header{flex:1 1 auto;min-width:0}
.om-faq .e-n-accordion-item-title-icon{flex:0 0 auto;margin-inline-start:auto}

/* ---- mobile navigation drawer (matches the source design's glass slide-in) ---- */
@media (max-width:900px){
  .om-header .e-n-menu-wrapper{
    position:fixed !important;
    inset:0 0 0 auto !important;
    width:min(320px,84vw) !important;
    height:100dvh !important;
    max-height:100dvh;
    overflow-y:auto;
    background:#fff !important;              /* fallback: fully opaque */
    -webkit-backdrop-filter:blur(20px) saturate(160%);
    backdrop-filter:blur(20px) saturate(160%);
    border-left:1px solid var(--om-line);
    box-shadow:-16px 0 32px rgba(0,0,0,.14);
    padding:88px 20px 32px !important;
    z-index:120;
  }
  .om-header .e-n-menu-heading{
    flex-direction:column !important;align-items:stretch !important;gap:4px;width:100%;
  }
  .om-header .e-n-menu-item{width:100%}
  .om-header .e-n-menu-title{padding:12px 12px;font-size:16px;width:100%}
  .om-header .e-n-menu-title-container{width:100%}
  /* dropdown panels flatten into the drawer, no card chrome */
  .om-header .e-n-menu-content > .e-con{
    background:transparent !important;border:0 !important;box-shadow:none !important;
    padding:0 0 8px 12px !important;min-width:0 !important;width:100% !important;
  }
  .om-header .e-n-menu-content .om-btn-ghost{display:none}
  .om-header .e-n-menu-content .elementor-divider{display:none}
  /* keep the toggle above the drawer so it can be closed again */
  .om-header .e-n-menu-toggle{position:relative;z-index:130}

  /* frosted glass only where the browser can actually blur behind it */
  @supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
    .om-header .e-n-menu-wrapper{background:rgba(255,255,255,.82) !important}
  }
}








/* ================================================================
   FLUID GLASS u2014 motion + interaction layer
   Palette sampled from the Octopus Movers badge; interaction
   vocabulary after fluid.glass (a trailing glass lens that names
   what it is over, label swap on hover, the corner arrow).

   Additive only. It reuses the build's own conventions rather than
   introducing rivals: .om-glassed for the scrolled header, .om-in
   for revealed state, and z-index 0 for hero underlays so the
   existing .e-con-inner (z-index 1) still sits on top.
   ================================================================ */
:root{
  --om-sheen:rgba(255,255,255,.92);
  --om-sheen-soft:rgba(255,255,255,.45);
  --om-caustic-light:rgba(255,255,255,.95);
  --om-caustic-ink:rgba(93,23,158,.20);
  --om-ease-fluid:cubic-bezier(.22,.61,.36,1);
  --om-violet:#5D179E;
  --om-violet-rgb:93,23,158;
}

@keyframes om-glass-sweep{
  0%{transform:translate3d(-150%,0,0) skewX(-14deg)}
  72%{transform:translate3d(150%,0,0) skewX(-14deg)}
  100%{transform:translate3d(150%,0,0) skewX(-14deg)}
}
@keyframes om-hero-current{
  0%{transform:translate3d(-60%,0,0) skewX(-12deg);opacity:0}
  12%{opacity:.85} 82%{opacity:.85}
  100%{transform:translate3d(240%,0,0) skewX(-12deg);opacity:0}
}
@keyframes om-caustic-a{
  0%,100%{transform:translate3d(0,0,0) scale(1)}
  34%{transform:translate3d(-26%,17%,0) scale(1.42)}
  67%{transform:translate3d(22%,-14%,0) scale(.72)}
}
@keyframes om-caustic-b{
  0%,100%{transform:translate3d(0,0,0) scale(1.05)}
  40%{transform:translate3d(28%,-20%,0) scale(.7)}
  72%{transform:translate3d(-19%,21%,0) scale(1.5)}
}
@keyframes om-tentacle-swim{
  0%,100%{transform:scaleY(1) translateY(0)}
  25%{transform:scaleY(1.6) translateY(-1.4px)}
  50%{transform:scaleY(.5) translateY(1.4px)}
  75%{transform:scaleY(1.4) translateY(-.7px)}
}
@keyframes om-buoy{
  0%,100%{transform:translate3d(0,0,0)}
  50%{transform:translate3d(0,-9px,0)}
}

/* Every overlay below is an INJECTED CHILD ELEMENT, never a pseudo-element.
   The build already owns ::before / ::after on these blocks u2014 .om-photo-hero
   ::before carries the hero's white legibility scrim u2014 and redefining one
   silently rewrites its geometry. Child elements cannot collide. */

/* ---- header: a specular band crossing the glass once it sets ---- */
.om-header{position:relative}
.om-header-sheen{
  position:absolute;inset:0;z-index:0;pointer-events:none;opacity:0;
  transition:opacity .6s var(--om-ease-fluid);
  background:linear-gradient(100deg,transparent 34%,var(--om-sheen-soft) 45%,
    var(--om-sheen) 50%,var(--om-sheen-soft) 55%,transparent 66%);
  mix-blend-mode:soft-light;
}
.om-header.om-glassed .om-header-sheen{opacity:.85}

/* ---- hero: caustics and a travelling current, beneath the copy ---- */
.om-caustic{
  position:absolute;z-index:0;pointer-events:none;border-radius:50%;
  filter:blur(34px);will-change:transform;
}
.om-caustic-a{
  right:6%;top:-14%;width:46vw;max-width:620px;aspect-ratio:1;
  background:radial-gradient(closest-side,var(--om-caustic-light),transparent 72%);
}
.om-caustic-b{
  right:26%;bottom:-22%;width:34vw;max-width:460px;aspect-ratio:1;
  background:radial-gradient(closest-side,var(--om-caustic-ink),transparent 70%);
}
.om-hero-current{
  position:absolute;top:-30%;bottom:-30%;left:0;width:38%;z-index:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 0%,rgba(255,255,255,.28) 30%,
    rgba(255,255,255,.85) 50%,rgba(255,255,255,.28) 70%,transparent 100%);
  mix-blend-mode:soft-light;opacity:0;
}

/* ---- the porthole: a refraction that tracks the pointer ---- */
.om-quote-card{position:relative}
.om-porthole{
  position:absolute;inset:0;z-index:0;pointer-events:none;opacity:0;
  transition:opacity .45s var(--om-ease-fluid);
  background:radial-gradient(280px circle at var(--om-gx,50%) var(--om-gy,0%),
    rgba(255,255,255,.95) 0%,rgba(255,255,255,.5) 32%,
    rgba(93,23,158,.34) 64%,transparent 78%);
  mix-blend-mode:soft-light;
}
.om-quote-card.om-lit .om-porthole{opacity:1}

/* ---- brand violet on the primary calls to action ----
   The badge's violet is the identity; without it on the CTAs the page reads
   as near-black rather than as the logo. Primary buttons take the vivid
   violet, secondary dark buttons keep the deeper violet, so the two still
   read as a hierarchy. White on #5D179E is 10.1:1, on #3A0877 14.2:1.

   Elementor writes per-element rules like
   `.elementor-40 .elementor-element.elementor-element-xxx .elementor-button`,
   which outranks any sane class .elementor-kit-8 here, so this brand override is
   marked !important deliberately. It is confined to this block and comes off
   with it. */
.om-btn-primary .elementor-button,
.om-btn-primary.elementor-button{background-color:var(--om-violet) !important}
.om-btn-primary .elementor-button:hover,
.om-btn-primary .elementor-button:focus-visible,
.om-btn-primary.elementor-button:hover{background-color:#3A0877 !important}

/* ---- buttons: the corner arrow and the label swap ----
   The arrow is a hover affordance and it adds ~20px of inline width. These
   buttons are sized to their content and sit within a few px of the viewport
   edge on narrow screens, so an unconditional arrow pushes the page into
   horizontal scroll. Show it only where hover exists and there is room. */
.om-btn .om-corner{display:none}
@media (hover:hover) and (pointer:fine) and (min-width:1100px){
  .om-btn .om-corner{
    width:15px;height:12px;flex:0 0 auto;overflow:visible;margin-left:.55em;
    vertical-align:middle;display:inline-block;
    transition:transform .34s var(--om-ease-fluid);
  }
}
.om-btn:hover .om-corner,.om-btn:focus-visible .om-corner{transform:translateX(3px)}
.om-btn .om-corner path{
  stroke-dasharray:26;stroke-dashoffset:0;
  transition:stroke-dashoffset .5s var(--om-ease-fluid);
}
.om-btn:hover .om-corner path{stroke-dashoffset:52}

/* two stacked copies in one grid cell: no absolute positioning, sizes to text */
.om-swap{display:inline-grid;overflow:hidden;min-width:max-content;vertical-align:top}
.om-swap > span{grid-area:1/1;transition:transform .44s var(--om-ease-fluid)}
.om-swap .om-swap-b{transform:translateY(115%)}
.om-btn:hover .om-swap .om-swap-a,.om-btn:focus-visible .om-swap .om-swap-a{transform:translateY(-115%)}
.om-btn:hover .om-swap .om-swap-b,.om-btn:focus-visible .om-swap .om-swap-b{transform:translateY(0)}

/* ---- the glass lens ---- */
.om-cursor{
  position:fixed;left:0;top:0;z-index:9999;pointer-events:none;
  display:grid;place-items:center;
  width:var(--om-cw,22px);height:var(--om-ch,22px);border-radius:999px;
  background:linear-gradient(rgba(255,255,255,.15),rgba(255,255,255,.3));
  backdrop-filter:blur(18px) saturate(170%);
  -webkit-backdrop-filter:blur(18px) saturate(170%);
  border:1px solid rgba(var(--om-violet-rgb),.3);
  box-shadow:0 8px 24px -10px rgba(42,10,85,.55),inset 0 1px 0 rgba(255,255,255,.75);
  opacity:0;
  transition:width .34s var(--om-ease-fluid),height .34s var(--om-ease-fluid),
    opacity .22s linear,border-color .34s ease,background .34s ease;
  will-change:transform,width,height;
}
.om-cursor.om-awake{opacity:1}
.om-cursor.om-labelled{
  border-color:rgba(var(--om-violet-rgb),.5);
  background:linear-gradient(rgba(255,255,255,.28),rgba(255,255,255,.42));
}
.om-cursor .om-cursor-label{
  font-family:'IBM Plex Mono',ui-monospace,SFMono-Regular,Consolas,monospace;
  font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:#3A0877;opacity:0;transform:translateY(3px);white-space:nowrap;
  transition:opacity .2s ease,transform .28s var(--om-ease-fluid);
}
.om-cursor.om-labelled .om-cursor-label{opacity:1;transform:none}
.om-cursor.om-on-deep{border-color:rgba(255,255,255,.42);
  background:linear-gradient(rgba(255,255,255,.16),rgba(255,255,255,.24))}
.om-cursor.om-on-deep .om-cursor-label{color:#fff}

@media (prefers-reduced-motion: no-preference){
  .om-header.om-glassed .om-header-sheen{animation:om-glass-sweep 7s linear .4s infinite}
  .om-caustic-a{animation:om-caustic-a 15s ease-in-out infinite}
  .om-caustic-b{animation:om-caustic-b 19s ease-in-out infinite}
  .om-hero-current{animation:om-hero-current 9s ease-in-out 1s infinite}
  .om-tentacle{animation:om-tentacle-swim 3.6s ease-in-out 1.3s infinite;transform-origin:50% 50%}
  .om-back-to-top.om-in{animation:om-buoy 2.8s ease-in-out .4s infinite}
}

@media (hover:none),(pointer:coarse){
  .om-cursor{display:none}
  .om-swap .om-swap-b{display:none}
}
@media (prefers-reduced-motion: reduce){
  .om-cursor,.om-hero-current,.om-caustic,.om-header-sheen,.om-porthole{display:none}
  .om-swap .om-swap-b{display:none}
  .om-swap > span,.om-btn .om-corner,.om-btn .om-corner path,.om-tentacle{animation:none;transition:none}
}

/* ================================================================
   IMAGE MOTION
   The build ships images with no scroll behaviour at all and a 1.5%
   hover nudge that sits below the threshold of noticing. This adds a
   reveal as each picture enters the frame, a real hover zoom, and a
   slow drift on the hero photograph.
   ================================================================ */

/* Wrappers must clip once the picture scales past its box. The build
   leaves .om-ratio at overflow:visible, which is fine at 1.5% and spills
   at 7%. */
.om-ratio,.om-media{overflow:hidden}

/* The reveal rides on the WRAPPER, never on the <img>. The hover zoom
   lives on the img, and a revealed-state transform there would outrank
   it and silently kill the zoom. The hidden state is gated behind
   html.om-img-motion, which JS adds, so with no JS - a crawler, print,
   a failed script - every image still renders normally. */
html.om-img-motion .om-img-pending{
  opacity:0;transform:translate3d(0,26px,0) scale(.985);filter:blur(7px);
  transition:opacity .8s var(--om-ease-fluid),transform .8s var(--om-ease-fluid),
             filter .8s var(--om-ease-fluid);
  transition-delay:calc(var(--om-i,0) * 90ms);
}
html.om-img-motion .om-img-pending.om-img-in{opacity:1;transform:none;filter:none}

/* the picture settles back from a slight overscale as it lands */
html.om-img-motion .om-img-pending img{
  transform:scale(1.07);
  transition:transform 1.1s var(--om-ease-fluid);
  transition-delay:calc(var(--om-i,0) * 90ms);
}
html.om-img-motion .om-img-pending.om-img-in img{transform:scale(1)}

/* hover zoom, deepened from the build's imperceptible 1.5% */
.om-zoom img{transition:transform .6s var(--om-ease-fluid)}
.om-zoom:hover img,.om-zoom:focus-within img{transform:scale(1.05)}

/* The hero photograph is 1707x2560 drawn into a 1425x685 band, so there
   is ~1450px of vertical overflow to drift through and none horizontally.
   Panning any other axis would move nothing. */
@keyframes om-hero-pan{
  0%,100%{background-position:50% 47%}
  50%    {background-position:50% 53%}
}

@media (prefers-reduced-motion: no-preference){
  .om-photo-hero{animation:om-hero-pan 42s ease-in-out infinite}
}
@media (prefers-reduced-motion: reduce){
  html.om-img-motion .om-img-pending,
  html.om-img-motion .om-img-pending img{opacity:1;transform:none;filter:none;transition:none}
  .om-photo-hero{animation:none}
  .om-zoom img{transition:none}
}
@media (max-width: 900px) {

  .om-caustic-a,
  .om-caustic-b,
  .om-hero-current,
  .om-header-sheen,
  .om-tentacle,
  .om-back-to-top.om-in {
    animation: none !important;
    transform: none !important;
  }

}/* End custom CSS */