/*
 * Page builder components (pbx-*). Every color/size a shop owner may tune is exposed as a
 * component setting in the builder and arrives here as an inline --pbx-* custom property,
 * so these rules only provide the defaults.
 */
.pbx-serif { font-family: "Playfair Display", Georgia, serif; }
.pbx-hl { font-style: italic; color: var(--pbx-accent, #d6457a); }
.pbx-eyebrow { font-size: .75rem; letter-spacing: .22em; text-transform: uppercase; font-weight: 700; color: var(--pbx-eyebrow, var(--pbx-accent, #d6457a)); }
.pbx-eyebrow i { font-size: .95rem; vertical-align: -2px; }
.pbx-title-sm { font-size: clamp(1.25rem, 2vw, 1.6rem); }
.pbx-title-md { font-size: clamp(1.6rem, 3vw, 2.5rem); }
.pbx-title-lg { font-size: clamp(2rem, 4.2vw, 3.3rem); }
.pbx-title-xl { font-size: clamp(2.4rem, 5.6vw, 4.5rem); }

/* Buttons */
.pbx-btn { display: inline-flex; align-items: center; gap: .4rem; padding: .78rem 1.6rem; border-radius: 999px; font-weight: 700; font-size: .92rem; line-height: 1.2; border: 2px solid transparent; text-decoration: none; transition: filter .2s, background-color .2s, transform .2s; }
.pbx-btn:hover { transform: translateY(-1px); }
.pbx-btn i { font-size: 1.1rem; transition: transform .2s; }
.pbx-btn:hover i { transform: translateX(3px); }
.pbx-btn-accent { background: var(--pbx-accent, #d6457a); color: #fff; }
.pbx-btn-accent:hover { color: #fff; filter: brightness(.9); }
.pbx-btn-light { background: #fff; color: #2a191d; }
.pbx-btn-light:hover { color: #2a191d; filter: brightness(.95); }
.pbx-btn-dark { background: #2a191d; color: #fff; }
.pbx-btn-dark:hover { color: #fff; filter: brightness(1.25); }
.pbx-btn-outline { border-color: currentColor; color: inherit; background: transparent; }
.pbx-btn-outline:hover { color: inherit; background: rgba(255, 255, 255, .12); }
.pbx-btn-link { padding: 0; border: 0; border-radius: 0; color: inherit; background: none; }
.pbx-btn-link:hover { color: inherit; text-decoration: underline; }

/* Announcement bar */
.pbx-announce { background: var(--pbx-bg, #3b1d24); color: var(--pbx-color, #f6dcd3); font-size: .84rem; overflow: hidden; }
.pbx-announce .pbx-group { display: flex; align-items: center; gap: .4rem 2.75rem; padding: .55rem 1rem; }
.pbx-announce-static .pbx-group { flex-wrap: wrap; justify-content: center; }
.pbx-announce-marquee .pbx-track { display: flex; width: max-content; animation: pbxMarquee var(--pbx-speed, 35s) linear infinite; }
.pbx-announce-marquee .pbx-group { padding-right: 2.75rem; flex: none; }
.pbx-announce-marquee:hover .pbx-track { animation-play-state: paused; }
.pbx-announce-item { display: inline-flex; align-items: center; gap: .45rem; white-space: nowrap; color: inherit; text-decoration: none; }
a.pbx-announce-item:hover { color: inherit; text-decoration: underline; }
.pbx-announce-item i { color: var(--pbx-icon, #c9a27e); font-size: 1rem; }
@keyframes pbxMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) {
    .pbx-announce-marquee .pbx-track { animation: none; }
}

/* Banner (also each slide of the banner slider) */
.pbx-banner { position: relative; display: flex; overflow: hidden; isolation: isolate; min-height: var(--pbx-h, 460px); border-radius: var(--pbx-radius, 0); color: var(--pbx-color, #fff); background: var(--pbx-bg, #3b1d24); }
.pbx-banner-media { position: absolute; inset: 0; z-index: -2; }
.pbx-banner-media picture, .pbx-banner-media img { display: block; width: 100%; height: 100%; }
.pbx-banner-media img { object-fit: cover; transition: transform .8s ease; }
.pbx-banner:hover .pbx-banner-media img { transform: scale(1.04); }
.pbx-banner-overlay { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.pbx-banner-cover { position: absolute; inset: 0; z-index: 1; }
.pbx-banner-content { position: relative; display: flex; width: 100%; padding: clamp(1.5rem, 3.6vw, 3.25rem); pointer-events: none; }
.pbx-banner-inner { max-width: 620px; pointer-events: auto; position: relative; z-index: 2; }
.pbx-h-left .pbx-banner-content { justify-content: flex-start; text-align: left; }
.pbx-h-center .pbx-banner-content { justify-content: center; text-align: center; }
.pbx-h-right .pbx-banner-content { justify-content: flex-end; text-align: left; }
.pbx-v-top .pbx-banner-content { align-items: flex-start; }
.pbx-v-center .pbx-banner-content { align-items: center; }
.pbx-v-bottom .pbx-banner-content { align-items: flex-end; }
.pbx-banner .pbx-badge { display: inline-block; background: #fff; color: var(--pbx-accent, #c8102e); font-weight: 800; font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; padding: .32rem .85rem; border-radius: 999px; margin-bottom: .9rem; }
.pbx-banner .pbx-eyebrow { color: var(--pbx-eyebrow, currentColor); opacity: .9; }
.pbx-banner-title { color: inherit; font-weight: 700; line-height: 1.05; margin: .45rem 0 .8rem; }
.pbx-banner-title .pbx-hl { color: var(--pbx-accent, #ffb3cb); }
.pbx-banner-sub { font-size: 1.02rem; line-height: 1.55; opacity: .92; margin-bottom: 0; }
.pbx-banner-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.5rem; }
.pbx-h-center .pbx-banner-actions { justify-content: center; }
/* Split layouts: image on one half, text on a solid color panel on the other */
.pbx-layout-split_left, .pbx-layout-split_right { display: grid; grid-template-columns: 1fr 1fr; }
.pbx-layout-split_left .pbx-banner-media, .pbx-layout-split_right .pbx-banner-media { position: relative; inset: auto; z-index: 0; min-height: 100%; }
.pbx-layout-split_left .pbx-banner-media { order: 2; }
.pbx-layout-split_left .pbx-banner-content, .pbx-layout-split_right .pbx-banner-content { background: var(--pbx-bg, #fbefec); }
.pbx-noimage { display: flex; }
@media (max-width: 767.98px) {
    .pbx-banner { min-height: var(--pbx-hm, var(--pbx-h, 380px)); }
    .pbx-banner-inner { max-width: 100%; }
    .pbx-layout-split_left, .pbx-layout-split_right { grid-template-columns: 1fr; min-height: 0; }
    .pbx-layout-split_left .pbx-banner-media, .pbx-layout-split_right .pbx-banner-media { order: 0; height: calc(var(--pbx-hm, var(--pbx-h, 380px)) * .55); }
    .pbx-layout-overlay.pbx-h-left .pbx-banner-overlay, .pbx-layout-overlay.pbx-h-right .pbx-banner-overlay { opacity: 1; }
}

/* Banner slider */
.pbx-slider { border-radius: var(--pbx-radius, 0); overflow: hidden; }
.pbx-slider .carousel-indicators { justify-content: flex-start; margin: 0 0 1.5rem clamp(1.5rem, 4.5vw, 4rem); }
.pbx-slider .carousel-indicators [data-bs-target] { width: 28px; height: 3px; border: 0; margin: 0 4px; background: #fff; opacity: .45; }
.pbx-slider .carousel-indicators .active { opacity: 1; width: 40px; }
.pbx-slider .carousel-control-prev, .pbx-slider .carousel-control-next { width: 56px; opacity: 0; transition: opacity .2s; z-index: 3; }
.pbx-slider:hover .carousel-control-prev, .pbx-slider:hover .carousel-control-next { opacity: .85; }
.pbx-slider .carousel-control-prev i, .pbx-slider .carousel-control-next i { font-size: 2.2rem; color: #fff; background: rgba(0, 0, 0, .25); border-radius: 50%; width: 44px; height: 44px; display: grid; place-items: center; }

/* Section title */
.pbx-stitle { display: flex; gap: 1rem 2rem; margin-bottom: 1.75rem; }
.pbx-stitle-main { flex: 1; }
.pbx-stitle-center { justify-content: center; text-align: center; }
.pbx-stitle-right { justify-content: flex-end; text-align: right; }
.pbx-stitle-haslink { align-items: flex-end; flex-wrap: wrap; }
.pbx-stitle-title { font-weight: 700; line-height: 1.15; margin: .35rem 0 .5rem; color: var(--pbx-color, #2a191d); }
.pbx-stitle-sub { color: var(--pbx-sub, #7b6a6e); max-width: 640px; margin-bottom: 0; }
.pbx-stitle-center .pbx-stitle-sub { margin-left: auto; margin-right: auto; }
.pbx-stitle-right .pbx-stitle-sub { margin-left: auto; }
.pbx-stitle-link { font-weight: 700; color: var(--pbx-color, #2a191d); text-decoration: none; white-space: nowrap; display: inline-flex; align-items: center; gap: .3rem; }
.pbx-stitle-link:hover { color: var(--pbx-accent, #d6457a); }

/* Icon boxes */
.pbx-icons { display: grid; grid-template-columns: repeat(var(--pbx-cols, 4), minmax(0, 1fr)); gap: 1.25rem; }
.pbx-ibox { display: flex; gap: .9rem; align-items: center; color: inherit; text-decoration: none; }
a.pbx-ibox:hover { color: inherit; }
.pbx-icons-vertical .pbx-ibox { flex-direction: column; text-align: center; }
.pbx-icons-card .pbx-ibox { background: var(--pbx-card, #fff); border-radius: 14px; padding: 1.25rem; box-shadow: 0 1px 3px rgba(0, 0, 0, .06); }
.pbx-ibox-icon { flex: none; width: var(--pbx-isize, 52px); height: var(--pbx-isize, 52px); border-radius: 50%; display: grid; place-items: center; background: var(--pbx-ibg, transparent); color: var(--pbx-icolor, #d6457a); font-size: calc(var(--pbx-isize, 52px) * .46); }
.pbx-ibox-icon.pbx-nobg { width: auto; height: auto; font-size: calc(var(--pbx-isize, 52px) * .6); }
.pbx-ibox-body { display: block; }
.pbx-ibox-title { display: block; font-weight: 700; color: var(--pbx-tcolor, inherit); font-size: .98rem; margin-bottom: .1rem; }
.pbx-ibox-text { display: block; font-size: .86rem; line-height: 1.5; color: var(--pbx-xcolor, #7b6a6e); }
@media (max-width: 991.98px) {
    .pbx-icons { grid-template-columns: repeat(min(var(--pbx-cols, 4), 2), minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
    .pbx-icons { grid-template-columns: repeat(var(--pbx-cols-m, 1), minmax(0, 1fr)); }
}

/* Category grid */
.pbx-cats { display: grid; grid-template-columns: repeat(var(--pbx-cols, 6), minmax(0, 1fr)); gap: 1.1rem; }
.pbx-cat { display: block; text-align: center; color: inherit; text-decoration: none; }
.pbx-cat:hover { color: inherit; }
.pbx-cat-img { display: block; overflow: hidden; aspect-ratio: 3 / 4; background: #f3e9e7; }
.pbx-cat-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.pbx-cat:hover .pbx-cat-img img { transform: scale(1.06); }
.pbx-shape-circle .pbx-cat-img { aspect-ratio: 1 / 1; border-radius: 50%; }
.pbx-shape-arch .pbx-cat-img { border-radius: 999px 999px 16px 16px; }
.pbx-shape-rounded .pbx-cat-img { border-radius: 16px; }
.pbx-cat-title { display: block; font-weight: 700; margin-top: .75rem; color: var(--pbx-tcolor, #2a191d); }
.pbx-cat:hover .pbx-cat-title { text-decoration: underline; text-underline-offset: 4px; }
.pbx-cat-sub { display: block; font-size: .8rem; color: var(--pbx-scolor, #7b6a6e); }
@media (max-width: 991.98px) {
    .pbx-cats { grid-template-columns: repeat(min(var(--pbx-cols, 6), 3), minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
    .pbx-cats { grid-template-columns: repeat(var(--pbx-cols-m, 2), minmax(0, 1fr)); gap: .9rem; }
}

/* Countdown */
.pbx-countdown { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem .9rem; }
.pbx-countdown-left { justify-content: flex-start; }
.pbx-countdown-center { justify-content: center; }
.pbx-countdown-right { justify-content: flex-end; }
.pbx-cd-label, .pbx-cd-expired { color: var(--pbx-lcolor, #7b6a6e); font-size: .9rem; }
.pbx-cd-boxes { display: flex; gap: .4rem; }
.pbx-cd-box { min-width: 56px; padding: .5rem .45rem; text-align: center; line-height: 1; border-radius: 10px; background: var(--pbx-bbg, #3b1d24); color: var(--pbx-bcolor, #fff); }
.pbx-cd-num { display: block; font-size: 1.45rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.pbx-cd-unit { display: block; margin-top: .3rem; font-size: .6rem; letter-spacing: .08em; text-transform: uppercase; opacity: .75; }
@media (max-width: 767.98px) {
    .pbx-countdown { justify-content: flex-start; }
}

/* Testimonials */
.pbx-testi { display: grid; grid-template-columns: repeat(var(--pbx-cols, 3), minmax(0, 1fr)); gap: 1.25rem; }
.pbx-testi-card { display: flex; flex-direction: column; gap: 1rem; margin: 0; padding: 1.6rem; border-radius: 16px; background: var(--pbx-card, #fff); border: 1px solid rgba(0, 0, 0, .06); color: var(--pbx-color, #2a191d); }
.pbx-stars { color: var(--pbx-star, #e9a23b); font-size: 1.05rem; letter-spacing: .05em; }
.pbx-testi-text { flex: 1; margin: 0; font-size: .95rem; line-height: 1.65; }
.pbx-testi-author { display: flex; align-items: center; gap: .75rem; }
.pbx-avatar { flex: none; width: 44px; height: 44px; border-radius: 50%; overflow: hidden; display: grid; place-items: center; background: var(--pbx-accent, #d6457a); color: #fff; font-weight: 700; }
.pbx-avatar img { width: 100%; height: 100%; object-fit: cover; }
.pbx-testi-name { display: block; font-weight: 700; font-size: .92rem; }
.pbx-testi-meta { display: block; font-size: .78rem; opacity: .7; }
@media (max-width: 991.98px) {
    .pbx-testi { grid-template-columns: repeat(min(var(--pbx-cols, 3), 2), minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
    .pbx-testi { grid-template-columns: 1fr; }
}

/* Link list */
.pbx-links-title { margin-bottom: 1rem; font-size: .8rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--pbx-tcolor, inherit); }
.pbx-links ul { list-style: none; margin: 0; padding: 0; }
.pbx-links li { margin-bottom: .6rem; }
.pbx-links a, .pbx-links-text { display: inline-flex; align-items: flex-start; gap: .55rem; font-size: .92rem; line-height: 1.45; color: var(--pbx-lcolor, inherit); text-decoration: none; transition: color .2s; }
.pbx-links a:hover { color: var(--pbx-hcolor, var(--pbx-lcolor, inherit)); text-decoration: underline; text-underline-offset: 3px; }
.pbx-links i { font-size: 1.1rem; color: var(--pbx-icolor, inherit); margin-top: .05rem; }
.pbx-links-inline ul { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; }
.pbx-links-inline li { margin: 0; }

/* Social icons */
.pbx-social { display: flex; flex-wrap: wrap; gap: .5rem; }
.pbx-social-center { justify-content: center; }
.pbx-social-right { justify-content: flex-end; }
.pbx-social a { width: var(--pbx-size, 40px); height: var(--pbx-size, 40px); display: grid; place-items: center; border-radius: 50%; font-size: calc(var(--pbx-size, 40px) * .5); color: var(--pbx-color, inherit); background: var(--pbx-bg, transparent); border: 1px solid var(--pbx-border, currentColor); text-decoration: none; transition: background-color .2s, border-color .2s, transform .2s; }
.pbx-social-rounded a { border-radius: 10px; }
.pbx-social a:hover { background: var(--pbx-hbg, #d6457a); border-color: var(--pbx-hbg, #d6457a); color: #fff; transform: translateY(-2px); }

/* Badges / chips */
.pbx-badges { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
.pbx-badges-center { justify-content: center; }
.pbx-badges-right { justify-content: flex-end; }
.pbx-badges-label { font-size: .8rem; margin-right: .25rem; opacity: .85; }
.pbx-chip { display: inline-flex; align-items: center; gap: .3rem; padding: .3rem .6rem; border-radius: 6px; font-size: .7rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; background: var(--pbx-bg, #fff); color: var(--pbx-color, #3b1d24); }
.pbx-chip i { font-size: .95rem; }
@media (max-width: 767.98px) {
    .pbx-badges-right { justify-content: flex-start; }
}

/* Floating WhatsApp button */
.pbx-wa { position: fixed; bottom: 20px; z-index: 1040; display: flex; align-items: center; gap: .6rem; text-decoration: none; }
.pbx-wa-right { right: 20px; }
.pbx-wa-left { left: 20px; flex-direction: row-reverse; }
.pbx-wa-btn { width: 58px; height: 58px; border-radius: 50%; display: grid; place-items: center; font-size: 2rem; color: #fff; background: var(--pbx-bg, #25d366); box-shadow: 0 8px 24px rgba(0, 0, 0, .25); animation: pbxPulse 2.4s infinite; }
.pbx-wa-label { padding: .45rem .9rem; border-radius: 999px; background: #fff; color: #2a191d; font-size: .85rem; font-weight: 600; box-shadow: 0 4px 14px rgba(0, 0, 0, .15); }
@keyframes pbxPulse { 0% { box-shadow: 0 0 0 0 rgba(37, 211, 102, .5); } 70% { box-shadow: 0 0 0 16px rgba(37, 211, 102, 0); } 100% { box-shadow: 0 0 0 0 rgba(37, 211, 102, 0); } }
@media (max-width: 767.98px) {
    .pbx-wa-label { display: none; }
}

/* Columns of a page builder section stack on mobile: keep them from touching */
@media (max-width: 767.98px) {
    .pb-section .row > .pb-column + .pb-column { margin-top: 1.5rem; }
    .pb-section .row.g-0 > .pb-column + .pb-column { margin-top: 0; }
}
