.flex-grid { display: grid; gap: 1.25rem; }
.flex-grid--1 { grid-template-columns: 1fr; }
.flex-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.flex-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.flex-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.flex-empty { padding: 1.5rem; border: 1px dashed var(--fr-line, #ddd); border-radius: var(--fr-radius, 12px); text-align: center; }

.flex-banner { position: relative; display: grid; min-height: var(--flex-banner-height, 620px); overflow: hidden; border-radius: var(--fr-radius, 18px); background: var(--flex-banner-image) center/cover; }
.flex-banner__shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(6,5,9,.88), rgba(6,5,9,.12)); }
.flex-banner__content { position: relative; z-index: 2; align-self: end; width: min(100%, 760px); padding: clamp(2rem, 8vw, 6rem); color: #fff; }
.flex-banner--center .flex-banner__content { justify-self: center; align-self: center; text-align: center; }
.flex-banner--center .eyebrow { justify-content: center; }
.flex-banner--right .flex-banner__content { justify-self: end; text-align: right; }
.flex-banner--right .eyebrow { justify-content: flex-end; }

.flex-project { position: relative; overflow: hidden; border-radius: var(--fr-radius, 18px); background: var(--fr-surface, #15131c); }
.flex-project__image { position: relative; display: grid; align-items: end; aspect-ratio: 4/3; color: #fff; text-decoration: none; }
.flex-project__image > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.flex-project__image > span:first-child:not(.flex-project__veil) { place-self: center; color: var(--fr-primary, #e23b46); font-size: 4rem; }
.flex-project__veil { position: absolute; inset: 0; background: linear-gradient(to top, rgba(6,5,9,.92), transparent 65%); }
.flex-project__meta { position: relative; z-index: 2; display: grid; padding: 1.4rem; }
.flex-project__meta small { color: var(--fr-secondary, #d5a84b); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; }
.flex-project__meta strong { font-family: var(--fr-heading, Georgia, serif); font-size: 1.5rem; }
.flex-project:hover img { transform: scale(1.05); }

.flex-testimonial { position: relative; margin: 0; padding: clamp(1.4rem, 3vw, 2.4rem); border: 1px solid var(--fr-line, #ddd); border-radius: var(--fr-radius, 18px); background: var(--fr-surface, #fff); }
.flex-testimonial__quote { position: absolute; top: .3rem; right: 1.2rem; color: var(--fr-primary, #e23b46); font-family: Georgia, serif; font-size: 5.5rem; line-height: 1; opacity: .3; }
.flex-testimonial blockquote { margin: 1rem 0 1.5rem; padding: 0; border: 0; font-family: var(--fr-heading, Georgia, serif); font-size: 1.25rem; }
.flex-testimonial blockquote p:last-child { margin: 0; }
.flex-testimonial figcaption { display: flex; align-items: center; gap: .75rem; }
.flex-testimonial figcaption img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.flex-testimonial figcaption span { display: grid; }
.flex-testimonial figcaption small { color: var(--fr-muted, #777); }
.flex-rating { color: var(--fr-secondary, #d5a84b); letter-spacing: .12em; }

.flex-countdown { padding: clamp(1.5rem, 5vw, 3rem); border: 1px solid var(--fr-line, #ddd); border-radius: var(--fr-radius, 18px); background: radial-gradient(circle at 0 0, rgba(226,59,70,.2), transparent 50%), var(--fr-surface, #fff); }
.flex-countdown__units { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.flex-countdown__units > span { display: grid; padding: 1rem; border: 1px solid var(--fr-line, #ddd); border-radius: 12px; text-align: center; }
.flex-countdown__units strong { font-family: var(--fr-heading, Georgia, serif); font-size: clamp(2rem, 6vw, 5rem); line-height: 1; }
.flex-countdown__units small { margin-top: .5rem; color: var(--fr-muted, #777); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; }

.flex-message { display: grid; grid-template-columns: minmax(120px, auto) 1fr; gap: 1rem; margin: 1.5rem 0; padding: 1rem 1.2rem; border: 1px solid var(--fr-line, #ddd); border-left: 4px solid #4c8bf5; border-radius: 10px; background: var(--fr-surface, #fff); }
.flex-message--success { border-left-color: #36a269; }
.flex-message--warning { border-left-color: #d5a84b; }
.flex-message--danger { border-left-color: #e23b46; }
.flex-message p:last-child { margin-bottom: 0; }
.flex-lightbox-content { display: none; }

.flex-slider { position: relative; overflow: hidden; }
.flex-slider__track { display: flex; transition: transform .55s cubic-bezier(.2,.7,.2,1); }
.flex-slide { position: relative; display: grid; align-items: end; min-width: 100%; min-height: min(780px, 85vh); padding: clamp(2rem, 8vw, 7rem); background: linear-gradient(to right, rgba(6,5,9,.9), rgba(6,5,9,.12)), var(--flex-slide-image) center/cover; color: #fff; }
.flex-slide__content { width: min(720px, 100%); }
.flex-slide h2 { font-size: clamp(3rem, 7vw, 6.5rem); }
.flex-slider__prev, .flex-slider__next { position: absolute; top: 50%; display: grid; place-items: center; width: 48px; height: 48px; border: 1px solid rgba(255,255,255,.35); border-radius: 50%; background: rgba(9,8,13,.45); color: #fff; transform: translateY(-50%); cursor: pointer; }
.flex-slider__prev { left: 1rem; }
.flex-slider__next { right: 1rem; }

.flex-post { overflow: hidden; border: 1px solid var(--fr-line, #ddd); border-radius: var(--fr-radius, 18px); background: var(--fr-surface, #fff); }
.flex-post > a { color: inherit; text-decoration: none; }
.flex-post img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.flex-post__body { padding: 1.25rem; }
.flex-post__body small { color: var(--fr-secondary, #d5a84b); text-transform: uppercase; }
.flex-post__body h3 { margin-top: .4rem; }
.flex-post__body p { color: var(--fr-muted, #777); }

.flex-widget-posts { display: grid; gap: .8rem; margin: 0; padding: 0; list-style: none; }
.flex-widget-posts li { margin: 0 !important; }
.flex-widget-posts a { display: grid; grid-template-columns: 64px 1fr; align-items: center; gap: .8rem; color: inherit; text-decoration: none; }
.flex-widget-posts img, .flex-widget-posts__placeholder { width: 64px; height: 64px; border-radius: 10px; object-fit: cover; }
.flex-widget-posts__placeholder { display: grid; place-items: center; background: var(--fr-surface-2, #eee); color: var(--fr-primary, #e23b46); }
.flex-widget-posts a > span:last-child { display: grid; }
.flex-widget-posts strong { font-family: var(--fr-heading, Georgia, serif); line-height: 1.2; }
.flex-widget-posts small { margin-top: .25rem; color: var(--fr-muted, #777); font-size: .68rem; text-transform: uppercase; }
.flex-widget-products .woocommerce ul.products { grid-template-columns: 1fr !important; gap: .7rem; }
.flex-widget-products .woocommerce ul.products li.product { display: grid; grid-template-columns: 76px 1fr; align-items: center; min-height: 76px; padding: 0; text-align: left; }
.flex-widget-products .woocommerce ul.products li.product a.woocommerce-LoopProduct-link { display: grid; grid-template-columns: 76px 1fr; grid-template-rows: auto auto; align-items: center; }
.flex-widget-products .woocommerce ul.products li.product a img { grid-row: 1 / 3; width: 76px; height: 76px; margin: 0 .8rem 0 0; border-radius: 8px; object-fit: cover; }
.flex-widget-products .woocommerce-loop-product__title, .flex-widget-products .price { padding: 0 .7rem 0 0 !important; }
.flex-widget-products .button, .flex-widget-products .onsale { display: none !important; }

@media (max-width: 900px) {
	.flex-grid--4, .flex-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
	.flex-grid--4, .flex-grid--3, .flex-grid--2 { grid-template-columns: 1fr; }
	.flex-countdown__units { grid-template-columns: repeat(2, 1fr); }
	.flex-message { grid-template-columns: 1fr; }
	.flex-slide { min-height: 670px; padding-inline: 1.25rem; }
}

/* Flex Red visual builder output. */
.flex-red-builder-layout { position: relative; width: 100%; }
.flex-red-builder-layout.frb-page-width--boxed { max-width: 1200px; margin-inline: auto; padding-inline: clamp(1rem,3vw,2rem); }
.flex-red-builder-layout.frb-page-width--wide { max-width: 1480px; margin-inline: auto; padding-inline: clamp(1rem,2vw,1.5rem); }
.flex-red-builder-layout.frb-page-width--full { max-width: none; }
.flex-red-builder-layout *, .flex-red-builder-layout *:before, .flex-red-builder-layout *:after { box-sizing: border-box; }
.flex-red-builder-layout .frb-node { position: relative; }
.flex-red-builder-layout .frb-node--section { width: 100%; }
.flex-red-builder-layout .frb-section__inner { width: 100%; margin-inline: auto; }
.flex-red-builder-layout .frb-width--boxed { max-width: 1200px; padding-inline: clamp(1rem,3vw,2rem); }
.flex-red-builder-layout .frb-width--wide { max-width: 1480px; padding-inline: clamp(1rem,2vw,1.5rem); }
.flex-red-builder-layout .frb-width--full { max-width: none; }
.flex-red-builder-layout .frb-node--row { display: grid; grid-template-columns: repeat(12,minmax(0,1fr)); align-items: var(--frb-align,stretch); gap: var(--frb-gap,24px); width: 100%; }
.flex-red-builder-layout .frb-node--column { display: flex; flex-direction: column; min-width: 0; }
.flex-red-builder-layout .frb-node--heading h1,
.flex-red-builder-layout .frb-node--heading h2,
.flex-red-builder-layout .frb-node--heading h3,
.flex-red-builder-layout .frb-node--heading h4,
.flex-red-builder-layout .frb-node--heading h5,
.flex-red-builder-layout .frb-node--heading h6 { margin-top: 0; }
.flex-red-builder-layout .frb-rich-text > :first-child { margin-top: 0; }
.flex-red-builder-layout .frb-rich-text > :last-child { margin-bottom: 0; }
.flex-red-builder-layout .frb-button { display: inline-flex; align-items: center; justify-content: center; gap: .45em; border: 1px solid var(--fr-accent,#b52c3a); border-radius: 7px; background: var(--fr-accent,#b52c3a); color: #fff; font-weight: 700; line-height: 1.2; text-decoration: none; transition: transform .18s,background .18s,color .18s; }
.flex-red-builder-layout .frb-button:hover { color: #fff; transform: translateY(-2px); }
.flex-red-builder-layout .frb-button--small { padding: .55rem .85rem; font-size: .82rem; }
.flex-red-builder-layout .frb-button--medium { padding: .8rem 1.25rem; }
.flex-red-builder-layout .frb-button--large { padding: 1.05rem 1.65rem; font-size: 1.08rem; }
.flex-red-builder-layout .frb-button--outline { background: transparent; color: var(--fr-accent,#b52c3a); }
.flex-red-builder-layout .frb-button--link { padding-inline: 0; border-color: transparent; background: transparent; color: var(--fr-accent,#b52c3a); }
.flex-red-builder-layout .frb-node--image { margin: 0; }
.flex-red-builder-layout .frb-node--image img { display: block; width: 100%; height: auto; border-radius: inherit; }
.flex-red-builder-layout figcaption { margin-top: .55rem; color: var(--fr-muted,#777); font-size: .82rem; }
.flex-red-builder-layout .frb-node--banner { position: relative; display: grid; min-height: 620px; overflow: hidden; background: var(--frb-banner-image) center/cover no-repeat; color: #fff; }
.flex-red-builder-layout .frb-banner__shade { position: absolute; inset: 0; background: linear-gradient(90deg,rgba(8,6,10,var(--frb-banner-overlay,.55)),rgba(8,6,10,.08)); }
.flex-red-builder-layout .frb-banner__content { position: relative; z-index: 1; align-self: center; width: min(760px,100%); padding: clamp(2rem,8vw,7rem); }
.flex-red-builder-layout .frb-banner__content h2 { margin: .2em 0; color: inherit; font-size: clamp(2.5rem,7vw,6.5rem); line-height: .96; }
.flex-red-builder-layout .frb-banner__content p:not(.eyebrow) { max-width: 630px; font-size: clamp(1rem,2vw,1.25rem); }
.flex-red-builder-layout .frb-banner__content.frb-align--center { justify-self: center; text-align: center; }
.flex-red-builder-layout .frb-banner__content.frb-align--center p { margin-inline: auto; }
.flex-red-builder-layout .frb-banner__content.frb-align--right { justify-self: end; text-align: right; }
.flex-red-builder-layout .frb-banner__content.frb-align--right p { margin-left: auto; }
.flex-red-builder-layout .frb-node--slider { position: relative; overflow: hidden; }
.flex-red-builder-layout .frb-builder-slide { display: block; flex: 0 0 100%; min-width: 100%; min-height: 0; padding: 0; background: transparent; color: inherit; }
.flex-red-builder-layout .frb-builder-slide > .frb-node { width: 100%; }
.flex-red-builder-layout .frb-node--divider hr { height: 0; margin: 1.5rem auto; border: 0; border-top-width: 1px; }
.flex-red-builder-layout .frb-node--icon_box { display: flex; flex-direction: column; gap: 1rem; padding: clamp(1.25rem,3vw,2rem); border: 1px solid var(--fr-line,#ddd); border-radius: var(--fr-radius,18px); }
.flex-red-builder-layout .frb-node--icon_box[data-layout="left"] { flex-direction: row; align-items: flex-start; }
.flex-red-builder-layout .frb-icon-box__icon { display: grid; place-items: center; width: 52px; height: 52px; border: 1px solid currentColor; border-radius: 50%; color: var(--fr-accent,#b52c3a); font: 700 1.1rem Georgia,serif; }
.flex-red-builder-layout .frb-node--icon_box h3 { margin: 0 0 .4rem; }
.flex-red-builder-layout .frb-node--icon_box p { margin: 0; color: var(--fr-muted,#777); }
.flex-red-builder-layout .frb-video { position: relative; aspect-ratio: 16/9; overflow: hidden; border-radius: var(--fr-radius,18px); background: #0c0b0f; }
.flex-red-builder-layout .frb-video iframe,
.flex-red-builder-layout .frb-video video { width: 100%; height: 100%; }
.flex-red-builder-layout .frb-accordion { border-top: 1px solid var(--fr-line,#ddd); }
.flex-red-builder-layout .frb-accordion details { border-bottom: 1px solid var(--fr-line,#ddd); }
.flex-red-builder-layout .frb-accordion summary { position: relative; padding: 1.2rem 2.4rem 1.2rem 0; font-weight: 700; cursor: pointer; list-style: none; }
.flex-red-builder-layout .frb-accordion summary:after { content: "+"; position: absolute; right: .5rem; }
.flex-red-builder-layout .frb-accordion details[open] summary:after { content: "−"; }
.flex-red-builder-layout .frb-accordion details > div { padding: 0 0 1.2rem; }
.flex-red-builder-layout .frb-tabs__nav { display: flex; flex-wrap: wrap; gap: .25rem; border-bottom: 1px solid var(--fr-line,#ddd); }
.flex-red-builder-layout .frb-tabs__nav button { padding: .8rem 1rem; border: 0; border-bottom: 2px solid transparent; background: transparent; color: inherit; cursor: pointer; }
.flex-red-builder-layout .frb-tabs__nav button[aria-selected=true] { border-bottom-color: var(--fr-accent,#b52c3a); color: var(--fr-accent,#b52c3a); }
.flex-red-builder-layout .frb-tabs__panels { padding: 1.25rem 0; }
.flex-red-builder-layout .frb-menu { display: flex; flex-wrap: wrap; gap: .7rem 1.2rem; margin: 0; padding: 0; list-style: none; }
.flex-red-builder-layout .frb-menu--vertical { flex-direction: column; }
.flex-red-builder-layout .frb-menu li { margin: 0; list-style: none; }
.flex-red-builder-layout .frb-search { display: flex; gap: .5rem; }
.flex-red-builder-layout .frb-search input { min-width: 0; flex: 1; }
.flex-red-builder-layout .frb-search button { border: 0; border-radius: 6px; background: var(--fr-accent,#b52c3a); color: #fff; }
.flex-red-builder-layout .frb-map { display: block; width: 100%; border: 0; border-radius: var(--fr-radius,18px); }
.flex-red-builder-layout .frb-map-placeholder { display: grid; place-items: center; min-height: 280px; border: 1px dashed var(--fr-line,#ddd); border-radius: var(--fr-radius,18px); color: var(--fr-muted,#777); }
.flex-red-builder-layout .frb-social { display: flex; flex-wrap: wrap; gap: .55rem; }
.flex-red-builder-layout .frb-social a { padding: .55rem .8rem; border: 1px solid var(--fr-line,#ddd); border-radius: 99px; text-decoration: none; }
.flex-red-builder-layout .frb-social--filled a { border-color: var(--fr-accent,#b52c3a); background: var(--fr-accent,#b52c3a); color: #fff; }
.flex-red-builder-layout .frb-social--text a { padding-inline: 0; border-color: transparent; border-radius: 0; }
.flex-red-builder-layout .frb-widget-area { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.25rem; }
.flex-red-builder-layout .frb-empty-layout { padding: 4rem 1.25rem; color: var(--fr-muted,#777); text-align: center; }
.flex-red-builder-layout .frb-hide-desktop { display: none !important; }

@media (max-width: 849px) {
	.flex-red-builder-layout .frb-hide-desktop { display: revert !important; }
	.flex-red-builder-layout .frb-hide-tablet { display: none !important; }
	.flex-red-builder-layout .frb-widget-area { grid-template-columns: 1fr; }
}
@media (max-width: 549px) {
	.flex-red-builder-layout .frb-hide-tablet { display: revert !important; }
	.flex-red-builder-layout .frb-hide-mobile { display: none !important; }
	.flex-red-builder-layout .frb-node--column { grid-column: span 12; }
	.flex-red-builder-layout .frb-node--row { gap: min(var(--frb-gap,24px),24px); }
	.flex-red-builder-layout .frb-banner__content { padding: 2rem 1.25rem; }
	.flex-red-builder-layout .frb-search { flex-direction: column; }
}
