/* Replica Engine: rules that replace what Elementor's scripts did at runtime. */

/* Menus: desktop submenus on hover and keyboard focus; dropdown submenus on tap. */
.elementor-nav-menu ul{display:none}
.elementor-nav-menu--main .elementor-nav-menu li:hover>ul,
.elementor-nav-menu--main .elementor-nav-menu li:focus-within>ul{display:block}
.elementor-nav-menu--dropdown .elementor-nav-menu li.cf-open>ul{display:block;position:static;width:auto}
.elementor-nav-menu--dropdown .elementor-nav-menu li.cf-open>a .sub-arrow{transform:rotate(180deg)}
.elementor-menu-toggle svg{width:1em;height:1em;fill:currentColor}
.elementor-nav-menu .sub-arrow svg{width:1em;height:1em;fill:currentColor}

/* Icons are inline SVG now (no icon fonts); colors follow Elementor's own svg fill rules. */
.e-font-icon-svg{display:inline-block;height:1em;width:1em;fill:currentColor;overflow:visible}
.elementor-icon-list-icon .e-font-icon-svg{width:var(--e-icon-list-icon-size,1em);height:var(--e-icon-list-icon-size,1em)}

/* Gallery grid (was positioned by script). */
.cf-gallery{display:grid;grid-template-columns:repeat(var(--cf-cols-d,4),minmax(0,1fr));gap:var(--cf-gap-d,10px)}
@media (max-width:1024px){.cf-gallery{grid-template-columns:repeat(var(--cf-cols-t,2),minmax(0,1fr));gap:var(--cf-gap-t,10px)}}
@media (max-width:767px){.cf-gallery{grid-template-columns:repeat(var(--cf-cols-m,1),minmax(0,1fr));gap:var(--cf-gap-m,10px)}}
.cf-gallery .e-gallery-item{position:relative;display:block;overflow:hidden}
.cf-gallery .e-gallery-image{display:block;width:100%;padding-bottom:var(--cf-ratio,66.6667%);background-size:cover;background-position:center;transition:transform .4s}
.cf-gallery .elementor-gallery-item__overlay{position:absolute;inset:0;opacity:0;transition:opacity .3s}
.cf-gallery .e-gallery-item:hover .elementor-gallery-item__overlay,.cf-gallery .e-gallery-item:focus .elementor-gallery-item__overlay{opacity:1}

/* Carousels. */
.cf-swiper{overflow:hidden;position:relative}
.cf-swiper .swiper-wrapper{display:flex;transition-property:transform;transition-timing-function:ease}
.cf-swiper .swiper-slide{flex-shrink:0;height:auto}
.elementor-swiper-button{cursor:pointer;display:inline-flex}
.elementor-swiper-button svg{width:1em;height:1em;fill:currentColor}
.swiper-pagination-bullet{cursor:pointer}

/* Lightbox. */
.cf-lightbox{position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.9);display:none;align-items:center;justify-content:center}
.cf-lightbox.is-open{display:flex}
.cf-lightbox figure{margin:0;max-width:92vw;max-height:88vh;text-align:center}
.cf-lightbox img{max-width:92vw;max-height:80vh;object-fit:contain;display:block;margin:0 auto}
.cf-lightbox figcaption{color:#eee;font-size:15px;margin-top:10px}
.cf-lightbox button{position:absolute;background:none;border:0;color:#fff;font-size:44px;line-height:1;cursor:pointer;padding:12px}
.cf-lightbox button:focus-visible{outline:2px solid #fff}
.cf-lb-close{top:8px;right:12px}.cf-lb-prev{left:8px;top:50%;transform:translateY(-50%)}.cf-lb-next{right:8px;top:50%;transform:translateY(-50%)}
html.cf-lb-lock{overflow:hidden}

/* Forms. */
.cf-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
.elementor-form-waiting [type=submit]{opacity:.6;cursor:wait}
.elementor-form .elementor-message{width:100%;margin-top:12px}

/* Video embeds built from widget settings. */
.elementor-widget-video .elementor-video{width:100%;height:100%}
.elementor-widget-video .elementor-video iframe,.elementor-widget-video .elementor-video video{width:100%;height:100%;border:0;display:block;aspect-ratio:16/9}
/* Toggles and accordions. */
.elementor-tab-title{cursor:pointer}
.elementor-tab-title:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.elementor-tab-title.elementor-active .elementor-toggle-icon-closed,.elementor-tab-title.elementor-active .elementor-accordion-icon-closed{display:none}
.elementor-tab-title:not(.elementor-active) .elementor-toggle-icon-opened,.elementor-tab-title:not(.elementor-active) .elementor-accordion-icon-opened{display:none}
.swiper-slide-image{display:block;max-width:100%;height:auto}
/* Decorative elements placed past the edge (absolute images, offsets) never cause sideways scrolling.
   clip, not hidden: it creates no scroll container, so the sticky header keeps working. */
html,body.cf-replica{overflow-x:clip}

/* Elementor Pro popups as native dialogs: the base dialog layout Elementor's script used to supply.
   Popup-specific size, colors and close button come from the captured popup CSS. */
.dialog-type-lightbox{position:fixed;inset:0;width:100%;height:100%;z-index:2147483000}
.elementor-popup-modal .dialog-widget-content{position:relative;margin:auto}
.elementor-popup-modal .dialog-close-button{position:absolute;cursor:pointer;line-height:1;align-items:center;justify-content:center;padding:.3em;border-radius:50%}
.elementor-popup-modal .dialog-close-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.elementor-popup-modal .elementor-location-popup{display:block!important}
html.cf-popup-open{overflow:hidden}

/* Background videos (sections and containers). */
.elementor-background-video-container{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;direction:ltr}
.elementor-background-video-container .elementor-background-video-hosted{width:100%;height:100%;object-fit:cover;display:block}
.elementor-background-video-container .cf-bgv{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border:0;max-width:none}
/* @polish (left out of exact replicas) */
/* A widget is never squeezed shorter than its own content (a heading that wraps to two lines
   on a phone must push the next block down, not run into it). */
.e-con>.elementor-widget-heading,.e-con>.elementor-widget-text-editor,.e-con>.elementor-widget-button,.e-con>.elementor-widget-icon-list{min-height:fit-content}
/* Phones: comfortable tap targets for list links (phone, email, address) and FAQ toggles. */
@media (max-width:767px){
	.elementor-icon-list-item>a{min-height:44px;display:inline-flex;align-items:center}
	.elementor-tab-title{min-height:44px;display:flex;align-items:center}
	.elementor-tab-title>a,.elementor-toggle-title,.elementor-accordion-title{display:inline-block;padding-block:6px}
}
@media (max-width:767px){
	.elementor-post__title a,.elementor-post__read-more{display:inline-block;padding-block:10px}
}

/* @endpolish */
/* Tabs: keyboard focus ring on the tab row. */
.elementor-tabs .elementor-tab-title:focus-visible{outline:2px solid currentColor;outline-offset:-4px}
/* @polish */
/* A section/container background photo left at Elementor's "default" size (actual size, tiled from the
   top left) leaves a gap or repeats on wide screens. Unless the site set a size, position or repeat
   itself (Elementor's own rules are more specific and still win), a background photo fills its block. */
.e-con[data-settings*='"background_background":"classic"'],.elementor-section[data-settings*='"background_background":"classic"'],.elementor-column[data-settings*='"background_background":"classic"']>.elementor-widget-wrap{background-size:cover;background-position:center center;background-repeat:no-repeat}

.elementor-button.cf-btn-brand{transition:filter .15s}
.elementor-button.cf-btn-brand:hover,.elementor-button.cf-btn-brand:focus-visible{filter:brightness(1.07)}

/* ===== Polish layer: sizing, spacing and function to web best practice (no redesign: colors,
   fonts and layout stay the site's own). ===== */
/* Post cards: the photo fills its frame, the text column fills the card, Read more sits at the
   bottom of every card in a row and is a real tap target. */
.elementor-posts .elementor-post__thumbnail{overflow:hidden}
.elementor-posts .elementor-post__thumbnail img{position:absolute!important;top:0!important;left:0!important;width:100%!important;height:100%!important;max-width:none!important;object-fit:cover;transform:none!important}
.elementor-posts--skin-cards .elementor-post__card{display:flex;flex-direction:column;height:100%}
.elementor-posts--skin-cards .elementor-post__text{display:flex;flex-direction:column;flex:1 1 auto}
.elementor-posts .elementor-post__excerpt{margin-bottom:14px}
.elementor-posts .elementor-post__read-more{margin-top:auto;align-self:flex-start;font-weight:700;letter-spacing:.04em;padding-block:10px}
/* Image carousels: a slide narrower than the carousel sits centered; dots are visible and easy to hit. */
.elementor-image-carousel .swiper-slide{display:flex;justify-content:center;align-items:center}
.elementor-image-carousel .swiper-slide-inner{margin:0 auto}
.swiper-pagination-bullet{width:10px;height:10px;opacity:.45;margin:0 6px!important}
.swiper-pagination-bullet-active{opacity:1;background:var(--cf-primary,currentColor)}
/* Forms: comfortable fields, visible checkboxes aligned with their text, full-size buttons. */
.elementor-field-group .elementor-field-textual{min-height:44px}
.elementor-field-group textarea.elementor-field-textual{min-height:120px}
.elementor-field-subgroup .elementor-field-option{display:flex;align-items:flex-start;gap:10px}
.elementor-field-subgroup input[type=checkbox],.elementor-field-subgroup input[type=radio],input.elementor-acceptance-field{width:20px;height:20px;min-width:20px;margin:3px 0 0;accent-color:var(--cf-primary,auto)}
.elementor-form .elementor-button{min-height:48px;display:inline-flex;align-items:center;justify-content:center}
/* Keyboard focus is always visible. */
a:focus-visible,button:focus-visible,[role="button"]:focus-visible,[role="tab"]:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--cf-primary,#1a73e8);outline-offset:2px}
/* Lists in body text read as lists. */
.elementor-widget-text-editor li{margin-bottom:.35em}
/* Articles (single posts): comfortable reading size, line height, measure and rhythm. */
.elementor-widget-theme-post-content{font-size:18px;line-height:1.7}
.elementor-widget-theme-post-content > .elementor-widget-container{max-width:64ch}
.elementor-widget-theme-post-content p{margin:0 0 1.1em}
.elementor-widget-theme-post-content :is(h2,h3,h4){margin:1.6em 0 .5em;line-height:1.25}
.elementor-widget-theme-post-content :is(ul,ol){margin:0 0 1.1em;padding-left:1.3em}
.elementor-widget-theme-post-content li{margin-bottom:.4em}
.elementor-widget-theme-post-content img{max-width:100%;height:auto;border-radius:12px;margin:.4em 0 1.2em}
@media (max-width:767px){.elementor-widget-theme-post-content{font-size:17px}}
.elementor-widget-theme-post-content .cf-lead{display:block;font-weight:700;font-size:1.15em;line-height:1.3;color:var(--cf-primary,inherit);margin:.2em 0 .35em}
/* Buttons in page content are full-size tap targets (44px, 14px label). */
.elementor-location-single .elementor-button,.elementor[data-elementor-type="wp-page"] .elementor-button,.elementor[data-elementor-type="wp-post"] .elementor-button,.elementor-tab-content .elementor-button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;font-size:max(14px,1em)}
/* Phones: videos use the full width; testimonial arrows never sit on the quote. */
@media (max-width:767px){
.elementor-widget-video{width:100%!important;max-width:100%!important;flex-shrink:0;min-height:fit-content}
.elementor-widget-testimonial-carousel .elementor-testimonial{padding-left:30px;padding-right:30px}
}
/* @endpolish */
/* Right-to-left pages (Dari, Pashto, Arabic, Hebrew...): page content reads and lays out right to left;
   the site header and footer keep the site's own direction. */
.cf-rtl .elementor[data-elementor-type="wp-page"]{direction:rtl}
.cf-rtl .elementor[data-elementor-type="wp-page"] :is(ul,ol){padding-right:1.3em;padding-left:0}
.cf-rtl .cf-chrome,.cf-rtl .elementor-location-footer,.cf-rtl footer{direction:ltr}
/* Small icon links (social icons) keep their look but get a 44px tap area. */
.elementor-social-icon{position:relative}
.elementor-social-icon::after{content:"";position:absolute;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}
/* Phones: small text links get a 44px tap area without moving anything (padding offset by margin). */
@media (max-width:767px){
a.cf-tap{display:inline-block;padding-top:12px;padding-bottom:12px;margin-top:-12px;margin-bottom:-12px}
.elementor-widget-theme-post-content :is(img,figure).alignright,.elementor-widget-theme-post-content :is(img,figure).alignleft,.elementor-widget-theme-post-content .wp-block-image .alignright,.elementor-widget-theme-post-content .wp-block-image .alignleft{float:none;display:block;margin:1em 0;max-width:100%;width:100%;height:auto}
}
/* Elementor menus inside pages and footers: phone dropdown submenus open on tap; toggles are 44px. */
.elementor-nav-menu--dropdown .menu-item-has-children>.sub-menu{display:none}
.elementor-nav-menu--dropdown .menu-item-has-children.cf-sub-open>.sub-menu{display:block;position:static;width:auto;box-shadow:none}
.elementor-nav-menu--dropdown .menu-item-has-children.cf-sub-open>a .sub-arrow{transform:rotate(180deg)}
.elementor-menu-toggle{min-width:44px;min-height:44px;justify-content:center;align-items:center}

/* Lists the capture never saw (blog page, categories, search): tidy cards in the site's chrome. */
.cf-replica .cf-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:28px;margin:24px 0}
.cf-replica .cf-list .post{margin:0;display:flex;flex-direction:column;gap:10px}
.cf-replica .cf-list .post img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:10px;display:block}
.cf-replica .cf-list .entry-title{font-size:1.25rem;line-height:1.3;margin:0}
.cf-replica .cf-list p{margin:0}

/* Store (WooCommerce) refinements inside the captured design: usable at every width. */
.cf-replica .woocommerce table.cart td.actions .coupon .input-text,.cf-replica .woocommerce #coupon_code{min-width:180px;min-height:44px}
.cf-replica .woocommerce table.cart td.actions .button,.cf-replica .woocommerce .cart_totals .checkout-button,.cf-replica .woocommerce #place_order{min-height:44px}
.cf-replica .woocommerce .cart_totals h2,.cf-replica .woocommerce-checkout h3{font-size:1.3rem;line-height:1.3;margin:24px 0 12px}
.cf-replica .woocommerce .quantity .qty{min-height:40px;min-width:64px;text-align:center}
.cf-replica .woocommerce form .form-row input.input-text,.cf-replica .woocommerce form .form-row select,.cf-replica .woocommerce form .form-row textarea{min-height:44px;font-size:16px}
.cf-replica .woocommerce .woocommerce-info::before,.cf-replica .woocommerce .woocommerce-message::before,.cf-replica .woocommerce .woocommerce-error::before{position:absolute;left:1em;top:1em}
.cf-replica .woocommerce .woocommerce-info,.cf-replica .woocommerce .woocommerce-message,.cf-replica .woocommerce .woocommerce-error{position:relative;padding-left:3em}
@media (max-width:767px){
.cf-replica .elementor-widget-woocommerce-product-title .product_title{font-size:clamp(28px,8.5vw,40px)!important;line-height:1.15!important}
.cf-replica .woocommerce table.cart td.actions .coupon{display:flex;flex-wrap:wrap;gap:8px}
.cf-replica .woocommerce table.cart td.actions .coupon .input-text{flex:1 1 160px;width:auto!important}
}
/* Product grids never run off a phone screen: columns share the width even with long names. */
.cf-replica ul.products.elementor-grid>li{min-width:0}
.cf-replica .woocommerce ul.products li.product .button{white-space:normal;max-width:100%}
.cf-replica .woocommerce ul.products li.product .woocommerce-loop-product__title{overflow-wrap:anywhere}
