/*
 * Quick 1.2.9 - isolated widget-only refinements.
 *
 * Contract: this file MUST NOT target generic Elementor containers, page
 * wrappers, header/footer hosts, or global layout variables. Every rule starts
 * from the exact Quick widget wrapper it belongs to.
 */

/* 1) Smart chart: lighter visual weight and fully rounded line visual. */
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-card {
    padding:20px;
    gap:17px;
    border-radius:22px;
    border-color:rgba(var(--q-primary-rgb),.07);
    box-shadow:0 14px 38px rgba(var(--q-dark-rgb),.055);
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-card::before {
    border-radius:inherit;
    background:radial-gradient(circle at 100% 0,rgba(var(--q-primary-rgb),.075),transparent 38%);
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-card:hover {
    transform:translateY(-2px);
    box-shadow:0 20px 48px rgba(var(--q-primary-rgb),.085);
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-legend {
    gap:8px;
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-legend > span {
    padding:7px 9px;
    border-radius:12px;
    background:rgba(var(--q-primary-rgb),.035);
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-bar span {
    width:36px;
    border-radius:14px;
    background:rgba(var(--q-primary-rgb),.06);
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-bar i {
    border-radius:14px;
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-line {
    border-radius:18px;
    overflow:hidden;
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-line svg {
    display:block;
    border-radius:inherit;
    overflow:hidden;
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-line polygon {
    fill:rgba(var(--q-primary-rgb),.065);
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-line polyline {
    stroke-width:4;
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-line circle {
    stroke-width:3;
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-growth-card {
    padding:12px;
    border-radius:16px;
    background:rgba(var(--q-primary-rgb),.035);
}
body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-pie {
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.38),0 16px 38px rgba(var(--q-primary-rgb),.095);
}

/* 2) AJAX search: all defaults stay low-specificity so Elementor controls win. */
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search {
    --q-search-control-height:52px;
    --q-search-field-radius:12px;
    --q-search-button-radius:12px;
    background:transparent;
    border-color:transparent;
    box-shadow:none;
    direction:rtl;
}
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-head {
    margin:0 0 20px;
    text-align:center;
}
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-head h2 {
    width:100%;
    margin:0;
    color:var(--q-dark,#050033);
    font-size:clamp(25px,2.15vw,36px);
    font-weight:900;
    line-height:1.35;
}
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-head h2 .q-highlight {
    color:var(--q-primary,#3518B0);
}
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-head p {
    width:100%;
    max-width:none;
    margin:8px 0 0;
    color:#737996;
    font-size:14px;
    line-height:1.9;
}
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-form {
    align-items:stretch;
}
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-field {
    position:relative;
    display:flex;
    align-items:center;
    min-height:var(--q-search-control-height);
    padding:0 16px;
    background:var(--q-search-input-bg,var(--q-primary-soft,#F7F5FF));
    border:1px solid rgba(var(--q-primary-rgb,53,24,176),.10);
    border-radius:var(--q-search-field-radius);
    overflow:hidden;
    box-shadow:none;
}
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-field input[type="search"],
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-field input {
    display:block;
    width:100%;
    min-width:0;
    height:var(--q-search-control-height);
    margin:0;
    padding:0;
    border:0;
    outline:0;
    border-radius:0;
    background:transparent;
    background-image:none;
    box-shadow:none;
    color:var(--q-search-input-color,var(--q-dark,#050033));
    -webkit-appearance:none;
    appearance:none;
}
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search select,
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search button {
    height:var(--q-search-control-height);
    min-height:var(--q-search-control-height);
    border-radius:var(--q-search-field-radius);
}
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search button {
    border-radius:var(--q-search-button-radius);
}
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-field input[type="search"]::-webkit-search-decoration,
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-field input[type="search"]::-webkit-search-cancel-button,
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-field input[type="search"]::-webkit-search-results-button,
body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-field input[type="search"]::-webkit-search-results-decoration {
    -webkit-appearance:none;
}

/* 3) Agency services: only its INNER content frame is slightly wider.
 * Never size/stretch the Elementor widget host or its parent container. */
@media (min-width:1025px) {
    body.quantum-theme .elementor-widget-quantum_service_cards .qsvc-agency > .qsvc-agency-inner {
        --quick-agency-content-width:calc(var(--q-container,1320px) + 40px);
        width:min(var(--quick-agency-content-width),calc(100% - 52px));
        max-width:var(--quick-agency-content-width);
        margin-inline:auto;
        box-sizing:border-box;
    }
}


@media(max-width:760px) {
    body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-head {
        margin-bottom:16px;
    }
    body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-head h2 {
        font-size:24px;
    }
    body.quantum-theme :where(.elementor-widget-quantum_ajax_search) .q-ajax-search-head p {
        font-size:13px;
    }
}

@media(max-width:760px) {
    body.quantum-theme :where(.elementor-widget-quantum_chart) .q-chart-card {
        padding:16px;
        border-radius:18px;
        gap:14px;
    }
}

/* Quick 1.2.0 -----------------------------------------------------------
 * Search surface normalization + lighter request/agency controls.
 * All rules are widget-scoped and contain no !important declarations.
 */

/* AJAX search: use exactly one painted surface for the search field.
 * A historical high-specificity rule paints the input itself; the scoped
 * selector below intentionally outranks it and makes the input transparent.
 * Elementor still controls the actual field color via --q-search-input-bg. */
html body.quantum-theme .elementor-widget-quantum_ajax_search .q-ajax-search .q-ajax-search-field {
    padding-inline:0;
    background:var(--q-search-input-bg,var(--q-primary-soft,#F7F5FF));
    background-image:none;
}
html body.quantum-theme .elementor-widget-quantum_ajax_search .q-ajax-search .q-ajax-search-field input[type="search"],
html body.quantum-theme .elementor-widget-quantum_ajax_search .q-ajax-search .q-ajax-search-field input {
    height:var(--q-search-control-height);
    padding-inline:16px;
    background:transparent;
    background-color:transparent;
    background-image:none;
}

/* Service request form: lighter default rhythm. These are deliberately weak
 * defaults so per-widget Elementor controls can override them naturally. */
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request-card) {
    padding:19px 21px;
    border-radius:16px;
    box-shadow:0 14px 36px rgba(var(--q-dark-rgb),.04);
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request-head) {
    margin-bottom:13px;
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request-head span) {
    width:32px;
    height:32px;
    border-radius:10px;
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request-title) {
    font-size:20px;
    margin-bottom:4px;
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request-head p) {
    font-size:13.5px;
    line-height:1.75;
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request-grid) {
    gap:10px;
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request input,.qsvc-request select,.qsvc-request textarea) {
    padding:10px 12px;
    border-radius:9px;
    font-size:13px;
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request input,.qsvc-request select) {
    min-height:44px;
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request textarea) {
    min-height:78px;
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request-submit) {
    min-height:43px;
    padding:9px 18px;
    margin-top:11px;
    border-radius:10px;
    gap:6px;
    font-size:13px;
    box-shadow:0 10px 24px rgba(var(--q-primary-rgb),.16);
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request-submit-icon svg) {
    width:15px;
    height:15px;
}
body.quantum-theme :where(.elementor-widget-quantum_service_request_form) :where(.qsvc-request-side) {
    border-radius:16px;
}

/* Agency services: make the card CTA visually lighter without turning it into
 * a rigid global button. Typography/color controls in Elementor remain free. */
body.quantum-theme :where(.elementor-widget-quantum_service_cards) :where(.qsvc-agency-body em) {
    gap:5px;
    font-size:12px;
    font-weight:800;
    line-height:1.3;
}
body.quantum-theme :where(.elementor-widget-quantum_service_cards) :where(.qsvc-agency-body em svg) {
    width:14px;
    height:14px;
}

/* Responsive header control bridge --------------------------------------
 * Responsive Elementor control bridge for the professional default header.
 * The layout-stability stylesheet may own the site frame, but a value selected
 * in the widget must remain the final authority for the logo itself.
 */
body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-brand-wrap {
    width:var(--quick-header-logo-width,auto) !important;
    min-width:var(--quick-header-logo-width,clamp(118px,8.3vw,138px)) !important;
    max-width:var(--quick-header-logo-width,var(--q-logo-max-width)) !important;
    flex:0 0 var(--quick-header-logo-width,auto) !important;
    height:100% !important;
    max-height:100% !important;
    overflow:visible !important;
}
body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-brand-media {
    width:100% !important;
    max-width:100% !important;
    height:100% !important;
    max-height:100% !important;
}
body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-brand-media img {
    display:block !important;
    width:100% !important;
    max-width:100% !important;
    height:auto !important;
    max-height:100% !important;
    object-fit:contain !important;
}

/* One height variable owns the complete visible header. A large logo is
 * contained inside it and can no longer change the shell height by itself. */
body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width,
body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-header-shell,
body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-header-main {
    height:var(--quick-header-unified-height,var(--q-header-height,106px)) !important;
    min-height:var(--quick-header-unified-height,var(--q-header-height,106px)) !important;
    max-height:var(--quick-header-unified-height,var(--q-header-height,106px)) !important;
    overflow:visible !important;
}
body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-header-shell {
    padding-top:0 !important;
    padding-bottom:0 !important;
}

/* The call card follows an enlarged header instead of keeping the old fixed
 * 78/106px height. This applies only on desktop where the card is visible. */
@media(min-width:1025px) {
    body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-call-wrap {
        top:0 !important;
        bottom:auto !important;
        height:var(--quick-header-unified-height,var(--q-header-height,106px)) !important;
        min-height:var(--quick-header-unified-height,var(--q-header-height,106px)) !important;
        max-height:var(--quick-header-unified-height,var(--q-header-height,106px)) !important;
        transform:none !important;
    }
    body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-call-card {
        height:var(--quick-header-unified-height,var(--q-header-height,106px)) !important;
        min-height:var(--quick-header-unified-height,var(--q-header-height,106px)) !important;
        max-height:var(--quick-header-unified-height,var(--q-header-height,106px)) !important;
    }
}

/* Sticky mode historically forced logo max-height to 40/42px. Consume the
 * responsive widget variables at equal-or-higher specificity, while retaining
 * the old 40px fallback for headers without a custom logo width. */
html body.quantum-theme.q-header-is-scrolled .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-master-header-sticky {
    --q-header-height:var(--quick-header-sticky-height,78px) !important;
    --q-call-card-height:var(--quick-header-sticky-height,78px) !important;
}
html body.quantum-theme.q-header-is-scrolled .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-master-header-sticky .q-master-header-shell {
    height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
    min-height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
    max-height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
}
html body.quantum-theme.q-header-is-scrolled .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-master-header-sticky .q-master-header-main {
    height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
    min-height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
    max-height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
}
html body.quantum-theme.q-header-is-scrolled .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-master-header-sticky .q-master-brand-media,
html body.quantum-theme.q-header-is-scrolled .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-master-header-sticky .q-master-brand-media img {
    max-height:100% !important;
}
html body.quantum-theme.q-header-is-scrolled .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width.q-master-header-sticky {
    --q-logo-max-height:100% !important;
}
html body.quantum-theme.q-header-is-scrolled .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width.q-master-header-sticky .q-master-brand-media,
html body.quantum-theme.q-header-is-scrolled .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width.q-master-header-sticky .q-master-brand-media img {
    width:100% !important;
    max-width:100% !important;
    height:auto !important;
    max-height:100% !important;
}
html body.quantum-theme.q-header-is-scrolled .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width.q-master-header-sticky .q-master-header-shell {
    padding-top:0 !important;
    padding-bottom:0 !important;
    height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
    min-height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
    max-height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
}
html body.quantum-theme.q-header-is-scrolled .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width.q-master-header-sticky .q-master-header-main {
    height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
    min-height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
    max-height:var(--quick-header-sticky-height,var(--quick-header-unified-height,78px)) !important;
}

/* Preserve the 1.3.3 visual baseline with low-specificity defaults. Saved
 * Elementor typography selectors are more specific and can override these. */
@media(min-width:1025px) {
    body.quantum-theme :where(.elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto .q-master-nav .q-menu-item > a) {
        font-size:clamp(13px,.82vw,14.5px);
    }
}

/* Quick 1.3.2 -----------------------------------------------------------
 * Keep an enlarged desktop logo in its own flex column. The navigation gets
 * only the remaining width and may wrap inside that width instead of painting
 * over the logo. This is intentionally scoped to headers whose responsive
 * logo-width control has actually been changed, so existing headers retain
 * their previous geometry. */
@media(min-width:1025px) {
    html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-header-main {
        display:flex !important;
        align-items:center !important;
        min-width:0 !important;
    }
    html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-brand-wrap {
        width:var(--quick-header-logo-width,var(--q-logo-max-width)) !important;
        min-width:var(--quick-header-logo-width,var(--q-logo-max-width)) !important;
        max-width:var(--quick-header-logo-width,var(--q-logo-max-width)) !important;
        flex:0 0 var(--quick-header-logo-width,var(--q-logo-max-width)) !important;
        box-sizing:border-box !important;
        position:relative !important;
        z-index:2 !important;
    }
    html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-brand,
    html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-brand-media,
    html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-brand-media img {
        width:100% !important;
        max-width:100% !important;
        min-width:0 !important;
        box-sizing:border-box !important;
    }
    html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-nav-wrap {
        width:0 !important;
        min-width:0 !important;
        max-width:100% !important;
        flex:1 1 0% !important;
        align-self:stretch !important;
        align-items:center !important;
        position:relative !important;
        z-index:1 !important;
    }
    html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-nav,
    html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-nav .q-el-nav-list {
        width:100% !important;
        min-width:0 !important;
        max-width:100% !important;
        box-sizing:border-box !important;
    }
    html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-nav .q-el-nav-list {
        flex-wrap:nowrap !important;
        align-content:center !important;
        white-space:nowrap !important;
    }
    html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto.q-header-custom-logo-width .q-master-nav .q-menu-item {
        flex:0 0 auto !important;
        max-width:100% !important;
    }
}

@media(min-width:1025px) and (max-width:1280px) {
    body.quantum-theme :where(.elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto .q-master-btn) {
        font-size:13px;
    }
}

/* Live Elementor bridge --------------------------------------------------
 * These rules react only to variables written by the two responsive sliders.
 * They have enough specificity to beat the legacy stability layer without
 * embedding a saved value that could block Elementor's live editor handler. */
html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto {
    height:var(--quick-header-unified-height,auto) !important;
    max-height:var(--quick-header-unified-height,none) !important;
}
html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto .q-master-header-shell,
html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto .q-master-header-main {
    height:var(--quick-header-unified-height,auto) !important;
    min-height:var(--quick-header-unified-height,var(--q-header-height,88px)) !important;
    max-height:var(--quick-header-unified-height,none) !important;
    padding-top:0 !important;
    padding-bottom:0 !important;
}
html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto .q-master-call-wrap,
html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto .q-master-call-card {
    height:var(--quick-header-unified-height,var(--q-call-card-height,88px)) !important;
    min-height:var(--quick-header-unified-height,var(--q-call-card-height,88px)) !important;
    max-height:var(--quick-header-unified-height,var(--q-call-card-height,88px)) !important;
}
html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto .q-master-brand-wrap {
    width:var(--quick-header-logo-width,auto) !important;
    min-width:var(--quick-header-logo-width,clamp(118px,8.3vw,138px)) !important;
    max-width:var(--quick-header-logo-width,var(--q-logo-max-width)) !important;
    flex:var(--quick-header-logo-flex,0 1 auto) !important;
}
html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto .q-master-brand-media,
html body.quantum-theme .elementor-widget-quantum_default_header .q-master-header.q-header-layout-auto .q-master-brand-media img {
    width:var(--quick-header-logo-image-width,auto) !important;
    max-width:var(--quick-header-logo-width,var(--q-logo-max-width)) !important;
    height:auto !important;
    max-height:100% !important;
    object-fit:contain !important;
}
