/* vibe structural */
/* ── Vibe design system: tokens + primitives the forged widgets compose with. */
.elementor{
  --vibe-space-2xs:.25rem; --vibe-space-xs:.5rem; --vibe-space-sm:.75rem;
  --vibe-space-md:1rem; --vibe-space-lg:1.5rem; --vibe-space-xl:2.5rem;
  --vibe-space-2xl:4rem; --vibe-space-3xl:6rem; --vibe-space-4xl:9rem;
  --vibe-text-xs:.75rem; --vibe-text-sm:.875rem; --vibe-text-base:1rem;
  --vibe-text-lg:1.25rem; --vibe-text-xl:1.5rem; --vibe-text-2xl:2rem;
  --vibe-text-3xl:clamp(2rem,1.4rem + 2vw,2.75rem);
  --vibe-text-4xl:clamp(2.25rem,1.5rem + 2.6vw,3.4rem);
  --vibe-text-5xl:clamp(2.6rem,1.6rem + 3.4vw,4.4rem);
  /* Display is bold but MUST NOT fill the screen — preferred value is rem+vw
     (zoom-safe) and the cap stays ~6rem so a long headline wraps, never overflows. */
  --vibe-text-display:clamp(2.85rem,1.4rem + 4.4vw,5.75rem);
  --vibe-radius-sm:.25rem; --vibe-radius:.5rem; --vibe-radius-lg:1rem; --vibe-radius-pill:999px;
  --vibe-shadow-sm:0 1px 2px rgba(0,0,0,.06); --vibe-shadow:0 12px 32px rgba(0,0,0,.10);
  --vibe-shadow-lg:0 24px 60px rgba(0,0,0,.14);
  --vibe-border:1px solid color-mix(in srgb,currentColor 16%,transparent);
  --vibe-measure:64ch; --vibe-ease:cubic-bezier(.22,.61,.36,1);
}
.elementor :where(.vibe-stack){display:flex;flex-direction:column;gap:var(--vibe-space-md);}
.elementor :where(.vibe-stack--sm){gap:var(--vibe-space-xs);}
.elementor :where(.vibe-stack--lg){gap:var(--vibe-space-xl);}
.elementor :where(.vibe-cluster){display:flex;flex-wrap:wrap;align-items:center;gap:var(--vibe-space-md);}
.elementor :where(.vibe-grid){display:grid;gap:var(--vibe-space-lg);grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--vibe-col,260px)),1fr));}
.elementor :where(.vibe-container){width:min(100% - 2.5rem,var(--vibe-content-width,1180px));margin-inline:auto;}
.elementor :where(.vibe-container--narrow){width:min(100% - 2.5rem,var(--vibe-copy-width,720px));margin-inline:auto;}
.elementor :where(.vibe-measure){max-width:var(--vibe-measure);}
.elementor :where(.vibe-eyebrow){display:inline-block;font:600 var(--vibe-text-xs)/1 var(--vibe-body,inherit);letter-spacing:.18em;text-transform:uppercase;color:var(--vibe-accent);}
.elementor :where(.vibe-kicker){font:500 var(--vibe-text-sm)/1.4 var(--vibe-body,inherit);color:color-mix(in srgb,currentColor 65%,transparent);}
.elementor :where(.vibe-lede){font-size:var(--vibe-text-lg);line-height:1.55;max-width:var(--vibe-measure);}
.elementor :where(.vibe-prose) p{line-height:1.72;max-width:var(--vibe-measure);}
.elementor :where(.vibe-prose) p + p{margin-top:var(--vibe-space-md);}
.elementor :where(.vibe-rule){display:block;width:clamp(3rem,8vw,7rem);height:1px;background:var(--vibe-accent);border:0;}
.elementor :where(.vibe-badge){display:inline-flex;align-items:center;gap:.4em;padding:.35em .8em;border:var(--vibe-border);border-radius:var(--vibe-radius-pill);font-size:var(--vibe-text-xs);}
.elementor :where(.vibe-card){padding:var(--vibe-space-xl);border:var(--vibe-border);border-radius:var(--vibe-radius-lg);background:color-mix(in srgb,var(--vibe-paper) 92%,var(--vibe-ink));}
.elementor :where(.vibe-card--flat){background:none;box-shadow:none;border:0;}
.elementor :where(.vibe-card--raised){border:0;box-shadow:var(--vibe-shadow);background:var(--vibe-paper);}
.elementor :where(.vibe-btn){display:inline-flex;align-items:center;justify-content:center;gap:.5em;padding:.85em 1.6em;border-radius:var(--vibe-radius);background:var(--vibe-brand);color:var(--vibe-paper);font:600 var(--vibe-text-sm)/1 var(--vibe-body,inherit);text-decoration:none;border:1px solid var(--vibe-brand);transition:transform .25s var(--vibe-ease),opacity .25s;}
.elementor :where(.vibe-btn):hover{transform:translateY(-2px);}
.elementor :where(.vibe-btn--ghost){background:transparent;color:currentColor;border-color:color-mix(in srgb,currentColor 40%,transparent);}
.elementor :where(.vibe-btn--accent){background:var(--vibe-accent);border-color:var(--vibe-accent);color:var(--vibe-ink);}
.elementor :where(.vibe-media){display:block;width:100%;height:auto;object-fit:cover;border-radius:var(--vibe-radius);}
.elementor :where(.vibe-media--tall){aspect-ratio:4/5;}
.elementor :where(.vibe-media--wide){aspect-ratio:16/10;}
.elementor :where(.vibe-media--cinematic){aspect-ratio:21/9;}
/* Any image inside an aspect-ratio box must FILL it — position it absolutely so
   it always covers, immune to height:auto forced by WooCommerce/theme CSS (the
   cause of half-filled product-card images). */
.elementor [class*="aspect-"] > img,
.elementor [class*="aspect-"] > a > img,
.elementor [class*="aspect-"] > picture > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.elementor :where(.vibe-display){font:600 var(--vibe-text-display)/.98 var(--vibe-display,Georgia,serif);letter-spacing:-.02em;text-wrap:balance;}
.elementor :where(.vibe-h1){font:600 var(--vibe-text-4xl)/1.04 var(--vibe-display,Georgia,serif);letter-spacing:-.02em;text-wrap:balance;}
.elementor :where(.vibe-h2){font:600 var(--vibe-text-3xl)/1.12 var(--vibe-display,Georgia,serif);letter-spacing:-.015em;text-wrap:balance;}
/* Hard overflow guard: no heading may ever push off-screen, whatever its length. */
.elementor :where(.vibe-display,.vibe-h1,.vibe-h2){max-width:100%;min-width:0;overflow-wrap:break-word;}
/* Vibe Elementor native-widget design layer. */
.elementor .vibe-section { position:relative; isolation:isolate; overflow:clip; }
.elementor .vibe-section > .elementor-container { width:min(100% - 40px,var(--vibe-content-width,1180px)); }
.elementor .vibe-width--copy > .elementor-container { max-width:var(--vibe-copy-width,720px); }
.elementor .vibe-width--content > .elementor-container { max-width:var(--vibe-content-width,1180px); }
.elementor .vibe-width--media > .elementor-container { max-width:var(--vibe-media-width,1360px); }
.elementor .vibe-width--full > .elementor-container { width:100%;max-width:none; }
.elementor .vibe-space--compact { padding-block:clamp(2.75rem,5vw,4.75rem)!important; }
.elementor .vibe-space--standard { padding-block:clamp(4rem,8vw,7rem)!important; }
.elementor .vibe-space--feature { padding-block:clamp(5.5rem,11vw,10rem)!important; }
/* Continuation pieces share a band — keep top padding tight so rhythm does not double. */
.elementor .vibe-section--continuation.vibe-space--compact,
.elementor .vibe-section--continuation.vibe-space--standard,
.elementor .vibe-section--continuation.vibe-space--feature {
  padding-top:clamp(0.75rem,1.5vw,1.5rem)!important;
  padding-bottom:clamp(3rem,6vw,5.5rem)!important;
}
.elementor .vibe-section .elementor-heading-title { text-wrap:balance; }
.elementor .vibe-widget--display .elementor-heading-title { font-size:clamp(3rem,7.2vw,7.2rem);line-height:.9;letter-spacing:-.04em; }
.elementor .vibe-widget--heading .elementor-heading-title { font-size:clamp(1.85rem,3.4vw,3.15rem);line-height:1.05;letter-spacing:-.025em; }
.elementor .vibe-widget--card-heading .elementor-heading-title { font-size:clamp(1.15rem,1.8vw,1.45rem);line-height:1.25;letter-spacing:-.01em; }
.elementor .vibe-widget--quote .elementor-heading-title { font-size:clamp(1.65rem,3vw,2.65rem);line-height:1.2;font-weight:500; }
.elementor .vibe-widget--eyebrow { max-width:max-content;border-bottom:1px solid currentColor;padding-bottom:.45rem;letter-spacing:.04em; }
.elementor .vibe-widget--copy { max-width:var(--vibe-copy-width,720px); }
.elementor .vibe-widget--copy p { max-width:62ch;line-height:1.72; }
.elementor .vibe-align--center .vibe-widget--copy,
.elementor .vibe-align--center .vibe-widget--eyebrow,
.elementor .vibe-align--center .vibe-widget--button { margin-inline:auto; }
.elementor .vibe-align--center .elementor-widget-button .elementor-button { margin-inline:auto; }
.elementor .vibe-align--center .elementor-widget-button .elementor-button-wrapper { text-align:center; }
.elementor .vibe-widget--button .elementor-button { transition:transform .25s ease,background-color .25s ease,color .25s ease; }
.elementor .vibe-widget--button .elementor-button:hover { transform:translateY(-2px); }
.elementor .vibe-media--portrait .elementor-widget-image img { aspect-ratio:4/5;object-fit:cover;width:100%;height:auto; }
.elementor .vibe-media--landscape .elementor-widget-image img { aspect-ratio:16/10;object-fit:cover;width:100%;height:auto; }
.elementor .vibe-media--square .elementor-widget-image img { aspect-ratio:1;object-fit:cover;width:100%;height:auto; }
.elementor .vibe-media--cinematic .elementor-widget-image img { aspect-ratio:21/9;object-fit:cover;width:100%;height:auto; }
.elementor .vibe-crop--contain .elementor-widget-image img { object-fit:contain;height:auto; }
.elementor .vibe-frame--fine .elementor-widget-image { border:1px solid color-mix(in srgb,currentColor 28%,transparent);padding:10px; }
.elementor .vibe-frame--gold .elementor-widget-image { border:1px solid var(--vibe-accent);padding:clamp(8px,1.2vw,16px); }
.elementor .vibe-frame--layered .elementor-widget-image:before { content:"";position:absolute;inset:12px -12px -12px 12px;border:1px solid var(--vibe-accent);z-index:-1; }
.elementor .vibe-frame--layered .elementor-widget-image { position:relative; }
.elementor .vibe-overlap--up { z-index:3;margin-top:clamp(-7rem,-8vw,-3rem); }
.elementor .vibe-overlap--down { z-index:2;margin-bottom:clamp(-6rem,-7vw,-2.5rem); }
.elementor .vibe-layout--full_bleed_hero { min-height:clamp(620px,88vh,980px);display:flex; }
.elementor .vibe-hero--bottom_left { align-items:flex-end; }
.elementor .vibe-hero--center { align-items:center; }
.elementor .vibe-hero--top_left { align-items:flex-start; }
.elementor .vibe-layout--full_bleed_hero > .elementor-background-overlay { background:linear-gradient(90deg,rgba(0,0,0,.74) 0%,rgba(0,0,0,.42) 48%,rgba(0,0,0,.14) 100%)!important; }
.elementor .vibe-align--right.vibe-layout--full_bleed_hero > .elementor-background-overlay,
.elementor .vibe-align--right.vibe-layout--editorial_cover > .elementor-background-overlay {
  background:linear-gradient(270deg,rgba(0,0,0,.74) 0%,rgba(0,0,0,.42) 48%,rgba(0,0,0,.14) 100%)!important;
}
.elementor .vibe-layout--full_bleed_hero .elementor-widget-heading,
.elementor .vibe-layout--full_bleed_hero .elementor-widget-text-editor,
.elementor .vibe-layout--full_bleed_hero .elementor-widget-button {
  max-width:min(42rem,92%);
}
.elementor .vibe-layout--editorial_cover { min-height:clamp(660px,92vh,1040px);display:flex;align-items:flex-end; }
.elementor .vibe-layout--editorial_cover:after { content:attr(data-vibe-index);position:absolute;right:3vw;bottom:-.2em;font-family:var(--vibe-display);font-size:clamp(9rem,24vw,24rem);line-height:.7;opacity:.06;z-index:-1;pointer-events:none; }
.elementor .vibe-layout--editorial_cover .elementor-widget-heading,
.elementor .vibe-layout--editorial_cover .elementor-widget-text-editor { max-width:min(36rem,90%); }
.elementor .vibe-layout--numbered_story .elementor-column:first-child:before { content:counter(vibe-story,decimal-leading-zero);counter-increment:vibe-story;color:var(--vibe-accent);font:500 clamp(2rem,4vw,4rem)/1 var(--vibe-display);display:block;margin-bottom:.75rem; }
.elementor { counter-reset:vibe-story; }
.elementor .vibe-layout--framed_feature .elementor-widget-image { box-shadow:0 24px 60px color-mix(in srgb,var(--vibe-ink) 16%,transparent); }
.elementor .vibe-layout--offset_narrative .elementor-column:last-child { margin-top:clamp(1.5rem,4vw,4rem); }
.elementor .vibe-layout--menu_ledger .elementor-column { border-top:1px solid color-mix(in srgb,currentColor 24%,transparent);padding-top:1.25rem; }
.elementor .vibe-layout--menu_ledger .vibe-widget--card-heading .elementor-heading-title { font-size:clamp(1.05rem,1.5vw,1.25rem); }
.elementor .vibe-layout--feature_cards .elementor-column { padding:1rem 1.1rem;border:1px solid color-mix(in srgb,currentColor 14%,transparent); }
.elementor .vibe-layout--staggered_gallery .elementor-column:nth-child(even) { transform:translateY(clamp(1.25rem,3vw,3.5rem)); }
.elementor .vibe-layout--quote_pull .elementor-heading-title:before { content:"“";color:var(--vibe-accent);font-size:1.8em;line-height:0;vertical-align:-.25em;margin-right:.08em; }
.elementor .vibe-layout--immersive_cta .elementor-widget-heading,
.elementor .vibe-layout--immersive_cta .elementor-widget-text-editor,
.elementor .vibe-layout--immersive_cta .elementor-widget-button { max-width:min(40rem,92%); }
.elementor .vibe-layout--cta_band .elementor-container { display:flex;justify-content:center; }
.elementor .vibe-layout--testimonial_wall .elementor-widget-testimonial { margin-top:.75rem; }
.elementor .vibe-layout--testimonial_wall .elementor-testimonial-wrapper { gap:.85rem; }
.elementor .vibe-signature--rule:before { content:"";display:block;width:clamp(3rem,8vw,7rem);border-top:1px solid var(--vibe-accent);margin-bottom:2rem; }
.elementor .vibe-signature--index:before { content:attr(data-vibe-index);position:absolute;top:2rem;left:max(20px,calc((100vw - var(--vibe-content-width))/2));font:500 .75rem/1 var(--vibe-body);letter-spacing:.16em;color:var(--vibe-accent); }
.elementor .vibe-signature--watermark:after { content:attr(data-vibe-index);position:absolute;right:4vw;top:10%;font:600 clamp(6rem,18vw,16rem)/.8 var(--vibe-display);opacity:.05;pointer-events:none;z-index:0; }
.elementor .vibe-tone--ink,.elementor .vibe-tone--brand { color:var(--vibe-paper); }
.elementor .vibe-tone--paper,.elementor .vibe-tone--accent { color:var(--vibe-ink); }
.elementor .vibe-grid--magazine .vibe-layout--image_grid .elementor-column:first-child { flex-grow:1.35; }
.elementor .vibe-grid--broken_grid .vibe-layout--staggered_gallery .elementor-column:nth-child(3n) { transform:translateY(clamp(-1rem,-2vw,-.5rem)); }
.elementor .vibe-rhythm--cinematic .vibe-section:not(.vibe-section--continuation) { padding-block:clamp(5rem,10vw,9rem)!important; }
.elementor .vibe-rhythm--compact_editorial .vibe-section:not(.vibe-section--continuation) { padding-block:clamp(2.5rem,4.5vw,4.5rem)!important; }
.elementor .vibe-rhythm--spacious_gallery .vibe-layout--gallery_strip,
.elementor .vibe-rhythm--spacious_gallery .vibe-layout--staggered_gallery { padding-block:clamp(3rem,7vw,7rem)!important; }
@media (max-width:1024px) {
  .elementor .vibe-section > .elementor-container { width:min(100% - 36px,var(--vibe-content-width,1180px)); }
  .elementor .vibe-layout--offset_narrative .elementor-column:last-child { margin-top:0; }
  .elementor .vibe-layout--staggered_gallery .elementor-column:nth-child(even) { transform:translateY(clamp(.75rem,2vw,1.5rem)); }
}
@media (max-width:767px) {
  .elementor .vibe-section > .elementor-container { width:min(100% - 32px,var(--vibe-content-width,1180px)); }
  .elementor .vibe-overlap--up,.elementor .vibe-overlap--down { margin-block:0; }
  .elementor .vibe-layout--staggered_gallery .elementor-column:nth-child(even),
  .elementor .vibe-grid--broken_grid .vibe-layout--staggered_gallery .elementor-column:nth-child(3n) { transform:none; }
  .elementor .vibe-layout--full_bleed_hero,.elementor .vibe-layout--editorial_cover { min-height:clamp(560px,82svh,760px); }
  .elementor .vibe-layout--menu_ledger .elementor-column,
  .elementor .vibe-layout--feature_cards .elementor-column,
  .elementor .vibe-layout--testimonial_wall .elementor-column { margin-bottom:1.25rem; }
  .elementor .vibe-widget--display .elementor-heading-title { font-size:clamp(2.4rem,11vw,3.6rem); }
}
@media (prefers-reduced-motion:reduce) {
  .elementor .vibe-widget--button .elementor-button,.elementor .vibe-layout--staggered_gallery .elementor-column { transition:none;transform:none; }
}