/* ==========================================================================
   Dream Contractors - Inner pages layout system
   Reproduces the layout rules of the current site (sections -> columns -> widgets)
   so every page keeps its original proportions. Page-specific values live in
   assets/css/pages/<page>.css
   ========================================================================== */

/* ---------- Kit typography (exact values of the current site's Elementor kit) ---------- */
.page-inner main { font-size: 16px; line-height: 1.5em; color: var(--text); }
.e-title, .e-ib__title, .e-cta__title { margin: 0; font-family: var(--font); color: var(--ink); }
:where(.page-inner main) a { color: var(--text); }
:where(.page-inner main) a:hover { color: var(--blue); }
h1.e-title { font-size: 48px; font-weight: 700; line-height: 1.2em; letter-spacing: -.5px; }
h2.e-title { font-size: 39px; font-weight: 700; line-height: 1.2em; letter-spacing: -1.2px; }
h3.e-title { font-size: 31.25px; font-weight: 700; line-height: 1.3em; letter-spacing: 0; }
h4.e-title { font-size: 25px; font-weight: 200; line-height: 1.3em; }
h5.e-title { font-size: 20px; font-weight: 700; line-height: 1.4em; }
h6.e-title { font-size: 14px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; color: var(--ink-2); }
.e-title a { color: inherit !important; }
@media (max-width: 1024px) {
  .page-inner main { font-size: 15px; }
  h1.e-title { font-size: 37px; } h2.e-title { font-size: 31px; } h3.e-title { font-size: 25px; } h4.e-title { font-size: 21px; } h5.e-title { font-size: 18px; } h6.e-title { font-size: 13px; }
}
@media (max-width: 767px) {
  .page-inner main { font-size: 14px; }
  h1.e-title { font-size: 28px; } h2.e-title { font-size: 25px; } h3.e-title { font-size: 22px; } h4.e-title { font-size: 20px; } h5.e-title { font-size: 16px; } h6.e-title { font-size: 12px; }
}

/* ---------- Sections / columns / widgets ---------- */
.e-s { position: relative; }
.e-s > .e-c { position: relative; display: flex; margin: 0 auto; max-width: 1280px; }
.e-s.e-full > .e-c { max-width: none; }
.e-inner > .e-c { max-width: none; }                        /* inner sections fill their column */
.e-ov { position: absolute; inset: 0; pointer-events: none; }
.e-col { position: relative; display: flex; min-height: 1px; }
.e-col > .e-w { position: relative; width: 100%; padding: 10px; display: flex; flex-wrap: wrap; align-content: flex-start; }
.e-gap-no > .e-c > .e-col > .e-w { padding: 0; }
.e-gap-narrow > .e-c > .e-col > .e-w { padding: 5px; }
.e-gap-extended > .e-c > .e-col > .e-w { padding: 15px; }
.e-gap-wide > .e-c > .e-col > .e-w { padding: 20px; }
.e-gap-wider > .e-c > .e-col > .e-w { padding: 30px; }
.e-wd, .e-w > .e-s { position: relative; width: 100%; }
:where(.e-wd:not(:last-child)) { margin-bottom: 20px; }
.e-video { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.e-video iframe { position: absolute; top: 50%; left: 50%; width: 100vw; height: 56.25vw; min-height: 100%; min-width: 177.78vh; transform: translate(-50%, -50%); border: 0; opacity: 0; transition: opacity 1.2s; }
.e-video.is-ready iframe { opacity: 1; }
@media (hover: none) { .e-fixed { background-attachment: scroll !important; } }   /* iOS Safari does not support fixed backgrounds */


@media (max-width: 767px) {
  .e-s > .e-c { flex-wrap: wrap; }
  .e-col { width: 100% !important; }
  .e-rev-m > .e-c { flex-direction: column-reverse; }
}

/* ---------- Text editor ---------- */
.w-text-editor { color: var(--text); }
.w-text-editor p { margin: 0 0 .9rem; }
.w-text-editor ul, .w-text-editor ol { margin: 0 0 .9rem; padding-left: 1.2em; list-style: disc; }
.w-text-editor a { color: var(--blue); }
.w-text-editor strong { color: inherit; }

/* ---------- Image ---------- */
.w-image { text-align: center; }
.w-image img { display: inline-block; vertical-align: middle; }

/* ---------- Button (kit) ---------- */
.w-button { text-align: left; }
.e-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  padding: 20px 40px; background: var(--blue); color: #fff;
  font-family: var(--font); font-size: 14px; font-weight: 400; line-height: 1;
  transition: background-color .3s var(--ease), color .3s var(--ease);
}
.e-btn:hover { background: var(--blue-hover); color: #fff; }
.e-btn__icon { font-size: 14px; }

/* ---------- Icon box ---------- */
.e-ib { display: flex; flex-direction: column; align-items: center; text-align: center; }
.e-ib--pos-left { flex-direction: row; align-items: flex-start; text-align: left; }
.e-ib--pos-right { flex-direction: row-reverse; align-items: flex-start; text-align: right; }
.e-ib__media { margin-bottom: 15px; flex: none; }
.e-ib--pos-left .e-ib__media { margin: 0 15px 0 0; }
.e-ib__icon { display: inline-grid; place-items: center; font-size: 50px; color: var(--ink); line-height: 1; transition: background-color .3s var(--ease), color .3s var(--ease); }
.e-ib__icon .glyph, .e-ib__icon .ico { width: 1em; height: 1em; }
.e-ib--stacked { padding: .5em; background: var(--light); }
.e-ib--framed { padding: .5em; border: 2px solid currentColor; }
.e-ib--circle { border-radius: 50%; }
.e-ib--rounded { border-radius: 10%; }
.e-ib__content { flex: 1; }
.e-ib__title { font-size: 20px; font-weight: 700; line-height: 1.4em; margin-bottom: 10px; }
.e-ib__title a { color: inherit; }
.e-ib__desc { margin: 0; font-size: 16px; line-height: 1.5em; }
.w-icon-box { transition: background-color .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease); }
@media (max-width: 767px) {
  .e-ib--pos-left, .e-ib--pos-right { flex-direction: column; align-items: center; text-align: center; }
  .e-ib--pos-left .e-ib__media { margin: 0 0 15px; }
}

/* ---------- Icon list ---------- */
.e-il { list-style: none; margin: 0; padding: 0; }
.e-il li { display: flex; }
.e-il li > a { display: flex; color: inherit; }
.e-il__iconw { flex: none; display: inline-flex; align-items: center; margin-right: 10px; }
.e-il__icon { width: 14px; height: 14px; font-size: 14px; color: var(--blue); }
.e-il__text { color: var(--text); }
.e-il li:not(:last-child) { padding-bottom: 4px; }
.e-il li:not(:first-child) { margin-top: 4px; }

/* ---------- Gallery ---------- */
.e-gal { display: grid; grid-template-columns: repeat(var(--cols, 4), 1fr); gap: var(--gap, 10px); }
.e-gal__item { display: block; overflow: hidden; }
.e-gal__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease), opacity .4s; }
.e-gal__item:hover img { transform: scale(1.04); opacity: .9; }
@media (max-width: 767px) { .e-gal { grid-template-columns: repeat(2, 1fr); } }

/* ---------- Call to action (image box) ---------- */
.e-cta { position: relative; overflow: hidden; }
.e-cta--bg { height: 100%; }
.e-cta__bg { position: absolute; inset: 0; }
.e-cta__bg img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.e-cta:hover .e-cta__bg img { transform: scale(1.04); }
.e-cta__bg::after { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,.4); transition: background-color .4s; }
.e-cta__content { position: relative; z-index: 1; display: flex; flex-direction: column; justify-content: center; padding: 35px; }
.e-cta--bg .e-cta__content { min-height: 280px; }
.e-cta--cover .e-cta__content, .e-cta--cover .e-cta__title, .e-cta--cover .e-cta__desc { color: #fff; }
.e-cta__title { font-size: 25px; font-weight: 700; line-height: 1.3; margin-bottom: 15px; }
.e-cta__desc { font-size: 16px; margin-bottom: 20px; }
.e-cta__desc:last-child { margin-bottom: 0; }
.e-cta__btn { align-self: center; }

/* ---------- Testimonials ---------- */
.e-testi { position: relative; overflow: hidden; }
.e-testi__track { display: flex; gap: 30px; transition: transform .8s var(--ease); }
.e-testi__card { flex: 0 0 calc((100% - 30px * (var(--per, 2) - 1)) / var(--per, 2)); margin: 0; padding: 40px; background: #fff; box-shadow: 0 10px 40px rgba(0,0,0,.06); }
.e-testi__quote { width: 28px; height: 28px; color: var(--blue); margin-bottom: 18px; }
.e-testi blockquote { margin: 0 0 24px; font-size: 16px; line-height: 1.6; color: var(--text); }
.e-testi figcaption { display: flex; align-items: center; gap: 14px; }
.e-testi__photo img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; }
.e-testi figcaption strong { display: block; font-size: 16px; color: var(--ink); }
.e-testi figcaption em { font-style: normal; font-size: 14px; color: var(--text); }
.e-testi__dots { display: flex; justify-content: center; gap: 8px; margin-top: 26px; }
.e-testi__dots button { width: 10px; height: 10px; border-radius: 50%; background: var(--line); transition: background-color .3s; }
.e-testi__dots button.is-active { background: var(--blue); }
@media (max-width: 767px) { .e-testi__card { flex-basis: 100%; padding: 30px; } }

/* ---------- Icon / counter / divider / progress ---------- */
.w-icon { text-align: center; }
.w-icon .e-icon { display: inline-block; width: 1em; height: 1em; font-size: 50px; color: var(--ink); }
.e-counter { text-align: center; }
.e-counter__num { font-size: 48px; font-weight: 700; line-height: 1.2; color: var(--blue); }
.e-counter__title { font-size: 14px; }
.e-divider { padding: var(--gap, 15px) 0; }
.e-divider span { display: block; border-top: 1px solid var(--line); }
.e-progress__title { display: block; margin-bottom: 8px; color: var(--ink); font-weight: 700; }
.e-progress__bar { position: relative; height: 30px; background: var(--light); }
.e-progress__bar i { position: absolute; inset: 0 auto 0 0; background: var(--blue); }
.e-progress__bar b { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); font-size: 13px; color: var(--ink); }

/* ---------- Accordion (FAQ) ---------- */
.e-acc__item { border-bottom: 1px solid var(--line); }
.e-acc__head { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 20px; padding: 22px 0; text-align: left; font-size: 18px; font-weight: 700; color: var(--ink); }
.e-acc__caret { font-size: 18px; transition: transform .3s var(--ease); }
.e-acc__item.is-open .e-acc__caret { transform: rotate(180deg); }
.e-acc__body { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .4s var(--ease); }
.e-acc__item.is-open .e-acc__body { grid-template-rows: 1fr; }
.e-acc__inner { overflow: hidden; }
.e-acc__inner > *:last-child { margin-bottom: 22px; }
.e-acc__inner p { margin: 0 0 .9rem; }

/* ---------- Timeline (vertical, alternating - ElementsKit style of the current site) ---------- */
.e-tl { position: relative; list-style: none; margin: 0 auto; padding: 35px 0 0; max-width: 978px; }
.e-tl::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 1px; background: var(--line); }
.e-tl__item { position: relative; display: grid; grid-template-columns: 1fr 1fr; align-items: center; margin-bottom: 31px; }
.e-tl__card { position: relative; display: flex; gap: 0; align-items: flex-start; background: #fff; border-radius: 10px; padding: 20px 10px 20px 20px; transition: background-color .3s var(--ease); }
.e-tl__item--l .e-tl__card { grid-column: 1; grid-row: 1; margin-right: 60px; }
.e-tl__item--r .e-tl__card { grid-column: 2; grid-row: 1; margin-left: 60px; flex-direction: row-reverse; }
.e-tl__content { flex: 1; padding: 10px 20px 10px 5px; }
.e-tl__item--r .e-tl__content { padding: 10px 0 10px 30px; }
.e-tl__title { font-size: 22px; font-weight: 700; line-height: 1.3; color: var(--ink); margin-bottom: 10px; }
.e-tl__desc { margin: 0; font-size: 14px; line-height: 1.5; color: var(--text); }
.e-tl__icon { flex: none; width: 50px; height: 50px; display: grid; place-items: center; border-radius: 50%; background: var(--blue); color: #fff; font-size: 22px; box-shadow: 19.8px 19.8px 40px rgba(0,0,0,.1); transition: background-color .3s, color .3s; }
.e-tl__glyph { width: 1em; height: 1em; }
.e-tl__pin { position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; background: #fff; border: 2px solid var(--blue); z-index: 1; }
.e-tl__date { font-size: 18px; font-weight: 200; color: var(--ink); }
.e-tl__item--l .e-tl__date { grid-column: 2; grid-row: 1; margin-left: 70px; }
.e-tl__item--r .e-tl__date { grid-column: 1; grid-row: 1; margin-right: 70px; text-align: right; }
.e-tl__item:hover .e-tl__card { background: var(--blue); }
.e-tl__item:hover .e-tl__title, .e-tl__item:hover .e-tl__desc { color: #fff; }
.e-tl__item:hover .e-tl__icon { background: var(--ink-2); color: var(--light); }
@media (max-width: 767px) {
  .e-tl::before { left: 8px; }
  .e-tl__item { grid-template-columns: 1fr; padding-left: 30px; }
  .e-tl__pin { left: 8px; top: 24px; }
  .e-tl__item .e-tl__date { grid-column: 1 !important; grid-row: 1 !important; margin: 0 0 10px !important; text-align: left !important; }
  .e-tl__item .e-tl__card { grid-column: 1 !important; grid-row: 2 !important; margin: 0 !important; flex-direction: row !important; }
  .e-tl__item--r .e-tl__content { padding: 10px 20px 10px 5px; }
}

/* container elements */
.e-con > .e-c { flex-direction: column; padding: 10px; }
.e-con > .e-c > .e-wd { margin-bottom: 20px; }
.e-con > .e-c > .e-wd:last-child { margin-bottom: 0; }

/* ---------- Flip box ---------- */
.e-flip { perspective: 1000px; height: 100%; min-height: 280px; }
.e-flip__inner { position: relative; height: 100%; min-height: inherit; transition: transform .8s var(--ease); transform-style: preserve-3d; -webkit-transform-style: preserve-3d; }
.e-flip:hover .e-flip__inner, .e-flip:focus .e-flip__inner { transform: rotateY(180deg); }
.e-flip__a, .e-flip__b { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 35px; -webkit-backface-visibility: hidden; backface-visibility: hidden; }
.e-flip__a { background: var(--light); }
.e-flip__b { background: var(--ink); color: #fff; transform: rotateY(180deg); }
.e-flip__b h3 { color: #fff; }
.e-flip__img { width: 100%; }
.e-flip__img img { display: inline-block; width: 56%; aspect-ratio: 3 / 4; object-fit: cover; margin-bottom: 16px; }
.e-flip__a p, .e-flip__b p { margin: 0; }

/* ---------- Embeds ---------- */
.e-embed iframe, .e-map iframe { display: block; width: 100%; border: 0; }
.e-embed iframe { min-height: 450px; }
.e-map iframe { height: 400px; }
.e-video-embed { position: relative; aspect-ratio: 16 / 9; background: #000; }
.e-video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ---------- Lightbox ---------- */
.lightbox { position: fixed; inset: 0; z-index: 9800; display: grid; place-items: center; background: rgba(17,17,17,.94); opacity: 0; visibility: hidden; transition: opacity .3s, visibility 0s linear .3s; }
.lightbox.is-open { opacity: 1; visibility: visible; transition-delay: 0s; }
.lightbox__img { max-width: 90vw; max-height: 86vh; object-fit: contain; transition: opacity .3s; }
.lightbox button { position: absolute; width: 50px; height: 50px; display: grid; place-items: center; color: #fff; font-size: 26px; }
.lightbox__close { top: 16px; right: 16px; }
.lightbox__prev { left: 12px; top: 50%; transform: translateY(-50%) rotate(180deg); }
.lightbox__next { right: 12px; top: 50%; transform: translateY(-50%); }
.e-cta__graphic { margin-bottom: 20px; }
.e-cta__graphic img { display: inline-block; max-width: 100%; }
