/* CPM Infomapper — front end.
   Builder values arrive as --cpmi-d-*; Elementor style controls set --cpmi-*
   on the widget wrapper and win via inheritance. */
.cpmi{
  --pin:var(--cpmi-pin,var(--cpmi-d-pin,#e30613));
  --pin-ink:var(--cpmi-pin-ink,var(--cpmi-d-pin-ink,#fff));
  --ring:var(--cpmi-ring,var(--cpmi-d-ring,#e30613));
  --pin-border:var(--cpmi-pin-border,var(--cpmi-d-pin-border,2px));
  --stem:var(--cpmi-d-stem,1.6);
  --label-bg:var(--cpmi-label-bg,var(--cpmi-d-label-bg,#111315));
  --label-ink:var(--cpmi-label-ink,var(--cpmi-d-label-ink,#fff));
  --bubble-bg:var(--cpmi-bubble-bg,var(--cpmi-d-bubble-bg,#111315));
  --bubble-ink:var(--cpmi-bubble-ink,var(--cpmi-d-bubble-ink,#fff));
  --bubble-muted:var(--cpmi-bubble-muted,var(--cpmi-d-bubble-muted,#aeb4b9));
  --accent:var(--cpmi-accent,var(--cpmi-d-accent,#e30613));
  --radius:var(--cpmi-radius,var(--cpmi-d-radius,14px));
  --bubble-w:var(--cpmi-bubble-w,var(--cpmi-d-bubble-w,320px));
  --title-size:var(--cpmi-title-size,var(--cpmi-d-title-size,19px));
  --text-size:var(--cpmi-text-size,var(--cpmi-d-text-size,14px));
  --img-ratio:var(--cpmi-d-img-ratio,16/9);
  --banner-bg:var(--cpmi-banner-bg,var(--cpmi-d-banner-bg,#111315));
  --banner-ink:var(--cpmi-banner-ink,var(--cpmi-d-banner-ink,#fff));
  --banner-muted:var(--cpmi-banner-muted,var(--cpmi-d-banner-muted,#aeb4b9));
  --banner-accent:var(--cpmi-banner-accent,var(--cpmi-d-banner-accent,#e30613));
  --banner-pad:var(--cpmi-d-banner-pad,20px);
  --banner-logo-h:var(--cpmi-banner-logo-h,var(--cpmi-d-banner-logo-h,44px));
  --banner-opacity:var(--cpmi-d-banner-opacity,1);
  --banner-radius:var(--cpmi-d-banner-radius,0px);
  position:relative;width:100%;font-family:var(--cpmi-font,var(--cpmi-d-font));line-height:1.45;
}
.cpmi *,.cpmi *::before,.cpmi *::after{box-sizing:border-box}
.cpmi-stage{position:relative;z-index:0;width:100%;overflow:hidden;background:#0b0d0f;touch-action:pan-y;-webkit-user-select:none;user-select:none;border-radius:var(--cpmi-stage-radius,0)}
.cpmi-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;max-width:none}
.cpmi-gl{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .45s ease;pointer-events:none}
.cpmi.is-gl .cpmi-gl{opacity:1}
.cpmi-pins{position:absolute;inset:0;pointer-events:none;z-index:5}
.cpmi-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:-1px;padding:0}
.cpmi.cpmi--bleed{width:calc(100vw - var(--cpmi-sbw,0px));max-width:none;margin-left:calc(50% - 50vw + var(--cpmi-sbw,0px) / 2);margin-right:0}
.cpmi--fixed .cpmi-stage{aspect-ratio:auto!important}
/* fill: render + bar = exactly one screen (minus the WP admin bar when logged in) */
.cpmi.cpmi--fill{display:flex;flex-direction:column;height:calc(100vh - var(--wp-admin--admin-bar--height,0px));height:calc(100svh - var(--wp-admin--admin-bar--height,0px))}
.cpmi--fill .cpmi-stage{flex:1 1 auto;min-height:0;height:auto}
.cpmi--fill .cpmi-banner{flex:none}
@media (max-width:767px){.cpmi.cpmi--fill:not(.cpmi--fixed-mobile){height:auto;display:block}}
/* phones: a fixed height would be a narrow crop of a wide render — use the render's shape unless mobile_height is set */
@media (max-width:767px){.cpmi--fixed:not(.cpmi--fixed-mobile) .cpmi-stage{height:auto!important;aspect-ratio:var(--cpmi-ratio)!important}.cpmi--fixed-mobile .cpmi-stage{height:var(--cpmi-mh)!important}}
.cpmi-empty{padding:24px;border:1px dashed #999;color:#666;font:14px/1.4 sans-serif;text-align:center}

/* ---------- pins ---------- */
/* Pins are <button>s: shield them from theme button styles. A theme
   `button{transition:all .3s}` makes pins chase their position and drift off
   the pixel while the depth image moves — pins must be positioned per frame
   with zero easing. */
.cpmi .cpmi-pin,.cpmi .cpmi-pin:hover,.cpmi .cpmi-pin:focus,.cpmi .cpmi-pin:active{transition:none!important;animation:none!important;background:none!important;border:0!important;box-shadow:none!important;outline:none;padding:0!important;margin:0!important;min-width:0!important;min-height:0!important;width:0!important;height:0!important;color:inherit;font:inherit;line-height:1;text-transform:none;letter-spacing:normal;border-radius:0;transform-origin:0 0;-webkit-appearance:none;appearance:none}
.cpmi .cpmi-pin *{transition-property:none}
.cpmi-pin{position:absolute;left:0;top:0;width:0;height:0;padding:0;margin:0;border:0;background:none;pointer-events:none;cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;will-change:transform}
.cpmi-pin.is-hidden{opacity:.4}
.cpmi-pin__ground{position:absolute;left:0;top:0;width:calc(var(--b) * 1.24);height:calc(var(--b) * 1.24);border-radius:50%;border:2px solid var(--pin);background:color-mix(in srgb,var(--pin) 18%,transparent);pointer-events:none;transform-origin:50% 50%}
.cpmi-pin:not([style*="--pin"]) .cpmi-pin__ground{border-color:var(--ring);background:color-mix(in srgb,var(--ring) 18%,transparent)}
.cpmi-pin__ground i{position:absolute;inset:-2px;border-radius:50%;border:2px solid currentColor;color:var(--pin);opacity:0}
.cpmi--pulse .cpmi-pin__ground i{animation:cpmi-pulse 2.6s ease-out infinite}
.cpmi-pin:nth-child(3n+2) .cpmi-pin__ground i{animation-delay:.85s}
.cpmi-pin:nth-child(3n+3) .cpmi-pin__ground i{animation-delay:1.7s}
@keyframes cpmi-pulse{0%{transform:scale(1);opacity:.85}100%{transform:scale(2.3);opacity:0}}
.cpmi-pin__body{position:absolute;left:0;top:0;width:0;height:0;transform-origin:0 0;font-size:var(--b)}
.cpmi-pin__stem{position:absolute;left:-.04em;bottom:0;width:.08em;height:calc(var(--stem) * 1em);background:linear-gradient(to top,color-mix(in srgb,var(--pin) 55%,transparent),var(--pin));border-radius:.04em;pointer-events:none}
.cpmi .cpmi-pin .cpmi-pin__head{transition-property:transform,box-shadow}
.cpmi .cpmi-pin .cpmi-pin__drop{transition-property:transform}
.cpmi .cpmi-pin .cpmi-pin__label{transition-property:opacity}
.cpmi-pin__head{position:absolute;left:-.5em;top:calc(-1em * var(--stem) - 1em);width:1em;height:1em;border-radius:50%;background:var(--pin);color:var(--pin-ink);border:var(--pin-border) solid var(--pin-ink);display:grid;place-items:center;pointer-events:auto;transition:transform .22s cubic-bezier(.3,1.5,.5,1),box-shadow .22s}
.cpmi-pin--dot .cpmi-pin__head{top:-.5em}
.cpmi-pin__head b,.cpmi-pin__drop b{font-size:.46em;font-weight:800;line-height:1;letter-spacing:-.02em;font-family:inherit}
.cpmi--pin-shadow .cpmi-pin__head{box-shadow:0 .12em .4em rgba(0,0,0,.38)}
.cpmi-pin__drop{position:absolute;left:-.5em;top:-1.3em;width:1em;height:1.3em;pointer-events:auto;transition:transform .22s cubic-bezier(.3,1.5,.5,1);transform-origin:50% 100%}
.cpmi-pin__drop svg{position:absolute;inset:0;width:100%;height:100%;fill:var(--pin);overflow:visible}
.cpmi--pin-shadow .cpmi-pin__drop svg{filter:drop-shadow(0 .08em .18em rgba(0,0,0,.4))}
.cpmi-pin__drop b{position:absolute;left:0;right:0;top:.23em;text-align:center;color:var(--pin-ink)}
.cpmi-pin--disc .cpmi-pin__ground{background:var(--pin);border-color:var(--pin-ink);pointer-events:auto;display:grid;place-items:center}
.cpmi-pin__discnum{color:var(--pin-ink);font-weight:800;font-size:calc(var(--b) * .5);line-height:1}
.cpmi-pin:hover .cpmi-pin__head,.cpmi-pin.is-focus .cpmi-pin__head{transform:scale(1.14)}
.cpmi-pin:hover .cpmi-pin__drop,.cpmi-pin.is-focus .cpmi-pin__drop{transform:scale(1.1)}
.cpmi-pin.is-active .cpmi-pin__head{transform:scale(1.2);box-shadow:0 0 0 .14em color-mix(in srgb,var(--pin) 40%,transparent),0 .12em .4em rgba(0,0,0,.38)}
.cpmi-pin.is-focus .cpmi-pin__head{outline:2px solid var(--pin-ink);outline-offset:2px}

/* labels */
.cpmi-pin__label{position:absolute;left:0;top:0;white-space:nowrap;background:var(--label-bg);color:var(--label-ink);font-size:13px;font-weight:600;line-height:1;padding:.55em .9em;border-radius:99px;pointer-events:none;opacity:0;transition:opacity .2s ease;box-shadow:0 4px 14px rgba(0,0,0,.28)}
.cpmi-pin__label.is-empty{display:none}
/* titles are clickable whenever they're showing — the click bubbles to the pin button */
.cpmi--labels-always .cpmi-pin__label,.cpmi-pin:hover .cpmi-pin__label,.cpmi-pin.is-focus .cpmi-pin__label,.cpmi-pin.is-active .cpmi-pin__label{pointer-events:auto;cursor:pointer}
.cpmi--labels-always .cpmi-pin__label:hover{filter:brightness(1.25)}
.cpmi-pin.is-out{visibility:hidden}
/* phones: 'always' labels crowd a small render — show the name only on the tapped pin */
.cpmi--narrow.cpmi--labels-always:not(.cpmi--edit) .cpmi-pin:not(.is-active) .cpmi-pin__label:not(.is-tag){opacity:0;pointer-events:none}
/* Studio: labels never block the pins underneath; the selected pin sits on top */
.cpmi--edit .cpmi-pin__label:not(.is-tag){pointer-events:none!important}
.cpmi--edit .cpmi-pin.is-selected{z-index:5000!important}
.cpmi--labels-always .cpmi-pin__label,.cpmi-pin:hover .cpmi-pin__label,.cpmi-pin.is-focus .cpmi-pin__label,.cpmi-pin.is-active .cpmi-pin__label{opacity:1}
.cpmi--labels-never .cpmi-pin__label:not(.is-tag){display:none}
.cpmi-pin__label.is-tag{opacity:1;background:var(--pin);color:var(--pin-ink);pointer-events:auto;cursor:pointer;margin-top:-2px}
.cpmi-pin__label.is-tag b{opacity:.75;margin-right:.55em;font-weight:800}
.cpmi.has-open .cpmi-pin:not(.is-active){opacity:.72}
.cpmi.has-open .cpmi-pin:not(.is-active):hover{opacity:1}

/* ---------- bubble ---------- */
.cpmi-bubble{position:absolute;left:0;top:0;z-index:60;width:min(var(--bubble-w),calc(100% - 16px));background:var(--bubble-bg);color:var(--bubble-ink);border-radius:var(--radius);box-shadow:0 22px 60px rgba(0,0,0,.38),0 2px 8px rgba(0,0,0,.18);text-align:left}
.cpmi--no-shadow .cpmi-bubble{box-shadow:none}
.cpmi--glass .cpmi-bubble{-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);border:1px solid rgba(255,255,255,.14)}
.cpmi-bubble[hidden]{display:none}
.cpmi-bubble__media{aspect-ratio:var(--img-ratio);overflow:hidden;border-radius:var(--radius) var(--radius) 0 0;background:rgba(127,127,127,.15)}
.cpmi-bubble__media[hidden]{display:none}
.cpmi-bubble__media img{width:100%;height:100%;object-fit:cover;display:block}
.cpmi-bubble__body{padding:16px 18px 18px}
.cpmi-bubble__top{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:22px;margin-bottom:6px}
.cpmi-bubble__eyebrow{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--cpmi-accent-local,var(--accent))}
.cpmi-bubble__eyebrow i{font-style:normal;opacity:.5;margin:0 .2em}
.cpmi-bubble__nav{display:flex;gap:4px;margin-right:26px}
.cpmi-bubble__nav[hidden]{display:none}
.cpmi-bubble .cpmi-bubble__nav button,.cpmi-bubble .cpmi-bubble__close{all:unset;box-sizing:border-box;cursor:pointer;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:17px;line-height:1;color:var(--bubble-ink);background:color-mix(in srgb,var(--bubble-ink) 10%,transparent);transition:background .15s}
.cpmi-bubble__nav button:hover,.cpmi-bubble__close:hover{background:color-mix(in srgb,var(--bubble-ink) 22%,transparent)}
.cpmi-bubble__nav button:focus-visible,.cpmi-bubble__close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.cpmi-bubble .cpmi-bubble__close{position:absolute;right:12px;top:14px;z-index:2;font-size:19px}
.cpmi-bubble__media:not([hidden]) ~ .cpmi-bubble__body .cpmi-bubble__top{margin-top:2px}
.cpmi-bubble__media:not([hidden]) ~ .cpmi-bubble__close,.cpmi-bubble__close:has(~ .cpmi-bubble__media:not([hidden])){background:rgba(0,0,0,.5);color:#fff}
.cpmi-bubble__title{margin:0 0 6px;font-size:var(--title-size);line-height:1.18;font-weight:700;color:var(--bubble-ink);font-family:inherit;letter-spacing:-.01em}
.cpmi-bubble__title[hidden],.cpmi-bubble__text[hidden],.cpmi-bubble__link[hidden]{display:none}
.cpmi-bubble__text{font-size:var(--text-size);color:var(--bubble-muted)}
.cpmi-bubble__text p{margin:0 0 .6em}.cpmi-bubble__text p:last-child{margin:0}
.cpmi-bubble__text a{color:var(--cpmi-accent-local,var(--accent))}
.cpmi a.cpmi-bubble__link{display:inline-block;margin-top:12px;font-size:13px;font-weight:700;color:var(--cpmi-accent-local,var(--accent));text-decoration:none;letter-spacing:.02em}
.cpmi a.cpmi-bubble__link:hover{text-decoration:underline}
.cpmi-bubble__arrow{position:absolute;left:var(--arrow-x,50%);bottom:-7px;width:14px;height:14px;margin-left:-7px;background:var(--bubble-bg);transform:rotate(45deg);border-radius:2px;pointer-events:none}
.cpmi-bubble.is-below .cpmi-bubble__arrow{bottom:auto;top:-7px}
.cpmi-bubble.is-left .cpmi-bubble__arrow,.cpmi-bubble.is-right .cpmi-bubble__arrow{left:auto;bottom:auto;top:var(--arrow-y,50%);margin:-7px 0 0}
.cpmi-bubble.is-left .cpmi-bubble__arrow{right:-7px}.cpmi-bubble.is-right .cpmi-bubble__arrow{left:-7px}
.cpmi-bubble.is-below .cpmi-bubble__media:not([hidden]) ~ .cpmi-bubble__arrow{display:none}
.cpmi--glass .cpmi-bubble__arrow,.cpmi--no-arrow .cpmi-bubble__arrow{display:none}
.cpmi-bubble.is-sheet{position:fixed;left:12px!important;right:12px;bottom:12px;top:auto!important;width:auto;max-height:72vh;overflow:auto;z-index:99999}
.cpmi-bubble.is-sheet .cpmi-bubble__arrow{display:none}

/* ---------- banner ---------- */
.cpmi-banner{position:relative;isolation:isolate;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:stretch;color:var(--banner-ink);border-radius:0 0 var(--banner-radius) var(--banner-radius);font-size:14px;line-height:1.35}
.cpmi-banner::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--banner-bg);opacity:var(--banner-opacity);border-radius:inherit}
/* accent stripe along the top edge */
.cpmi-banner.has-divider::after{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:linear-gradient(90deg,var(--banner-accent) 0%,var(--banner-accent) 38%,color-mix(in srgb,var(--banner-accent) 30%,transparent) 100%);border-radius:var(--banner-radius) var(--banner-radius) 0 0;pointer-events:none}
/* style presets — Light / Dark / Brand built from the accent (e.g. Sims blue); Custom uses the colour fields */
.cpmi-banner[data-style=light]{--banner-bg:#fff;--banner-ink:#0d1a22;--banner-muted:#5d6a73;--bline:color-mix(in srgb,var(--banner-accent) 18%,#e4e8eb);--chip:color-mix(in srgb,var(--banner-accent) 10%,#fff);--chip-ink:var(--banner-accent)}
.cpmi-banner[data-style=dark]{--banner-bg:color-mix(in srgb,var(--banner-accent) 22%,#05080b);--banner-ink:#fff;--banner-muted:rgba(255,255,255,.64);--bline:rgba(255,255,255,.12);--chip:rgba(255,255,255,.08);--chip-ink:color-mix(in srgb,var(--banner-accent) 45%,#fff)}
.cpmi-banner[data-style=brand]{--banner-bg:var(--banner-accent);--banner-ink:#fff;--banner-muted:rgba(255,255,255,.8);--bline:rgba(255,255,255,.24);--chip:rgba(255,255,255,.16);--chip-ink:#fff}
.cpmi-banner[data-style=custom]{--bline:color-mix(in srgb,var(--banner-ink) 14%,transparent);--chip:color-mix(in srgb,var(--banner-accent) 14%,transparent);--chip-ink:var(--banner-accent)}
.cpmi-banner[data-style=dark]::before{background:linear-gradient(100deg,color-mix(in srgb,var(--banner-accent) 30%,#05080b),color-mix(in srgb,var(--banner-accent) 14%,#05080b))}
.cpmi-banner__zone{display:flex;align-items:center;min-width:0;padding:calc(var(--banner-pad) + 2px) calc(var(--banner-pad) * 1.3)}
.cpmi-banner__zone+.cpmi-banner__zone{border-left:1px solid var(--bline)}
.cpmi-banner__brand{gap:18px}
.cpmi-banner__logowrap{display:flex;align-items:center;flex:none}
.cpmi-banner.has-chip .cpmi-banner__logowrap{background:#fff;border-radius:calc(var(--banner-radius) + 8px);padding:8px 12px;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.cpmi-banner__logo{height:var(--banner-logo-h);width:auto;max-width:220px;object-fit:contain;display:block}
.cpmi-banner__copy{display:flex;flex-direction:column;gap:4px;min-width:0}
.cpmi-banner__title{font-size:17px;font-weight:700;line-height:1.2;letter-spacing:-.01em}
.cpmi-banner__info{display:flex;align-items:center;gap:.45em;font-size:13px;color:var(--banner-muted)}
.cpmi-banner__info svg{width:13px;height:13px;fill:var(--chip-ink);flex:none;opacity:.9}
.cpmi-banner__headline{flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:5px}
.cpmi-banner__headline small{font-size:10px;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:var(--chip-ink);opacity:.95}
.cpmi-banner__headline span{font-size:var(--cpmi-banner-hl-size,var(--cpmi-d-banner-hl-size,20px));font-weight:800;line-height:1.15;letter-spacing:.03em;color:var(--cpmi-banner-hl,var(--cpmi-d-banner-hl,var(--banner-ink)));text-wrap:balance}
.cpmi-banner__contact{gap:10px 18px;flex-wrap:wrap;justify-content:flex-end}
.cpmi-banner .cpmi-banner__link,.cpmi-banner__addr{display:inline-flex;align-items:center;gap:.6em;min-width:0;max-width:100%;overflow-wrap:anywhere;color:var(--banner-ink);text-decoration:none!important;font-size:14px;font-weight:600}
.cpmi-banner__link i,.cpmi-banner__addr i{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--chip);transition:background .2s,transform .2s}
.cpmi-banner__link svg,.cpmi-banner__addr svg{width:15px;height:15px;fill:var(--chip-ink)}
.cpmi-banner .cpmi-banner__link:hover i{background:var(--banner-accent);transform:translateY(-1px)}
.cpmi-banner .cpmi-banner__link:hover svg{fill:#fff}
.cpmi-banner[data-style=brand] .cpmi-banner__link:hover i{background:#fff}
.cpmi-banner[data-style=brand] .cpmi-banner__link:hover svg{fill:var(--banner-accent)}
.cpmi-banner__addr{font-weight:500;color:var(--banner-muted)}
.cpmi-banner .cpmi-banner__cta{display:inline-flex;align-items:center;gap:.6em;background:var(--banner-accent);color:#fff;padding:.8em 1.1em .8em 1.4em;border-radius:99px;font-weight:700;text-decoration:none!important;box-shadow:0 6px 18px color-mix(in srgb,var(--banner-accent) 35%,transparent);transition:transform .2s,filter .2s}
.cpmi-banner .cpmi-banner__cta b{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.2);font-weight:700;transition:transform .2s}
.cpmi-banner .cpmi-banner__cta:hover{filter:brightness(1.08);transform:translateY(-1px)}
.cpmi-banner .cpmi-banner__cta:hover b{transform:translateX(3px)}
.cpmi-banner[data-style=brand] .cpmi-banner__cta{background:#fff;color:var(--banner-accent);box-shadow:0 6px 18px rgba(0,0,0,.18)}
.cpmi-banner[data-style=brand] .cpmi-banner__cta b{background:color-mix(in srgb,var(--banner-accent) 14%,transparent)}
/* layouts */
.cpmi-banner--centered{grid-template-columns:1fr;text-align:center}
.cpmi-banner--centered .cpmi-banner__zone{justify-content:center}
.cpmi-banner--centered .cpmi-banner__zone+.cpmi-banner__zone,.cpmi-banner--stacked .cpmi-banner__zone+.cpmi-banner__zone{border-left:0;border-top:1px solid var(--bline)}
.cpmi-banner--stacked{grid-template-columns:1fr}
.cpmi-banner--stacked .cpmi-banner__headline{align-items:flex-start;text-align:left}
.cpmi-banner--stacked .cpmi-banner__contact{justify-content:flex-start}
.cpmi-banner:not(:has(.cpmi-banner__headline)){grid-template-columns:auto minmax(0,1fr)}
.cpmi-banner:not(:has(.cpmi-banner__headline)) .cpmi-banner__contact{border-left:0}
/* phones / narrow: stack the zones */
.cpmi--narrow .cpmi-banner{grid-template-columns:1fr}
.cpmi--narrow .cpmi-banner__zone{padding:16px 18px}
.cpmi--narrow .cpmi-banner__zone+.cpmi-banner__zone{border-left:0;border-top:1px solid var(--bline)}
.cpmi--narrow .cpmi-banner__headline{order:-1;align-items:flex-start;text-align:left}
.cpmi--narrow .cpmi-banner__contact{justify-content:flex-start;gap:10px 16px}
.cpmi--narrow .cpmi-banner--centered .cpmi-banner__headline{align-items:center;text-align:center}

/* ---------- builder edit mode ---------- */
.cpmi--edit .cpmi-stage{cursor:crosshair}
.cpmi--edit .cpmi-pin__head,.cpmi--edit .cpmi-pin__drop,.cpmi--edit .cpmi-pin--disc .cpmi-pin__ground,.cpmi--edit .cpmi-pin__label.is-tag{cursor:grab}
.cpmi--edit .cpmi-pin.is-selected .cpmi-pin__head,.cpmi--edit .cpmi-pin.is-selected .cpmi-pin__drop svg{outline:2px dashed #fff;outline-offset:3px}
.cpmi--edit .cpmi-pin.is-selected .cpmi-pin__drop svg{outline:none;filter:drop-shadow(0 0 3px #fff) drop-shadow(0 0 1px #fff)}
.cpmi--edit .cpmi-pin.is-selected .cpmi-pin__label{opacity:1}

/* ---------- bubble entry animations (data-anim: pop | rise | unfold | none) ----------
   Calm, no overshoot: the panel eases out of its pin (origin = arrow side), the photo
   settles with a slow zoom-out and the text drifts in line by line. Close is a soft
   fade; next/prev fades the panel out in place, then the new one fades in at its pin. */
.cpmi-bubble{--from:translateY(8px) scale(.97);--ease:cubic-bezier(.22,1,.36,1);opacity:0;transform:var(--from);transform-origin:var(--arrow-x,50%) calc(100% + 10px);
  transition:opacity .38s ease,transform .45s cubic-bezier(.4,0,.2,1),clip-path .45s cubic-bezier(.4,0,.2,1)}
.cpmi-bubble.is-below{--from:translateY(-8px) scale(.97);transform-origin:var(--arrow-x,50%) -10px}
.cpmi-bubble.is-left{--from:translateX(10px) scale(.97);transform-origin:calc(100% + 10px) var(--arrow-y,50%)}
.cpmi-bubble.is-right{--from:translateX(-10px) scale(.97);transform-origin:-10px var(--arrow-y,50%)}
.cpmi-bubble.is-sheet{--from:translateY(28px);transform-origin:50% 100%}
.cpmi-bubble.is-soft{--from:translateY(6px)}
.cpmi-bubble.is-in{opacity:1;transform:none;transition:opacity .55s ease,transform .85s var(--ease),clip-path .8s cubic-bezier(.65,0,.25,1)}
.cpmi-bubble.is-in.is-swap{opacity:0;transform:translateY(4px);transition:opacity .28s ease,transform .3s ease}
.cpmi-bubble.no-tr,.cpmi-bubble.no-tr *{transition:none!important}
/* rise: straight up, no scale */
.cpmi-bubble[data-anim=rise]{--from:translateY(18px)}
.cpmi-bubble[data-anim=rise].is-below{--from:translateY(-18px)}
.cpmi-bubble[data-anim=rise].is-soft{--from:translateY(8px)}
/* unfold: wipes open from the pin side */
.cpmi-bubble[data-anim=unfold]{--from:none;clip-path:inset(100% 0 0 0 round var(--radius))}
.cpmi-bubble[data-anim=unfold].is-below{clip-path:inset(0 0 100% 0 round var(--radius))}
.cpmi-bubble[data-anim=unfold].is-left{clip-path:inset(0 0 0 100% round var(--radius))}
.cpmi-bubble[data-anim=unfold].is-right{clip-path:inset(0 100% 0 0 round var(--radius))}
.cpmi-bubble[data-anim=unfold].is-in{clip-path:inset(-20px -20px -20px -20px round var(--radius))}
/* photo settles, text drifts in */
.cpmi-bubble__media img{transform:scale(1.07);transition:transform .4s ease}
.cpmi-bubble.is-in .cpmi-bubble__media img{transform:none;transition:transform 1.8s var(--ease) .05s}
.cpmi-bubble__top,.cpmi-bubble__title,.cpmi-bubble__text,.cpmi-bubble__link,.cpmi-bubble__close{opacity:0;transform:translateY(6px);transition:opacity .25s ease,transform .3s ease}
.cpmi-bubble.is-in .cpmi-bubble__top,.cpmi-bubble.is-in .cpmi-bubble__title,.cpmi-bubble.is-in .cpmi-bubble__text,.cpmi-bubble.is-in .cpmi-bubble__link,.cpmi-bubble.is-in .cpmi-bubble__close{opacity:1;transform:none;transition:opacity .7s ease,transform .9s var(--ease)}
.cpmi-bubble.is-in .cpmi-bubble__close{transition-delay:.2s}
.cpmi-bubble.is-in .cpmi-bubble__top{transition-delay:.16s}
.cpmi-bubble.is-in .cpmi-bubble__title{transition-delay:.24s}
.cpmi-bubble.is-in .cpmi-bubble__text{transition-delay:.32s}
.cpmi-bubble.is-in .cpmi-bubble__link{transition-delay:.4s}
.cpmi-bubble[data-anim=none],.cpmi-bubble[data-anim=none] *{transition:none!important}
.cpmi-bubble[data-anim=none]{transform:none}
.cpmi-bubble[data-anim=none] .cpmi-bubble__media img{transform:none}
.cpmi-bubble[data-anim=none] .cpmi-bubble__top,.cpmi-bubble[data-anim=none] .cpmi-bubble__title,.cpmi-bubble[data-anim=none] .cpmi-bubble__text,.cpmi-bubble[data-anim=none] .cpmi-bubble__link,.cpmi-bubble[data-anim=none] .cpmi-bubble__close{opacity:1;transform:none}
/* the pin ripples once when its panel opens */
.cpmi-pin__head::after{content:"";position:absolute;inset:calc(var(--pin-border) * -1);border-radius:50%;border:2px solid var(--pin);opacity:0;pointer-events:none}
.cpmi-pin.is-burst .cpmi-pin__head::after{animation:cpmi-burst 1.1s cubic-bezier(.22,1,.36,1) both}
@keyframes cpmi-burst{0%{transform:scale(1);opacity:.9}100%{transform:scale(2.4);opacity:0}}
@media (prefers-reduced-motion:reduce){.cpmi-bubble,.cpmi-bubble *,.cpmi-pin__head,.cpmi-pin__drop{transition:none!important}.cpmi-bubble{transform:none!important;clip-path:none!important}.cpmi-pin.is-burst .cpmi-pin__head::after{animation:none}}

/* ---------- welcome window ---------- */
.cpmi-intro{position:absolute;inset:0;z-index:45;display:grid;place-items:center;padding:20px}
.cpmi-intro[hidden]{display:none}
.cpmi-intro__veil{position:absolute;inset:0;background:rgba(8,10,12,var(--intro-dim,.35));-webkit-backdrop-filter:blur(var(--intro-blur,8px)) saturate(1.1);backdrop-filter:blur(var(--intro-blur,8px)) saturate(1.1);opacity:0;transition:opacity .6s ease;cursor:pointer}
.cpmi-intro.is-in .cpmi-intro__veil{opacity:1}
.cpmi-intro__card{position:relative;width:min(var(--intro-w,440px),100%);max-height:100%;overflow:auto;background:var(--bubble-bg);color:var(--bubble-ink);border-radius:calc(var(--radius) + 4px);box-shadow:0 30px 80px rgba(0,0,0,.45),0 2px 10px rgba(0,0,0,.2);opacity:0;transform:translateY(14px) scale(.98);transition:opacity .35s ease,transform .45s cubic-bezier(.4,0,.2,1);text-align:left}
.cpmi-intro.is-in .cpmi-intro__card{opacity:1;transform:none;transition:opacity .6s ease .12s,transform .9s cubic-bezier(.22,1,.36,1) .12s}
.cpmi-intro[data-theme=dark] .cpmi-intro__card{--bubble-bg:#111315;--bubble-ink:#fff;--bubble-muted:#aeb4b9}
.cpmi-intro[data-theme=light] .cpmi-intro__card{--bubble-bg:#fff;--bubble-ink:#111315;--bubble-muted:#5b6268}
.cpmi-intro[data-theme=glass] .cpmi-intro__card,.cpmi--glass .cpmi-intro[data-theme=match] .cpmi-intro__card{--bubble-bg:rgba(17,19,21,.55);--bubble-ink:#fff;--bubble-muted:rgba(255,255,255,.76);-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);border:1px solid rgba(255,255,255,.16)}
.cpmi-intro[data-theme=brand] .cpmi-intro__card{--bubble-bg:var(--accent);--bubble-ink:#fff;--bubble-muted:rgba(255,255,255,.86)}
.cpmi-intro__media{aspect-ratio:16/9;overflow:hidden;border-radius:calc(var(--radius) + 4px) calc(var(--radius) + 4px) 0 0}
.cpmi-intro__media img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.06);transition:transform 1.8s cubic-bezier(.22,1,.36,1) .1s}
.cpmi-intro.is-in .cpmi-intro__media img{transform:none}
.cpmi-intro__media.is-logo{aspect-ratio:auto;padding:26px 28px 0;border-radius:0}
.cpmi-intro__media.is-logo img{width:auto;height:auto;max-height:60px;max-width:70%;object-fit:contain;transform:none}
.cpmi-intro__body{padding:24px 28px 26px}
.cpmi-intro__eyebrow{font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.cpmi-intro[data-theme=brand] .cpmi-intro__eyebrow{color:rgba(255,255,255,.85)}
.cpmi-intro__title{margin:0 0 10px;font-size:calc(var(--title-size) + 7px);line-height:1.12;font-weight:800;letter-spacing:-.01em;color:var(--bubble-ink);font-family:inherit}
.cpmi-intro__text{font-size:calc(var(--text-size) + 1px);color:var(--bubble-muted);line-height:1.55}
.cpmi-intro__text p{margin:0 0 .7em}.cpmi-intro__text p:last-child{margin:0}
.cpmi-intro__eyebrow,.cpmi-intro__title,.cpmi-intro__text,.cpmi-intro__acts{opacity:0;transform:translateY(6px);transition:opacity .25s ease,transform .3s ease}
.cpmi-intro.is-in .cpmi-intro__eyebrow,.cpmi-intro.is-in .cpmi-intro__title,.cpmi-intro.is-in .cpmi-intro__text,.cpmi-intro.is-in .cpmi-intro__acts{opacity:1;transform:none;transition:opacity .7s ease,transform .9s cubic-bezier(.22,1,.36,1)}
.cpmi-intro.is-in .cpmi-intro__eyebrow{transition-delay:.3s}.cpmi-intro.is-in .cpmi-intro__title{transition-delay:.38s}.cpmi-intro.is-in .cpmi-intro__text{transition-delay:.46s}.cpmi-intro.is-in .cpmi-intro__acts{transition-delay:.56s}
.cpmi-intro__acts{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;margin-top:20px}
.cpmi .cpmi-intro__go{all:unset;box-sizing:border-box;cursor:pointer;background:var(--intro-btn,var(--pin));color:var(--intro-btn-ink,var(--pin-ink));font-weight:700;font-size:14px;padding:12px 22px;border-radius:99px;transition:filter .15s,transform .15s}
.cpmi-intro[data-theme=brand] .cpmi-intro__go{background:#fff;color:var(--intro-btn,var(--pin))}
.cpmi .cpmi-intro__go:hover{filter:brightness(1.1);transform:translateY(-1px)}
.cpmi .cpmi-intro__go:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--intro-btn,var(--pin)) 40%,transparent)}
.cpmi-intro__hint{font-size:12px;color:var(--bubble-muted)}
.cpmi.has-intro .cpmi-pins{pointer-events:none}
.cpmi .cpmi-info-btn{all:unset;box-sizing:border-box;position:absolute;left:16px;top:16px;z-index:44;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;cursor:pointer;background:var(--bubble-bg);color:var(--bubble-ink);box-shadow:0 6px 20px rgba(0,0,0,.3);font:700 italic 17px/1 Georgia,serif;transition:opacity .4s ease,transform .2s}
.cpmi .cpmi-info-btn:hover{transform:scale(1.08)}
.cpmi .cpmi-info-btn.is-hidden{opacity:0;pointer-events:none}
/* phones: the render is too small to hold the card — go full-screen */
.cpmi--narrow .cpmi-intro{position:fixed;z-index:99998;padding:16px}
.cpmi--narrow .cpmi-intro__body{padding:20px 20px 22px}
@media (prefers-reduced-motion:reduce){.cpmi-intro__card,.cpmi-intro__veil,.cpmi-intro *{transition:none!important}}
