/*!
 * Electromagnyc / OceanWP / Elementor
 * bundle-core.css
 * - Core layout + header/footer
 * - Elementor + OceanWP integration
 * - Mobile/menu/runtime primitives
 */

/* -----------------------------------------------------------
   0. Global reset + base typography
----------------------------------------------------------- */
@charset "UTF-8";

a,article,aside,b,body,canvas,caption,center,dd,div,em,embed,footer,form,
h1,h2,h3,h4,h5,h6,header,html,i,img,label,li,menu,nav,object,p,q,s,section,
small,span,strong,sub,summary,time,ul,var,video {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
    font-family: inherit;
    font-style: inherit;
    font-weight: inherit;
}

article,aside,footer,header,main,menu,nav,section {
    display: block;
}

html {
    font-size: 62.5%;
    overflow-y: scroll;
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
}

*,
*:before,
*:after {
    box-sizing: border-box;
}

caption {
    font-weight: 400;
    text-align: left;
}

q:before,
q:after {
    content: "";
}

a:active,
a:hover {
    outline: 0;
}

a img {
    border: 0;
}

img {
    max-width: 100%;
    height: auto;
    vertical-align: middle;
}

select {
    max-width: 100%;
}

em,
i {
    font-style: italic;
}

html {
    -ms-overflow-x: hidden;
    overflow-x: hidden;
}

body {
    font-family: "Open Sans", sans-serif;
    font-size: 14px;
    line-height: 1.8;
    color: #4a4a4a;
    overflow-wrap: break-word;
    word-wrap: break-word;
    background-color: #fff;
}

/* -----------------------------------------------------------
   1. Layout containers
----------------------------------------------------------- */
.container {
    width: 1200px;
    max-width: 90%;
    margin: 0 auto;
}

#wrap {
    position: relative;
}

#main {
    position: relative;
}

#main #content-wrap {
    padding-top: 50px;
    padding-bottom: 50px;
}

.content-area {
    float: left;
    position: relative;
    width: 72%;
    padding-right: 30px;
    border-right-width: 1px;
    border-style: solid;
    border-color: #f1f1f1;
}

.widget-area {
    width: 28%;
}

/* Boxed layout */
.boxed-layout {
    background-color: #e9e9e9;
}

.boxed-layout #wrap {
    width: 1280px;
    max-width: 100%;
    margin: 0 auto;
    background-color: #fff;
}

.boxed-layout #wrap .container {
    width: auto;
    max-width: none;
    padding-left: 30px;
    padding-right: 30px;
}

/* Separate layout */
.separate-layout {
    background-color: #f1f1f1;
}

.separate-layout .content-area,
.separate-layout .widget-area .sidebar-box {
    background-color: #fff;
    padding: 30px;
}

.separate-layout .content-area {
    border-right-width: 0;
}

.separate-layout #main #content-wrap {
    padding-top: 20px;
    padding-bottom: 20px;
}

/* Responsive layout tweaks */
@media only screen and (max-width: 959px) {
    .boxed-layout #wrap {
        overflow: hidden;
    }

    .container {
        max-width: 90%;
    }

    .content-area {
        float: none !important;
        width: 100%;
        margin-bottom: 40px;
        border: 0;
    }

    #main #content-wrap.container {
        width: auto !important;
    }

    .separate-layout .container {
        max-width: 95%;
    }

    .separate-layout .content-area {
        margin-bottom: 20px;
    }

    .separate-layout .widget-area {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
}

@media only screen and (max-width: 767px) {
    #wrap {
        width: 100% !important;
    }

    .blog-entry {
        width: 100%;
        margin-bottom: 25px;
    }
}

/* -----------------------------------------------------------
   2. Links + headings + text
----------------------------------------------------------- */
a {
    color: var(--owp-link-color, #333);
    text-decoration: none;
    transition: all .3s ease;
}

a:hover {
    color: var(--owp-link-color-hover, #13aff0);
}

h1,h2,h3,h4,h5,h6 {
    font-weight: 600;
    margin: 0 0 20px;
    color: #333;
    line-height: 1.4;
}

h1 { font-size: 23px; }
h2 { font-size: 20px; }
h3 { font-size: 18px; }
h4 { font-size: 17px; }
h5 { font-size: 15px; }
h6 { font-size: 14px; }

p {
    margin: 0 0 20px;
}

ul {
    margin: 15px 0 15px 20px;
}

li ul {
    margin: 0 0 0 25px;
}

/* -----------------------------------------------------------
   3. Forms + buttons
----------------------------------------------------------- */
form input[type=color],
form input[type=date],
form input[type=datetime-local],
form input[type=datetime],
form input[type=email],
form input[type=month],
form input[type=number],
form input[type=password],
form input[type=search],
form input[type=tel],
form input[type=text],
form input[type=time],
form input[type=url],
form input[type=week],
form select,
form textarea {
    display: inline-block;
    min-height: 40px;
    width: 100%;
    font-size: 14px;
    line-height: 1.8;
    padding: 6px 12px;
    vertical-align: middle;
    background-color: transparent;
    color: #333;
    border: 1px solid #ddd;
    border-radius: 3px;
    transition: all .3s ease;
}

form textarea {
    min-height: 150px;
    line-height: 1.5;
    resize: vertical;
}

.button,
.woocommerce-cart .wp-element-button,
.woocommerce-checkout .wp-element-button,
.wp-block-button__link,
button[type=submit],
input[type=button],
input[type=reset],
input[type=submit] {
    display: inline-block;
    font-family: inherit;
    background-color: #13aff0;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    margin: 0;
    padding: 14px 20px;
    border: 0;
    cursor: pointer;
    text-align: center;
    letter-spacing: .1em;
    line-height: 1;
    transition: all .3s ease;
}

.button:hover,
button[type=submit]:hover,
input[type=button]:hover,
input[type=reset]:hover,
input[type=submit]:hover {
    background-color: #0b7cac;
    color: #fff;
}

/* -----------------------------------------------------------
   4. Top bar + social menu
----------------------------------------------------------- */
#top-bar-wrap {
    position: relative;
    background-color: #fff;
    font-size: 12px;
    border-bottom: 1px solid #f1f1f1;
    z-index: 101;
}

#top-bar {
    padding: 8px 0;
}

.top-bar-left {
    float: left;
}

.top-bar-right {
    float: right;
}

@media only screen and (max-width: 767px) {
    #top-bar {
        padding: 20px 0;
    }

    .top-bar-right {
        float: none;
        text-align: center;
    }
}

/* OceanWP social menu */
.oceanwp-social-menu {
    float: right;
    position: relative;
    z-index: 10;
}

.oceanwp-social-menu .social-menu-inner {
    display: flex;
    align-items: center;
    height: 74px;
}

.oceanwp-social-menu ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

.oceanwp-social-menu ul li {
    float: left;
    position: relative;
}

.oceanwp-social-menu ul li a {
    display: inline-block;
    background-color: transparent;
    color: #929292;
    padding: 0 8px;
    line-height: 1;
    text-align: center;
}

/* -----------------------------------------------------------
   5. Site header (horizontal + vertical)
----------------------------------------------------------- */
#site-header {
    position: relative;
    width: 100%;
    background-color: #fff;
    border-bottom: 1px solid #f1f1f1;
    z-index: 100;
}

#site-header-inner {
    position: relative;
    height: 100%;
}

#site-logo {
    float: left;
    height: 100%;
    display: table;
}

#site-logo #site-logo-inner {
    display: table-cell;
    vertical-align: middle;
    height: 74px;
}

#site-logo #site-logo-inner a img {
    width: auto;
    vertical-align: middle;
    transition: all .3s ease-in-out;
}

/* Vertical header */
#site-header.vertical-header {
    position: fixed;
    top: 0;
    width: 300px;
    max-width: 100%;
    height: 100%;
    border-bottom: none;
    z-index: 3000;
    transition: all .3s ease-in-out;
}

#site-header.vertical-header #site-header-inner {
    max-width: 100%;
    padding: 30px 0;
    overflow: hidden;
}

#site-header.vertical-header #site-logo {
    float: none;
    height: auto;
    margin: 20px 0 45px;
}

/* Default breakpoint: collapse vertical header to top bar */
@media only screen and (max-width: 959px) {
    body.default-breakpoint #site-logo.has-responsive-logo .responsive-logo-link {
        display: block;
    }

    body.default-breakpoint #top-bar-nav,
    body.default-breakpoint .oceanwp-social-menu {
        display: none;
    }

    body.default-breakpoint #site-header.vertical-header {
        position: relative;
        width: 100%;
        left: 0 !important;
        right: 0 !important;
    }

    body.default-breakpoint #site-header.vertical-header #site-header-inner {
        display: flex;
        align-items: center;
        padding: 0;
        max-width: 90%;
    }

    body.default-breakpoint #site-header.vertical-header #site-header-inner #site-logo {
        display: block;
        margin: 0;
        width: 50%;
        text-align: left;
    }
}

/* -----------------------------------------------------------
   6. Page header + breadcrumbs
----------------------------------------------------------- */
.page-header {
    position: relative;
    background-color: #f5f5f5;
    padding: 34px 0;
}

.page-header .container {
    position: relative;
}

.page-header-title {
    display: block;
    font-size: 24px;
    line-height: 1.4em;
    font-weight: 400;
    margin: 0;
    color: #333;
}

.site-breadcrumbs {
    position: absolute;
    right: 0;
    top: 50%;
    max-width: 50%;
    height: 32px;
    line-height: 32px;
    margin-top: -16px;
    font-size: 13px;
    color: #6f6f6f;
    font-weight: 400;
    white-space: nowrap;
    overflow: hidden;
}

/* -----------------------------------------------------------
   7. Blog entries + meta
----------------------------------------------------------- */
#blog-entries {
    padding-bottom: 0;
}

.blog-entry.post {
    position: relative;
}

.blog-entry.post .blog-entry-header {
    margin-bottom: 20px;
}

.blog-entry.post .blog-entry-header .entry-title {
    font-size: 24px;
    margin: 0;
}

.blog-entry.large-entry {
    border-bottom: 1px solid #f1f1f1;
    margin-bottom: 30px;
    padding-bottom: 30px;
}

.blog-entry.grid-entry .blog-entry-inner {
    padding: 0 1.25rem 1.25rem;
    border: 1px solid #e9e9e9;
}

ul.meta {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    color: #4a4a4a;
    font-size: 14px;
    line-height: 1.3;
    margin: 0 0 20px;
    padding: 0 0 10px;
    list-style: none;
}

/* -----------------------------------------------------------
   8. Sidebar + widgets
----------------------------------------------------------- */
.widget-area {
    font-size: 13px;
}

.sidebar-box {
    margin-bottom: 40px;
}

.sidebar-box ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

.widget-title {
    display: block;
    line-height: 1;
    font-size: 13px;
    font-weight: 400;
    color: #333;
    border-width: 0 0 0 3px;
    border-style: solid;
    border-color: #13aff0;
    letter-spacing: 1px;
    padding-left: 15px;
    margin: 0 0 20px;
    text-transform: capitalize;
}

/* -----------------------------------------------------------
   9. Footer + scroll-top
----------------------------------------------------------- */
.site-footer {
    position: relative;
}

#footer-widgets {
    background-color: #222;
    padding: 30px 0;
    margin: 0;
}

#footer-bottom {
    background-color: #1b1b1b;
    padding: 15px 0;
    font-size: 12px;
    line-height: 1;
    color: #fff;
}

#scroll-top {
    display: none;
    opacity: 0;
    position: fixed;
    right: 20px;
    bottom: 20px;
    width: 40px;
    height: 40px;
    line-height: 40px;
    background-color: rgba(0,0,0,.4);
    color: #fff;
    font-size: 18px;
    cursor: pointer;
    border-radius: 2px;
    text-align: center;
    z-index: 100;
}

/* -----------------------------------------------------------
   10. Elementor core layout
----------------------------------------------------------- */
:root {
    --direction-multiplier: 1;
    --page-title-display: block;
}

html[dir=rtl] {
    --direction-multiplier: -1;
}

.elementor *,.elementor :after,.elementor :before {
    box-sizing: border-box;
}

.elementor img {
    border: none;
    border-radius: 0;
    box-shadow: none;
    height: auto;
    max-width: 100%;
}

.elementor-section {
    position: relative;
}

.elementor-section .elementor-container {
    display: flex;
    margin-inline: auto;
    position: relative;
}

.elementor-widget-wrap {
    align-content: flex-start;
    flex-wrap: wrap;
    position: relative;
    width: 100%;
}

.elementor-widget {
    position: relative;
}

/* Elementor columns */
@media (min-width: 768px) {
    .elementor-column[data-col="50"] { width: 50%; }
    .elementor-column[data-col="100"] { width: 100%; }
}

@media (max-width: 767px) {
    .elementor-column { width: 100%; }
}

/* -----------------------------------------------------------
   11. Elementor nav menu + pointers
----------------------------------------------------------- */
.elementor-item:after,
.e--pointer-underline .elementor-item:before {
    background-color: #3f444b;
    height: 3px;
    left: 0;
    width: 100%;
    z-index: 2;
}

.elementor-nav-menu--main .elementor-nav-menu a {
    transition: .4s;
    padding: 13px 20px;
}

.elementor-nav-menu--layout-horizontal {
    display: flex;
}

.elementor-nav-menu--layout-horizontal .elementor-nav-menu {
    display: flex;
    flex-wrap: wrap;
}

.elementor-nav-menu a {
    align-items: center;
    display: flex;
    line-height: 20px;
    padding: 10px 20px;
}

/* Mobile toggle */
.elementor-menu-toggle {
    align-items: center;
    background-color: rgba(0,0,0,.05);
    border-radius: 3px;
    color: #33373d;
    cursor: pointer;
    display: flex;
    font-size: var(--nav-menu-icon-size,22px);
    justify-content: center;
    padding: .25em;
}

/* -----------------------------------------------------------
   12. Hero / LCP section
----------------------------------------------------------- */
.hero-section .hero-title,
.hero-section .hero-title a,
h1.hero-title {
    font-size: 20px;
    font-weight: 600;
    line-height: 1.3;
    text-transform: uppercase;
    color: #fff;
    margin: 0;
    text-decoration: none;
}

.lcp-hero {
    padding: 60px 20px;
    text-align: center;
    min-height: 120px;
}

/* -----------------------------------------------------------
   13. CLS-safe container hydration (matches header.php)
----------------------------------------------------------- */
.elementor-element[data-element_type="container"] {
    min-height: 1px;
    transition-property: none !important;
}

.elementor-element[data-element_type="container"].ers-hydrated {
    transition-property: all !important;
}

/* -----------------------------------------------------------
   14. Sticky + shrink header (matches header.php)
----------------------------------------------------------- */
header#site-header.ers-sticky {
    position: sticky;
    top: 0;
    background-color: #fff;
}

header#site-header.ers-scrolled {
    padding-top: 6px;
    padding-bottom: 6px;
    box-shadow: 0 4px 12px rgba(0,0,0,.12);
}

/* -----------------------------------------------------------
   15. Mobile menu fixes (matches header.php)
----------------------------------------------------------- */
.elementor-nav-menu--dropdown.elementor-nav-menu__container {
    opacity: 0;
    transform: translateY(-6px);
    transition: opacity 150ms ease-out, transform 150ms ease-out;
    pointer-events: none;
    display: none;
    visibility: hidden;
}

.elementor-nav-menu--dropdown.elementor-nav-menu__container.ers-open {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    transform: translateY(0) !important;
    pointer-events: auto !important;
}

@media (max-width: 1024px) {
    .elementor-nav-menu--dropdown.elementor-nav-menu__container {
        display: none !important;
        visibility: hidden !important;
    }
    .elementor-nav-menu--dropdown.elementor-nav-menu__container.ers-open {
        display: block !important;
        visibility: visible !important;
    }
}

/* Submenu */
.elementor-nav-menu li.menu-item-has-children > .sub-menu {
    display: none;
    position: absolute;
    z-index: 9999;
}

.elementor-nav-menu li.menu-item-has-children.ers-sub-open > .sub-menu {
    display: block;
}

/* Body lock */
body.ers-menu-open {
    overflow: hidden;
}

/* -----------------------------------------------------------
   16. CLS patch for two shifting containers
----------------------------------------------------------- */
#elementor-element-5986d9f,
#elementor-element-77acc94 {
    display: flex;
    flex-direction: column;
    gap: 20px;
    padding: 40px 20px;
    min-height: 420px;
    contain: layout;
}
