/* ==========================================================================
   Taswiyeh — corporate design layer
   Loaded last on every page; overrides the Canun theme + Elementor output.
   ========================================================================== */

:root {
  --tsw-navy-900: #0b1730;
  --tsw-navy-800: #12213f;
  --tsw-navy-700: #1b2d52;
  --tsw-navy-600: #2a3d66;
  --tsw-gold: #c29630;
  --tsw-gold-600: #a97f22;
  --tsw-gold-100: #f6efdf;
  --tsw-ink: #14213d;
  --tsw-text: #4a5568;
  --tsw-muted: #6b7689;
  --tsw-line: #e3e7ee;
  --tsw-surface: #f5f7fa;
  --tsw-white: #ffffff;

  --tsw-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --tsw-serif: "Source Serif 4", Georgia, "Times New Roman", serif;

  --tsw-radius: 6px;
  --tsw-radius-lg: 10px;
  --tsw-shadow-sm: 0 1px 2px rgba(11, 23, 48, .06), 0 1px 3px rgba(11, 23, 48, .05);
  --tsw-shadow: 0 10px 30px -12px rgba(11, 23, 48, .18);
  --tsw-header-h: 76px;
  --tsw-gutter: clamp(16px, 4vw, 32px);
  --tsw-max: 1200px;
}

/* --------------------------------------------------------------------------
   1. Base & typography
   -------------------------------------------------------------------------- */
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--tsw-header-h) + 16px); }
html, body { overflow-x: clip; max-width: 100%; }
/* The theme's `.page-wrapper { overflow: hidden }` makes it a scroll container, which
   silently disables the sticky header. `clip` clips the same way without that side effect. */
.page-wrapper { overflow: clip !important; }
body {
  font-family: var(--tsw-sans);
  font-size: 16px;
  line-height: 1.65;
  color: var(--tsw-text);
  background: var(--tsw-white);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
/* One family everywhere (the theme mixes Muli, DM Sans, Poppins, Nunito, Roboto),
   leaving icon fonts alone. */
body :where(*:not([class^="ti-"]):not([class*=" ti-"]):not(.fi):not([class^="flaticon"]):not([class*=" flaticon"]):not([class^="eicon"]):not([class*=" eicon"])) {
  font-family: var(--tsw-sans) !important;
}
h1, h2,
.elementor-widget-heading h1.elementor-heading-title,
.elementor-widget-heading h2.elementor-heading-title,
.wpo-section-title h2,
.wpo-page-title-section .wpo-page-title-wrapper h2 {
  font-family: var(--tsw-serif) !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em;
  color: var(--tsw-ink);
  text-transform: none !important;
}
h3, h4, h5, h6 {
  font-family: var(--tsw-sans) !important;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--tsw-ink);
  text-transform: none !important;
}
/* The theme Capitalises Every Word in headings/links; corporate copy uses sentence case. */
h1, h2, h3, h4, h5, h6, h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { text-transform: none !important; }
p { color: var(--tsw-text); }
a { transition: color .2s ease, background-color .2s ease, border-color .2s ease; }
img { max-width: 100%; height: auto; }
::selection { background: var(--tsw-gold); color: #fff; }
:focus-visible { outline: 2px solid var(--tsw-gold); outline-offset: 3px; }

.tsw-container {
  width: 100%;
  max-width: calc(var(--tsw-max) + var(--tsw-gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--tsw-gutter);
}
/* The site's custom CSS forced .col-lg-8 to 60% and .col-lg-2 to 20% globally (meant for
   the old header). That squeezed every 8+4 content/sidebar layout — restore Bootstrap. */
@media (min-width: 992px) {
  .col-lg-8 { width: 66.66666667%; }
  .col-lg-2 { width: 16.66666667%; }
}

/* Bootstrap containers: same width + gutter everywhere. */
.container { max-width: calc(var(--tsw-max) + 30px); padding-left: 15px; padding-right: 15px; }
@media (max-width: 991px) { .container { padding-left: 24px; padding-right: 24px; } }
@media (max-width: 575px) { .container { padding-left: 16px; padding-right: 16px; } }

/* Tablet: three feature cards in one row instead of 2 + 1 orphan. */
@media (min-width: 768px) and (max-width: 991px) {
  .wpo-features-section-s2 .row > .col-md-6 { width: 33.3333%; }
  .wpo-features-section-s2 .wpo-features-item { padding: 28px 22px 24px !important; }
}
/* Forms: keep paired fields side by side from small tablets up. */
@media (min-width: 576px) and (max-width: 991px) {
  .wpcf7-form .row > .col-lg-6 { flex: 0 0 auto; width: 50%; }
}

.tsw-eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  margin: 0 0 18px;
  font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase;
  color: var(--tsw-gold);
}
.tsw-eyebrow::before { content: ""; width: 28px; height: 1px; background: currentColor; }

/* Preloader removed from markup; hide it defensively if any page still has one. */
.preloader { display: none !important; }

/* --------------------------------------------------------------------------
   2. Buttons
   -------------------------------------------------------------------------- */
.tsw-btn,
.theme-btn, .theme-btn-s2, .theme-btn-s3, .theme-btn-s4,
.wpcf7-submit,
.elementor-button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 46px;
  padding: 12px 24px !important;
  border: 1px solid transparent !important;
  border-radius: var(--tsw-radius) !important;
  font-family: var(--tsw-sans) !important;
  font-size: 15px !important; font-weight: 600 !important; line-height: 1.2 !important;
  letter-spacing: .01em; text-transform: none !important; text-decoration: none !important;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.tsw-btn--primary,
.theme-btn, .theme-btn-s2, .theme-btn-s3, .theme-btn-s4,
.wpcf7-submit,
.elementor-button {
  background: var(--tsw-gold) !important;
  color: #fff !important;
}
.tsw-btn--primary:hover,
.theme-btn:hover, .theme-btn-s2:hover, .theme-btn-s3:hover, .theme-btn-s4:hover,
.wpcf7-submit:hover,
.elementor-button:hover {
  background: var(--tsw-gold-600) !important;
  color: #fff !important;
  box-shadow: 0 8px 20px -8px rgba(194, 150, 48, .6);
}
.theme-btn::before, .theme-btn::after, .theme-btn-s2::before, .theme-btn-s2::after { display: none !important; }
.tsw-btn--ghost { background: transparent; color: #fff !important; border-color: rgba(255, 255, 255, .45) !important; }
.tsw-btn--ghost:hover { background: rgba(255, 255, 255, .08); border-color: #fff !important; }
.tsw-btn--lg { min-height: 52px; padding: 14px 28px !important; font-size: 16px !important; }

/* --------------------------------------------------------------------------
   3. Header
   -------------------------------------------------------------------------- */
.tsw-header {
  position: sticky; top: 0; z-index: 1000;
  background: var(--tsw-navy-900);
  border-bottom: 1px solid rgba(255, 255, 255, .08);
  transition: box-shadow .25s ease, background-color .25s ease;
}
.tsw-header.is-scrolled { box-shadow: 0 8px 24px -12px rgba(0, 0, 0, .45); }
.tsw-header__bar {
  display: flex; align-items: center; gap: 24px;
  min-height: var(--tsw-header-h);
}
.tsw-header__logo { flex: 0 0 auto; display: block; line-height: 0; }
.tsw-header__logo img { height: 44px; width: auto; max-width: none; }
.tsw-nav { flex: 1 1 auto; display: flex; justify-content: center; min-width: 0; }
.tsw-menu { display: flex; align-items: center; gap: 4px; margin: 0; padding: 0; list-style: none; }
.tsw-menu > li { position: relative; margin: 0; padding: 0; }
.tsw-menu > li > a,
.tsw-menu__toggle {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 10px 12px;
  background: none; border: 0; border-radius: var(--tsw-radius);
  font-size: 15px; font-weight: 500; line-height: 1.2;
  color: rgba(255, 255, 255, .82) !important;
  text-decoration: none; white-space: nowrap; cursor: pointer;
}
.tsw-menu > li > a:hover,
.tsw-menu__toggle:hover,
.tsw-menu > li:focus-within > .tsw-menu__toggle { color: #fff !important; background: rgba(255, 255, 255, .06); }
.tsw-menu > li.current-menu-item > a,
.tsw-menu > li.current-menu-ancestor > .tsw-menu__toggle,
.tsw-menu > li.current-menu-parent > .tsw-menu__toggle { color: #fff !important; box-shadow: inset 0 -2px 0 var(--tsw-gold); border-radius: 0; }
.tsw-menu__toggle::after {
  content: ""; width: 7px; height: 7px; margin-top: -3px;
  border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg); transition: transform .2s ease;
}
.tsw-menu .sub-menu {
  list-style: none; margin: 0; padding: 8px;
  background: #fff; border: 1px solid var(--tsw-line); border-radius: var(--tsw-radius-lg);
  box-shadow: var(--tsw-shadow);
}
.tsw-menu .sub-menu a {
  display: block; padding: 10px 14px; border-radius: var(--tsw-radius);
  font-size: 14.5px; font-weight: 500; color: var(--tsw-ink) !important; text-decoration: none;
}
.tsw-menu .sub-menu a:hover,
.tsw-menu .sub-menu .current-menu-item > a { background: var(--tsw-surface); color: var(--tsw-gold-600) !important; }
.tsw-header__actions { flex: 0 0 auto; display: flex; align-items: center; gap: 12px; }
.tsw-header__cta { min-height: 42px; padding: 10px 20px !important; font-size: 14.5px !important; }
.tsw-burger { display: none; }

@media (min-width: 1100px) {
  .tsw-menu .sub-menu {
    position: absolute; top: calc(100% + 10px); left: 50%;
    min-width: 260px;
    opacity: 0; visibility: hidden; transform: translate(-50%, 6px);
    transition: opacity .18s ease, transform .18s ease, visibility .18s;
  }
  .tsw-menu .sub-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -12px; height: 12px; } /* hover bridge */
  .tsw-menu > li:hover > .sub-menu,
  .tsw-menu > li:focus-within > .sub-menu,
  .tsw-menu > li.is-open > .sub-menu { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
  .tsw-menu > li:hover > .tsw-menu__toggle::after,
  .tsw-menu > li.is-open > .tsw-menu__toggle::after { transform: rotate(-135deg); margin-top: 3px; }
}
@media (min-width: 1100px) and (max-width: 1240px) {
  .tsw-menu > li > a, .tsw-menu__toggle { padding: 10px 9px; font-size: 14.5px; }
  .tsw-header__bar { gap: 16px; }
}

/* Mobile / tablet drawer */
@media (max-width: 1099px) {
  :root { --tsw-header-h: 68px; }
  .tsw-header__logo img { height: 38px; }
  .tsw-header__actions { margin-left: auto; gap: 8px; }
  .tsw-burger {
    display: inline-flex; flex-direction: column; justify-content: center; gap: 5px;
    width: 44px; height: 44px; padding: 0 11px;
    background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .14); border-radius: var(--tsw-radius);
    cursor: pointer;
  }
  .tsw-burger span { display: block; height: 2px; width: 100%; background: #fff; border-radius: 2px; transition: transform .25s ease, opacity .2s ease; }
  .tsw-header.is-open .tsw-burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .tsw-header.is-open .tsw-burger span:nth-child(2) { opacity: 0; }
  .tsw-header.is-open .tsw-burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

  .tsw-nav {
    position: fixed; left: 0; right: 0; top: var(--tsw-header-h); bottom: 0;
    display: block;
    padding: 12px var(--tsw-gutter) 32px;
    background: var(--tsw-navy-900);
    border-top: 1px solid rgba(255, 255, 255, .08);
    overflow-y: auto; overscroll-behavior: contain;
    opacity: 0; visibility: hidden; transform: translateY(-8px);
    transition: opacity .2s ease, transform .2s ease, visibility .2s;
  }
  .tsw-header.is-open .tsw-nav { opacity: 1; visibility: visible; transform: none; }
  .tsw-menu { flex-direction: column; align-items: stretch; gap: 0; max-width: 640px; margin: 0 auto; }
  .tsw-menu > li { border-bottom: 1px solid rgba(255, 255, 255, .08); }
  .tsw-menu > li > a, .tsw-menu__toggle { width: 100%; justify-content: space-between; padding: 16px 4px; font-size: 17px; border-radius: 0; }
  .tsw-menu > li.current-menu-item > a,
  .tsw-menu > li.current-menu-ancestor > .tsw-menu__toggle,
  .tsw-menu > li.current-menu-parent > .tsw-menu__toggle { box-shadow: none; color: var(--tsw-gold) !important; }
  .tsw-menu > li > a:hover, .tsw-menu__toggle:hover { background: none; }
  .tsw-menu .sub-menu { display: none; margin: 0 0 12px; padding: 4px; background: rgba(255, 255, 255, .04); border-color: rgba(255, 255, 255, .08); box-shadow: none; }
  .tsw-menu > li.is-open > .sub-menu { display: block; }
  .tsw-menu > li.is-open > .tsw-menu__toggle::after { transform: rotate(-135deg); margin-top: 3px; }
  .tsw-menu .sub-menu a { color: rgba(255, 255, 255, .85) !important; padding: 12px 14px; font-size: 15.5px; }
  .tsw-menu .sub-menu a:hover, .tsw-menu .sub-menu .current-menu-item > a { background: rgba(255, 255, 255, .06); color: #fff !important; }
  body.tsw-nav-open { overflow: hidden; }
}
@media (max-width: 400px) {
  .tsw-header__logo img { height: 34px; }
  .tsw-header__cta { padding: 9px 14px !important; font-size: 14px !important; min-height: 40px; }
  .tsw-burger { width: 40px; height: 40px; padding: 0 10px; }
}
@media (max-width: 340px) {
  .tsw-header__logo img { height: 30px; }
  .tsw-header__cta { padding: 8px 11px !important; font-size: 13px !important; }
}

/* --------------------------------------------------------------------------
   4. Homepage hero
   -------------------------------------------------------------------------- */
.tsw-hero {
  position: relative; isolation: isolate; overflow: hidden;
  display: flex; align-items: center;
  min-height: min(720px, calc(100svh - var(--tsw-header-h)));
  padding: clamp(72px, 10vw, 120px) 0 clamp(120px, 14vw, 170px);
  background: var(--tsw-navy-900);
  color: #fff;
}
.tsw-hero__media { /* poster: a frame from the background video; also the fallback if video can't play */
  position: absolute; inset: 0; z-index: -3;
  background: url("../img/hero-video-poster.jpg") center / cover no-repeat;
}
/* Background video: sized to always cover the hero (16:9 iframe), fades in once playing. */
.tsw-hero__video {
  position: absolute; inset: 0; z-index: -2; overflow: hidden; pointer-events: none;
  opacity: 0; transition: opacity 1.2s ease;
}
.tsw-hero__video.is-playing { opacity: 1; }
.tsw-hero__video iframe { /* width/height set by corporate.js to cover the hero at 16:9 */
  position: absolute; top: 50%; left: 50%; border: 0;
  max-width: none !important; max-height: none !important; /* theme caps iframes at 100% */
  transform: translate(-50%, -50%);
}
.tsw-hero::before { /* legibility overlay: solid navy on the text side, footage breathes on the right */
  content: ""; position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(90deg, rgba(11, 23, 48, .96) 0%, rgba(11, 23, 48, .88) 38%, rgba(11, 23, 48, .62) 70%, rgba(11, 23, 48, .5) 100%),
    linear-gradient(0deg, rgba(11, 23, 48, .7) 0%, rgba(11, 23, 48, 0) 45%);
}
.tsw-hero::after { /* thin gold rule anchoring the bottom edge */
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px;
  background: linear-gradient(90deg, var(--tsw-gold), rgba(194, 150, 48, 0) 70%);
}
.tsw-hero__content { max-width: 680px; }
.tsw-hero__title {
  margin: 0 0 22px;
  font-family: var(--tsw-serif) !important;
  font-size: clamp(34px, 5.2vw, 58px) !important; line-height: 1.1 !important;
  font-weight: 600 !important; letter-spacing: -0.015em;
  color: #fff !important;
}
.tsw-hero__lead {
  margin: 0 0 34px; max-width: 600px;
  font-size: clamp(16px, 1.6vw, 18.5px); line-height: 1.7;
  color: rgba(255, 255, 255, .8);
}
.tsw-hero__actions { display: flex; flex-wrap: wrap; gap: 14px; }
.tsw-hero__facts {
  display: flex; flex-wrap: wrap; gap: 8px 22px;
  margin: 44px 0 0; padding: 22px 0 0; list-style: none;
  border-top: 1px solid rgba(255, 255, 255, .14);
}
.tsw-hero__facts li {
  position: relative; padding-left: 14px;
  font-size: 13.5px; font-weight: 500; letter-spacing: .02em; color: rgba(255, 255, 255, .7);
}
.tsw-hero__facts li::before { content: ""; position: absolute; left: 0; top: .6em; width: 5px; height: 5px; border-radius: 50%; background: var(--tsw-gold); }
@media (max-width: 767px) {
  .tsw-hero { min-height: 0; padding: 64px 0 112px; }
  .tsw-hero::before { background: linear-gradient(180deg, rgba(11, 23, 48, .82) 0%, rgba(11, 23, 48, .93) 55%, rgba(11, 23, 48, .97) 100%); }
  .tsw-hero__media { background-position: 60% center; }
  .tsw-hero__actions .tsw-btn { flex: 1 1 100%; }
  .tsw-hero__facts { margin-top: 36px; gap: 6px 18px; }
}

/* --------------------------------------------------------------------------
   5. Homepage sections
   -------------------------------------------------------------------------- */
/* Feature cards: lift onto the hero edge. */
.tsw-home .elementor-element-c1ebf8a { position: relative; z-index: 2; margin-top: -84px; }
.tsw-home .wpo-features-section-s2 { padding: 0 0 clamp(64px, 8vw, 100px); background: transparent; }
.tsw-home .wpo-features-section-s2 .wpo-features-wrapper { margin: 0; box-shadow: none; background: transparent; }
.tsw-home .wpo-features-section-s2 .row { row-gap: 24px; }
.wpo-features-section-s2 .wpo-features-item {
  height: 100%;
  padding: 36px 30px 32px !important;
  text-align: left !important;
  background: #fff !important;
  border: 1px solid var(--tsw-line);
  border-top: 3px solid var(--tsw-gold);
  border-radius: var(--tsw-radius-lg);
  box-shadow: var(--tsw-shadow) !important;
}
.wpo-features-section-s2 .wpo-features-item .wpo-features-icon,
.wpo-features-section-s2 .wpo-features-wrapper .wpo-features-item .wpo-features-icon {
  float: none !important; width: auto !important; height: auto !important; line-height: normal !important;
  margin: 0 0 20px !important; background: none !important; box-shadow: none !important; border-radius: 0 !important;
  text-align: left; overflow: visible !important;
}
.wpo-features-section-s2 .wpo-features-item .wpo-features-text { padding: 0 !important; margin: 0 !important; overflow: visible !important; }
.wpo-features-section-s2 .wpo-features-item .wpo-features-icon .icon {
  width: 56px !important; height: 56px !important; line-height: 56px !important; margin: 0 !important;
  border-radius: var(--tsw-radius) !important; background: var(--tsw-gold-100) !important; box-shadow: none !important;
  text-align: center;
}
.wpo-features-section-s2 .wpo-features-item .wpo-features-icon .fi:before { font-size: 28px !important; color: var(--tsw-gold-600) !important; line-height: 56px; }
.wpo-features-section-s2 .wpo-features-item .wpo-features-text h2 { margin: 0 0 10px !important; font-family: var(--tsw-sans) !important; font-size: 19px !important; line-height: 1.35 !important; }
.wpo-features-section-s2 .wpo-features-item .wpo-features-text h2 a { color: var(--tsw-ink) !important; pointer-events: none; }
.wpo-features-section-s2 .wpo-features-item .wpo-features-text p { margin: 0; font-size: 15px; line-height: 1.65; }
.wpo-features-section-s2 .wpo-features-item .visible-icon { display: none !important; }
.wpo-features-section-s2 .wpo-features-item::before,
.wpo-features-section-s2 .wpo-features-item::after { display: none !important; }

/* About */
.tsw-home .elementor-element-74aaf66 { padding: 0 0 clamp(64px, 8vw, 110px); }
.wpo-about-section { background: transparent !important; padding: 0 !important; }
.wpo-about-section .wpo-about-section-wrapper { padding: 0; }
.wpo-about-section .row { row-gap: 40px; }
.wpo-about-section .wpo-about-img { position: relative; }
.wpo-about-section .wpo-about-img img {
  width: 100%; aspect-ratio: 4 / 5; object-fit: cover;
  border-radius: var(--tsw-radius-lg); box-shadow: var(--tsw-shadow);
}
.wpo-about-section .wpo-about-img::after {
  content: ""; position: absolute; z-index: -1; left: -16px; bottom: -16px; width: 55%; height: 55%;
  border: 2px solid var(--tsw-gold); border-radius: var(--tsw-radius-lg);
}
.wpo-about-section .wpo-about-content { padding-left: clamp(0px, 4vw, 56px) !important; margin-top: 0 !important; }
.wpo-about-section .wpo-about-content .wpo-section-title { margin-bottom: 24px !important; padding-left: 0 !important; border: 0 !important; }
.wpo-about-section .wpo-about-content .wpo-section-title h2 { font-size: clamp(28px, 3.4vw, 40px) !important; line-height: 1.2 !important; margin: 0 !important; }
.wpo-about-section .wpo-about-content-inner p { font-size: 16px; line-height: 1.75; margin-bottom: 18px; }
.wpo-about-section .wpo-about-content-inner strong { color: var(--tsw-ink); }
.wpo-about-section .signeture:empty,
.wpo-about-section .signeture { display: none; }
@media (max-width: 991px) {
  .wpo-about-section .wpo-about-img { max-width: 520px; margin-inline: auto; }
  .wpo-about-section .wpo-about-img img { aspect-ratio: 16 / 11; }
  .wpo-about-section .wpo-about-img::after { display: none; }
}

/* Section titles everywhere: replace the theme's thick left bar + 40px indent
   with a short gold rule above the heading. */
.wpo-section-title h2 { padding-left: 0 !important; margin-top: 0 !important; }
.wpo-section-title h2::before {
  content: "" !important; position: static !important; display: block !important;
  width: 44px !important; height: 3px !important; margin-bottom: 18px; background: var(--tsw-gold) !important; border-radius: 2px;
}
.wpo-section-title h2:empty::before { display: none !important; }

/* Section heading rows (title left / intro right) */
.wpo-section-area { padding: 0; }
.wpo-section-area .row { row-gap: 12px; align-items: flex-end !important; }
.wpo-section-area .wpo-section-title { margin-bottom: 0 !important; padding-left: 0 !important; border: 0 !important; }
.wpo-section-area .wpo-section-title::before,
.wpo-section-area .wpo-section-title::after { display: none !important; }
.wpo-section-area .wpo-section-title h2 { margin: 0 !important; font-size: clamp(28px, 3.4vw, 40px) !important; line-height: 1.2 !important; }
.wpo-section-area .wpo-section-title p { margin: 0 !important; font-size: 16.5px; line-height: 1.7; color: var(--tsw-muted); }
@media (max-width: 991px) { .wpo-section-area .offset-lg-2 { margin-left: 0; } }
.tsw-home .elementor-element-219671b { padding-top: clamp(64px, 8vw, 100px) !important; background: var(--tsw-surface); }
.tsw-home .tsw-services { background: var(--tsw-surface); padding: 44px 0 clamp(64px, 8vw, 100px); }
.tsw-home .elementor-element-d8ed1c8 { padding-top: clamp(64px, 8vw, 100px); padding-bottom: 40px; }

/* Service cards (assets/services-overview.css) — align with the system */
.tsw-card { border-radius: var(--tsw-radius-lg) !important; border-color: var(--tsw-line) !important; box-shadow: var(--tsw-shadow-sm) !important; }
.tsw-card:hover { box-shadow: var(--tsw-shadow) !important; transform: translateY(-3px); }
.tsw-card__title { font-family: var(--tsw-sans) !important; font-size: 19px !important; font-weight: 600 !important; color: var(--tsw-ink) !important; }
.tsw-card__num { font-family: var(--tsw-serif) !important; }
@media (max-width: 991px) { .tsw-services__grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 20px !important; } }
@media (max-width: 600px) { .tsw-services__grid { grid-template-columns: 1fr !important; } .tsw-card { padding: 30px 24px 26px !important; } }

/* Consultation / CTA form block */
.wpo-consultancy-section {
  position: relative; padding: clamp(64px, 8vw, 110px) 0 !important;
  background-image: none !important; background-color: var(--tsw-navy-900) !important;
}
.wpo-consultancy-section::before { display: none !important; }
.wpo-consultancy-section .row { row-gap: 32px; align-items: center; }
.wpo-consultancy-section .consult-img { position: static !important; margin: 0 !important; }
.wpo-consultancy-section .consult-img img { position: static !important; width: 100%; border-radius: var(--tsw-radius-lg); }
.wpo-consultancy-section .wpo-consultancy-form-area {
  margin: 0 !important; padding: clamp(28px, 4vw, 48px) !important;
  background: #fff !important; border-radius: var(--tsw-radius-lg); box-shadow: var(--tsw-shadow);
}
.wpo-consultancy-section .wpo-consultancy-form-area .wpo-section-title { margin-bottom: 28px !important; padding: 0 !important; border: 0 !important; text-align: left; }
/* The small statue cut-out floated awkwardly beside the form; centre the form card instead. */
.wpo-consultancy-section .col-lg-4 { display: none !important; }
.wpo-consultancy-section .col-lg-8 { flex: 0 0 100% !important; width: 100% !important; max-width: 880px !important; margin-inline: auto; }
.wpo-consultancy-section .wpo-consultancy-form-area .wpo-section-title h2 { color: var(--tsw-ink) !important; font-size: clamp(26px, 3vw, 36px) !important; line-height: 1.2 !important; margin: 0 0 12px !important; }
.wpo-consultancy-section .wpo-consultancy-form-area .wpo-section-title p { color: var(--tsw-muted) !important; margin: 0 !important; }

/* Forms (all pages) */
.form-control,
.wpcf7-form-control:not(.wpcf7-submit) {
  width: 100%; min-height: 50px;
  padding: 12px 16px !important;
  font-size: 15px !important; color: var(--tsw-ink) !important;
  background: #fff !important;
  border: 1px solid #d5dbe5 !important; border-radius: var(--tsw-radius) !important;
  box-shadow: none !important;
  transition: border-color .2s ease, box-shadow .2s ease;
}
textarea.form-control, textarea.wpcf7-form-control { min-height: 140px; height: 140px; resize: vertical; }
.form-control:focus, .wpcf7-form-control:not(.wpcf7-submit):focus {
  border-color: var(--tsw-gold) !important; box-shadow: 0 0 0 3px rgba(194, 150, 48, .18) !important; outline: 0;
}
.form-control::placeholder { color: #8a94a6 !important; }
.wpcf7-form .row { row-gap: 0; }
.wpcf7-form p { margin-bottom: 16px; }
.wpcf7-form .submit-area p { margin: 4px 0 0; }
.wpcf7-response-output { margin: 16px 0 0 !important; padding: 12px 16px !important; border-radius: var(--tsw-radius); font-size: 14.5px; }
.wpcf7-response-output:empty { display: none; }
select.form-control, select.wpcf7-form-control {
  appearance: none; -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%236b7689' stroke-width='1.6'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important; background-position: right 16px center !important; background-size: 12px !important;
  padding-right: 40px !important;
}
.tsw-anchor { display: block; position: relative; top: -12px; }
/* Contact page form: the theme pulls it 22px off the left edge. */
.wpo-contact-area .quote-form { margin-left: 0 !important; padding-left: 0 !important; }

/* Insights grid (homepage) — layout CSS for this page was lost in the export. */
/* Elementor sets `display: var(--display)`; that variable lived in the lost homepage CSS, so the
   container fell back to `display: inline` and ignored its vertical padding. */
.tsw-home .elementor-element-944dbef { display: block !important; padding: 48px 0 0 !important; } /* footer margin supplies the bottom gap */
.tsw-home .elementor-element-944dbef .elementor-widget-image-box { margin: 0 !important; }
.tsw-home .elementor-element-944dbef .elementor-image-box-wrapper { text-align: left !important; }
.tsw-home .elementor-element-944dbef .elementor-image-box-img { width: 100% !important; margin: 0 0 18px !important; }
.tsw-home .elementor-element-944dbef .elementor-image-box-img img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.tsw-home .elementor-element-944dbef .elementor-image-box-title { font-size: 20px !important; margin: 0 0 6px !important; }
.tsw-home .elementor-element-944dbef .elementor-image-box-description { font-size: 15px !important; color: var(--tsw-muted) !important; margin: 0; }
.tsw-home .elementor-element-944dbef .elementor-image-box-description br { display: none; }
.tsw-home .elementor-element-944dbef > .e-con-inner {
  display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px;
  width: 100%; max-width: calc(var(--tsw-max) + 30px); margin: 0 auto; padding: 0 15px;
}
@media (max-width: 991px) { .tsw-home .elementor-element-944dbef > .e-con-inner { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; padding: 0 24px; } }
@media (max-width: 600px) { .tsw-home .elementor-element-944dbef > .e-con-inner { grid-template-columns: 1fr; padding: 0 16px; } }

/* --------------------------------------------------------------------------
   6. Generic Elementor content (service, case-study, about, process pages)
   -------------------------------------------------------------------------- */
/* Entrance animations: replace off-canvas slides/zooms (which cause sideways
   scrolling and half-rendered cards) with a short, subtle fade-up. */
.animated.slideInRight, .animated.slideInLeft, .animated.slideInDown, .animated.slideInUp,
.animated.zoomIn, .animated.fadeInLeft, .animated.fadeInRight, .animated.bounceIn,
.animated.fadeInUp, .animated.fadeInDown, .animated.zoomInUp {
  animation-name: tswFadeUp !important; animation-duration: .6s !important; animation-timing-function: cubic-bezier(.2, .7, .2, 1) !important;
}
@keyframes tswFadeUp { from { opacity: 0; transform: translate3d(0, 16px, 0); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  .elementor-invisible { visibility: visible !important; }
}

/* Elementor visibility flags. Sections hidden on every device are unfinished template
   placeholders (lorem-ipsum testimonials, stock "attorneys") and must never show. */
.elementor-hidden-desktop.elementor-hidden-tablet.elementor-hidden-mobile { display: none !important; }
@media (min-width: 1025px) { .elementor .elementor-hidden-desktop { display: none !important; } }
@media (min-width: 768px) and (max-width: 1024px) { .elementor .elementor-hidden-tablet { display: none !important; } }
@media (max-width: 767px) { .elementor .elementor-hidden-mobile { display: none !important; } }

/* Keep boxed containers on the same grid as the rest of the site. */
.e-con-boxed > .e-con-inner { max-width: var(--tsw-max) !important; }
.e-con.e-parent { --padding-left: 15px; --padding-right: 15px; }
@media (max-width: 767px) {
  .e-con.e-parent { --padding-left: 16px !important; --padding-right: 16px !important; }
  .e-con, .e-con-inner { min-width: 0; }
}
.elementor-widget-image img { border-radius: var(--tsw-radius-lg); }

/* Headings used as section titles inside service pages */
.elementor-widget-heading h4.elementor-heading-title,
.elementor-widget-heading h3.elementor-heading-title {
  font-family: var(--tsw-serif) !important; font-weight: 600 !important;
  font-size: clamp(24px, 2.6vw, 30px) !important; line-height: 1.25 !important;
}
.elementor-widget-heading h2.elementor-heading-title { font-size: clamp(28px, 3.4vw, 40px) !important; line-height: 1.2 !important; }
.elementor-widget-heading h4.elementor-heading-title::before,
.elementor-widget-heading h3.elementor-heading-title::before {
  border-left-color: var(--tsw-gold) !important;
}

/* Icon boxes / image boxes become consistent cards */
.elementor-widget-icon-box .elementor-icon-box-title,
.elementor-widget-image-box .elementor-image-box-title {
  font-family: var(--tsw-sans) !important; font-weight: 600 !important; line-height: 1.35 !important;
}
.elementor-widget-icon-box .elementor-icon-box-title { font-size: 18px !important; margin-bottom: 8px !important; }
.elementor-widget-icon-box .elementor-icon-box-description,
.elementor-widget-image-box .elementor-image-box-description { font-size: 15px !important; line-height: 1.65 !important; }
.elementor-widget-image-box .elementor-image-box-title a { color: var(--tsw-ink) !important; }
.elementor-widget-image-box .elementor-image-box-title a:hover { color: var(--tsw-gold-600) !important; }
.elementor-widget-image-box .elementor-image-box-img img { border-radius: var(--tsw-radius-lg); transition: transform .4s ease; }
.elementor-widget-image-box .elementor-image-box-img { overflow: hidden; border-radius: var(--tsw-radius-lg); }
.elementor-widget-image-box:hover .elementor-image-box-img img { transform: scale(1.03); }

/* Bordered content cards (Why choose / Why Taswiyeh) — soften to the system radius and line colour. */
.e-con .elementor-widget-icon-box { border-color: var(--tsw-line) !important; border-radius: var(--tsw-radius-lg) !important; transition: box-shadow .25s ease, border-color .25s ease; }
.e-con .elementor-widget-icon-box:hover { box-shadow: var(--tsw-shadow-sm); }
/* Process steps: replace the 4px dashed gold outline with a clean card + gold top rule. */
.e-con .elementor-widget-icon-box.elementor-position-block-start {
  border: 1px solid rgba(255, 255, 255, .0) !important; border-top: 3px solid var(--tsw-gold) !important;
  border-radius: var(--tsw-radius-lg) !important; padding: 32px 24px 28px !important;
  box-shadow: 0 10px 24px -14px rgba(0, 0, 0, .5);
}
.e-con .elementor-widget-icon-box.elementor-position-block-start .elementor-icon svg { width: 56px !important; height: 56px !important; }
.e-con .elementor-widget-icon-box.elementor-position-block-start .elementor-icon-box-icon { margin-bottom: 18px !important; }
/* Section headings with the gold side rule: no 50px right padding (forced early wraps on phones). */
.elementor-widget-heading { padding-right: 0 !important; padding-top: 0 !important; padding-bottom: 0 !important; border-left-width: 3px !important; }
.e-con > .elementor-widget-heading, .e-con-inner > .elementor-widget-heading { margin-bottom: 20px !important; }
.elementor-widget-heading .elementor-heading-title { margin: 0 !important; }
/* Classic boxed sections have no side gutter below their max width. */
@media (max-width: 1240px) {
  .elementor-section.elementor-section-boxed > .elementor-container { padding-left: 24px; padding-right: 24px; }
}
@media (max-width: 575px) {
  .elementor-section.elementor-section-boxed > .elementor-container { padding-left: 16px; padding-right: 16px; }
}

/* Text editor content */
.elementor-widget-text-editor { color: var(--tsw-text); font-size: 16px; line-height: 1.75; }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }
/* Justified text opens wide gaps between words on narrow screens. */
@media (max-width: 767px) {
  .elementor-widget-text-editor, .elementor-widget-text-editor p,
  .elementor-widget-heading .elementor-heading-title, .elementor-widget-image-box .elementor-image-box-description { text-align: left !important; }
}

/* Accordion (FAQ) */
.wpo-faq-section .accordion-item, .panel-default, .elementor-widget-wpo-canun_accordion .panel {
  border-radius: var(--tsw-radius) !important;
}

/* Grids collapse cleanly on small screens. */
@media (max-width: 767px) {
  .e-grid { --e-con-grid-template-columns: minmax(0, 1fr) !important; grid-template-columns: minmax(0, 1fr) !important; }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .e-grid { --e-con-grid-template-columns: repeat(2, minmax(0, 1fr)) !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* --------------------------------------------------------------------------
   7. Inner-page title banner
   -------------------------------------------------------------------------- */
.wpo-page-title-section {
  min-height: 0 !important;
  padding: clamp(56px, 8vw, 96px) 0 clamp(48px, 7vw, 80px);
  text-align: left;
  background-color: var(--tsw-navy-900);
  background-position: center 30% !important;
}
.wpo-page-title-section::before { background: linear-gradient(90deg, rgba(11, 23, 48, .95) 0%, rgba(11, 23, 48, .85) 50%, rgba(11, 23, 48, .6) 100%) !important; }
.wpo-page-title-section::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: linear-gradient(90deg, var(--tsw-gold), rgba(194, 150, 48, 0) 60%); }
.wpo-page-title-section .wpo-page-title-wrapper { text-align: left !important; }
.wpo-page-title-section .wpo-page-title-wrapper .title { max-width: 820px; }
.wpo-page-title-section .wpo-page-title-wrapper h2 {
  margin: 0 !important; color: #fff !important;
  font-size: clamp(32px, 4.6vw, 52px) !important; line-height: 1.12 !important;
}
.wpo-page-title-section .wpo-page-title-wrapper h2::before {
  content: "Taswiyeh"; display: block; margin-bottom: 14px;
  font-family: var(--tsw-sans) !important; font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--tsw-gold);
}
.wpo-page-title-section .wpo-page-title-wrapper ul { margin: 16px 0 0; padding: 0; }
.wpo-page-title-section .wpo-page-title-wrapper ul li,
.wpo-page-title-section .wpo-page-title-wrapper ul li a { font-family: var(--tsw-sans) !important; font-size: 14.5px !important; color: rgba(255, 255, 255, .75) !important; }

/* --------------------------------------------------------------------------
   8. Blog / insights / case-study listing polish
   -------------------------------------------------------------------------- */
.wpo-blog-pg-section .post, .blog-single-section .post { border-radius: var(--tsw-radius-lg); }
.wpo-blog-pg-section .entry-details h3 a, .wpo-blog-pg-section .entry-details h2 a { color: var(--tsw-ink); }
.wpo-blog-pg-section .entry-details h3 a:hover, .wpo-blog-pg-section .entry-details h2 a:hover { color: var(--tsw-gold-600); }
.blog-sidebar .widget { border-radius: var(--tsw-radius-lg); }
.blog-sidebar .widget > h3 { font-family: var(--tsw-sans) !important; font-size: 18px !important; }
.wpo-blog-single-section .entry-details blockquote, .blog-single-section .entry-details blockquote { border-radius: var(--tsw-radius-lg); }
@media (max-width: 991px) { .blog-sidebar { margin-top: 48px; } }

/* --------------------------------------------------------------------------
   9. Footer
   -------------------------------------------------------------------------- */
.tsw-footer { margin-top: clamp(56px, 7vw, 96px); background: var(--tsw-navy-900); color: rgba(255, 255, 255, .72); font-size: 15px; }
.tsw-footer a { color: rgba(255, 255, 255, .78); text-decoration: none; }
.tsw-footer a:hover { color: var(--tsw-gold); }

/* CTA band */
.tsw-footer__cta {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 32px 48px;
  padding: clamp(48px, 6vw, 72px) 0;
  border-bottom: 1px solid rgba(255, 255, 255, .1);
}
.tsw-footer__cta .tsw-eyebrow { margin-bottom: 14px; }
.tsw-footer__cta h2 {
  margin: 0 0 12px; max-width: 640px;
  font-size: clamp(26px, 3.2vw, 38px) !important; line-height: 1.2 !important; color: #fff !important;
}
.tsw-footer__cta-text p:not(.tsw-eyebrow) { margin: 0; max-width: 600px; color: rgba(255, 255, 255, .7); font-size: 16px; line-height: 1.7; }
.tsw-footer__cta-actions { display: flex; flex-wrap: wrap; gap: 12px; }

/* Link grid */
.tsw-footer__grid {
  display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.3fr; gap: 40px;
  padding: clamp(48px, 6vw, 72px) 0 clamp(40px, 5vw, 56px);
}
.tsw-footer__logo { display: inline-block; line-height: 0; margin-bottom: 20px; }
.tsw-footer__logo img { width: 190px; height: auto; }
.tsw-footer__brand p { margin: 0; max-width: 320px; color: rgba(255, 255, 255, .65); line-height: 1.7; }
.tsw-footer__col h3 {
  margin: 4px 0 20px; font-size: 13px !important; font-weight: 600 !important;
  letter-spacing: .14em; text-transform: uppercase !important; color: #fff !important;
}
.tsw-footer__col ul { margin: 0; padding: 0; list-style: none; }
.tsw-footer__col li { margin: 0 0 12px; line-height: 1.5; }
.tsw-footer__col li a { display: inline-block; transition: color .2s ease, transform .2s ease; }
.tsw-footer__col:not(.tsw-footer__contact) li a:hover { transform: translateX(3px); }
.tsw-footer__contact li { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 14px; line-height: 1.6; }
.tsw-footer__contact svg {
  flex: 0 0 18px; width: 18px; height: 18px; margin-top: 3px;
  fill: none; stroke: var(--tsw-gold); stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round;
}
.tsw-footer__contact span { color: rgba(255, 255, 255, .72); }

/* Bottom bar */
.tsw-footer__bottom {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px;
  padding: 22px 0 26px; border-top: 1px solid rgba(255, 255, 255, .1);
}
.tsw-footer__bottom p { margin: 0; font-size: 13.5px; color: rgba(255, 255, 255, .55); }

@media (max-width: 991px) {
  .tsw-footer__cta { grid-template-columns: 1fr; }
  .tsw-footer__grid { grid-template-columns: 1fr 1fr; gap: 40px 32px; }
}
@media (max-width: 575px) {
  .tsw-footer__cta-actions .tsw-btn { flex: 1 1 100%; }
  .tsw-footer__grid { grid-template-columns: 1fr 1fr; gap: 36px 20px; }
  .tsw-footer__brand, .tsw-footer__contact { grid-column: 1 / -1; }
  .tsw-footer__bottom { flex-direction: column; }
}
/* Theme's back-to-top button */
.back-to-top {
  width: 44px !important; height: 44px !important; line-height: 42px !important;
  border-radius: var(--tsw-radius) !important; background: var(--tsw-navy-700) !important; border-color: var(--tsw-navy-700) !important;
  right: 20px !important; bottom: 20px !important;
}
.back-to-top:hover { background: var(--tsw-gold) !important; border-color: var(--tsw-gold) !important; }

/* --------------------------------------------------------------------------
   10. Case studies listing (case-studies/)
   -------------------------------------------------------------------------- */
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }

.tsw-cases__intro { padding: clamp(56px, 7vw, 96px) 0 clamp(32px, 4vw, 48px); }
.tsw-cases__intro-grid { display: grid; grid-template-columns: 5fr 6fr; gap: 24px 64px; align-items: end; }
.tsw-cases__intro h2 { margin: 0; font-size: clamp(30px, 3.6vw, 44px) !important; line-height: 1.15 !important; }
.tsw-cases__intro-grid > div > p:not(.tsw-eyebrow) { margin: 0 0 22px; font-size: 17px; line-height: 1.7; color: var(--tsw-muted); }
.tsw-cases__index { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.tsw-cases__index a {
  display: inline-block; padding: 7px 14px;
  font-size: 14px; font-weight: 500; color: var(--tsw-ink);
  background: var(--tsw-surface); border: 1px solid var(--tsw-line); border-radius: 999px; text-decoration: none;
}
.tsw-cases__index a:hover { border-color: var(--tsw-gold); color: var(--tsw-gold-600); background: #fff; }

.tsw-cases__list { padding: 0; } /* footer margin supplies the bottom gap */
.tsw-case {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: clamp(28px, 4vw, 64px);
  padding: clamp(32px, 4vw, 56px) 0;
  border-top: 1px solid var(--tsw-line);
  scroll-margin-top: calc(var(--tsw-header-h) + 16px);
}
.tsw-case:nth-child(even) .tsw-case__media { order: 2; }
.tsw-case__media { display: block; overflow: hidden; border-radius: var(--tsw-radius-lg); box-shadow: var(--tsw-shadow); line-height: 0; }
.tsw-case__media img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; transition: transform .5s ease; }
.tsw-case:hover .tsw-case__media img { transform: scale(1.03); }
.tsw-case__service {
  display: flex; align-items: center; gap: 12px; margin: 0 0 14px;
  font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--tsw-gold-600);
}
.tsw-case__service span {
  font-family: var(--tsw-serif) !important; font-size: 15px; letter-spacing: 0; color: var(--tsw-muted);
  padding-right: 12px; border-right: 1px solid var(--tsw-line);
}
.tsw-case__title { margin: 0 0 14px; font-family: var(--tsw-serif) !important; font-size: clamp(22px, 2.3vw, 28px) !important; font-weight: 600 !important; line-height: 1.3 !important; }
.tsw-case__title a { font-family: var(--tsw-serif) !important; color: var(--tsw-ink); text-decoration: none; }
.tsw-case__title a:hover { color: var(--tsw-gold-600); }
.tsw-case__summary { margin: 0 0 22px; font-size: 16px; line-height: 1.75; }
.tsw-case__facts {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0;
  margin: 0 0 24px; padding: 14px 0; border-top: 1px solid var(--tsw-line); border-bottom: 1px solid var(--tsw-line);
}
.tsw-case__facts div { padding: 0 14px; border-left: 1px solid var(--tsw-line); }
.tsw-case__facts div:first-child { padding-left: 0; border-left: 0; }
.tsw-case__facts dt { margin: 0 0 2px; font-size: 11.5px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--tsw-muted); }
.tsw-case__facts dd { margin: 0; font-size: 15px; font-weight: 600; color: var(--tsw-ink); }
.tsw-case__link {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 15px; font-weight: 600; color: var(--tsw-ink); text-decoration: none;
  border-bottom: 1px solid var(--tsw-gold); padding-bottom: 3px;
}
.tsw-case__link svg { width: 16px; height: 16px; fill: none; stroke: var(--tsw-gold); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .2s ease; }
.tsw-case__link:hover { color: var(--tsw-gold-600); }
.tsw-case__link:hover svg { transform: translateX(4px); }

@media (max-width: 991px) {
  .tsw-cases__intro-grid { grid-template-columns: 1fr; }
  .tsw-case { grid-template-columns: 1fr; gap: 24px; }
  .tsw-case:nth-child(even) .tsw-case__media { order: 0; }
}
@media (max-width: 575px) {
  .tsw-case__facts { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 12px; }
  .tsw-case__facts div:nth-child(3) { padding-left: 0; border-left: 0; }
}

/* --------------------------------------------------------------------------
   11. Case-study sidebar navigation (case-study-*/)
   -------------------------------------------------------------------------- */
.e-con:has(> .tsw-case-nav) { align-self: stretch !important; }
.tsw-case-nav {
  position: sticky; top: calc(var(--tsw-header-h) + 24px);
  padding: 22px 18px 18px;
  background: #fff; border: 1px solid var(--tsw-line); border-radius: 12px;
  box-shadow: var(--tsw-shadow);
}
.tsw-case-nav__title {
  display: flex; align-items: center; gap: 10px;
  margin: 0 6px 14px; font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--tsw-muted);
}
.tsw-case-nav__title::before { content: ""; width: 18px; height: 2px; background: var(--tsw-gold); border-radius: 2px; }
.tsw-case-nav__list { margin: 0; padding: 0; list-style: none; display: grid; gap: 4px; }
.tsw-case-nav__list a {
  position: relative; isolation: isolate; overflow: hidden;
  display: flex; align-items: center; gap: 14px;
  padding: 13px 14px 13px 18px; border-radius: 8px;
  color: var(--tsw-ink); text-decoration: none;
  transition: background-color .25s ease, color .25s ease, transform .25s ease, box-shadow .25s ease;
}
.tsw-case-nav__list a::before { /* gold indicator bar */
  content: ""; position: absolute; left: 0; top: 10px; bottom: 10px; width: 3px; border-radius: 0 3px 3px 0;
  background: var(--tsw-gold); transform: scaleY(0); transform-origin: center; transition: transform .3s ease;
}
.tsw-case-nav__num {
  flex: 0 0 auto; font-family: var(--tsw-serif) !important; font-size: 15px; font-weight: 600; color: var(--tsw-muted);
  transition: color .25s ease;
}
.tsw-case-nav__label { flex: 1 1 auto; font-size: 15.5px; font-weight: 500; line-height: 1.35; }
.tsw-case-nav__arrow {
  flex: 0 0 16px; width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
  opacity: 0; transform: translateX(-6px); transition: opacity .25s ease, transform .25s ease;
}
.tsw-case-nav__list a:hover { background: var(--tsw-surface); transform: translateX(3px); }
.tsw-case-nav__list a:hover::before { transform: scaleY(1); }
.tsw-case-nav__list a:hover .tsw-case-nav__num { color: var(--tsw-gold-600); }
.tsw-case-nav__list a:hover .tsw-case-nav__arrow { opacity: .7; transform: none; }

/* Active case */
.tsw-case-nav__list a.is-active {
  background: linear-gradient(135deg, var(--tsw-navy-800) 0%, var(--tsw-navy-600) 100%);
  color: #fff; transform: none;
  box-shadow: 0 12px 24px -12px rgba(11, 23, 48, .55);
  animation: tswNavIn .45s cubic-bezier(.2, .7, .2, 1) both;
}
.tsw-case-nav__list a.is-active::before { transform: scaleY(1); animation: tswBarIn .5s .15s cubic-bezier(.2, .7, .2, 1) both; }
.tsw-case-nav__list a.is-active::after { /* one-time light sweep */
  content: ""; position: absolute; z-index: -1; top: 0; bottom: 0; left: -60%; width: 50%;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .14), transparent);
  transform: skewX(-18deg); animation: tswSweep 1.1s .35s ease both;
}
.tsw-case-nav__list a.is-active .tsw-case-nav__num { color: var(--tsw-gold); }
.tsw-case-nav__list a.is-active .tsw-case-nav__label { font-weight: 600; }
.tsw-case-nav__list a.is-active .tsw-case-nav__arrow { opacity: 1; transform: none; color: var(--tsw-gold); }
@keyframes tswNavIn { from { opacity: .4; transform: translateX(-8px); } to { opacity: 1; transform: none; } }
@keyframes tswBarIn { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@keyframes tswSweep { from { left: -60%; } to { left: 120%; } }

.tsw-case-nav__cta {
  margin: 16px 0 0; padding: 18px 6px 2px; border-top: 1px solid var(--tsw-line);
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
}
.tsw-case-nav__cta p { margin: 0; font-size: 14.5px; font-weight: 500; color: var(--tsw-ink); }
.tsw-case-nav__cta .tsw-btn { min-height: 40px; padding: 9px 18px !important; font-size: 14px !important; }

/* Tablet & phone: a swipeable tab strip above the case */
@media (max-width: 1024px) {
  /* The flex parent otherwise sizes the strip to its content (1000px+), so it can't scroll. */
  .tsw-case-nav { width: 100%; min-width: 0; max-width: 100%; position: static; padding: 0; background: none; border: 0; box-shadow: none; }
  .tsw-case-nav__title, .tsw-case-nav__cta { display: none; }
  .tsw-case-nav__list {
    position: relative; display: flex; gap: 8px; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none;
    margin: 0 -16px; padding: 4px 16px 10px;
  }
  .tsw-case-nav__list::-webkit-scrollbar { display: none; }
  .tsw-case-nav__list li { flex: 0 0 auto; scroll-snap-align: start; }
  .tsw-case-nav__list a { padding: 10px 16px; gap: 10px; border: 1px solid var(--tsw-line); border-radius: 999px; background: #fff; white-space: nowrap; }
  .tsw-case-nav__list a::before, .tsw-case-nav__arrow { display: none; }
  .tsw-case-nav__list a:hover { transform: none; }
  .tsw-case-nav__list a.is-active { border-color: transparent; animation: none; }
  .tsw-case-nav__num { font-size: 13px; }
  .tsw-case-nav__label { font-size: 14.5px; }
}
@media (prefers-reduced-motion: reduce) {
  .tsw-case-nav__list a.is-active::after { display: none; }
}

/* --------------------------------------------------------------------------
   12. Motion: entrance reveals + parallax (driven by corporate.js)
   Only active under html.tsw-anim, which is set early in <head> when the browser
   supports it and the visitor hasn't asked for reduced motion.
   -------------------------------------------------------------------------- */
/* Elementor's own mixed entrance effects are replaced by the unified system below. */
.elementor-invisible { visibility: visible !important; }
.elementor-element.animated { animation: none !important; }
.tsw-anim .tsw-card { animation: none !important; } /* services-overview.css load animation */

:root { --tsw-ease-out: cubic-bezier(.2, .7, .2, 1); }
.tsw-anim [data-reveal] {
  opacity: 0;
  transition: opacity .8s var(--tsw-ease-out) var(--rd, 0ms), transform .9s var(--tsw-ease-out) var(--rd, 0ms), clip-path 1.1s var(--tsw-ease-out) var(--rd, 0ms) !important;
  will-change: opacity, transform;
}
.tsw-anim [data-reveal="up"]    { transform: translate3d(0, 36px, 0); }
.tsw-anim [data-reveal="left"]  { transform: translate3d(-48px, 0, 0); }
.tsw-anim [data-reveal="right"] { transform: translate3d(48px, 0, 0); }
.tsw-anim [data-reveal="zoom"]  { transform: scale(.94); }
.tsw-anim [data-reveal="unveil"] { opacity: 1; clip-path: inset(0 0 100% 0 round var(--tsw-radius-lg)); }
.tsw-anim [data-reveal].is-revealed { opacity: 1; transform: none; clip-path: inset(0 0 0 0 round var(--tsw-radius-lg)); }

/* Hero: staged load-in */
@keyframes tswRise { from { opacity: 0; transform: translate3d(0, 28px, 0); } to { opacity: 1; transform: none; } }
.tsw-anim .tsw-hero__content > * { animation: tswRise .9s var(--tsw-ease-out) both; }
.tsw-anim .tsw-hero__content > :nth-child(1) { animation-delay: .1s; }
.tsw-anim .tsw-hero__content > :nth-child(2) { animation-delay: .22s; }
.tsw-anim .tsw-hero__content > :nth-child(3) { animation-delay: .36s; }
.tsw-anim .tsw-hero__content > :nth-child(4) { animation-delay: .5s; }
.tsw-anim .tsw-hero__content > :nth-child(5) { animation-delay: .64s; }
/* Inner-page title banner load-in */
.tsw-anim .wpo-page-title-section .title { animation: tswRise .9s var(--tsw-ease-out) .1s both; }

/* Parallax layers (JS sets the `translate` property; `scale` gives images room to move) */
.tsw-hero__media, .tsw-hero__video, .tsw-hero__content { will-change: translate; }
img.tsw-plx { scale: 1.12; will-change: translate; }
.elementor-widget-image:has(img.tsw-plx) { overflow: hidden; border-radius: var(--tsw-radius-lg); }
.wpo-page-title-section.tsw-plx-bg { background-repeat: no-repeat !important; }

/* --------------------------------------------------------------------------
   13. Contact page (contact/)
   -------------------------------------------------------------------------- */
.tsw-contact-page .tsw-footer { margin-top: 0; } /* the map runs straight into the footer */
.tsw-contact__main { position: relative; padding: clamp(56px, 7vw, 100px) 0 clamp(64px, 8vw, 110px); background: linear-gradient(180deg, var(--tsw-surface) 0%, #fff 70%); }
.tsw-contact__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(32px, 5vw, 72px); align-items: start; }

/* Left: intro + details + steps */
.tsw-contact__intro h2 { margin: 0 0 18px; font-size: clamp(30px, 3.6vw, 44px) !important; line-height: 1.15 !important; }
.tsw-contact__lead { margin: 0 0 32px; font-size: 17px; line-height: 1.75; color: var(--tsw-muted); }
.tsw-contact__list { margin: 0 0 36px; padding: 0; list-style: none; display: grid; gap: 10px; }
.tsw-contact__item {
  display: flex; align-items: center; gap: 16px; padding: 14px 16px;
  background: #fff; border: 1px solid var(--tsw-line); border-radius: var(--tsw-radius-lg);
  color: var(--tsw-ink); text-decoration: none;
  transition: border-color .25s ease, box-shadow .25s ease, transform .25s ease;
}
.tsw-contact__item:hover { border-color: rgba(194, 150, 48, .55); box-shadow: var(--tsw-shadow-sm); transform: translateX(4px); color: var(--tsw-ink); }
.tsw-contact__icon {
  flex: 0 0 44px; width: 44px; height: 44px; display: grid; place-items: center;
  border-radius: 10px; background: var(--tsw-navy-900); transition: background-color .25s ease;
}
.tsw-contact__item:hover .tsw-contact__icon { background: var(--tsw-gold); }
.tsw-contact__icon svg { width: 20px; height: 20px; fill: none; stroke: #fff; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.tsw-contact__item small { display: block; margin-bottom: 2px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--tsw-muted); }
.tsw-contact__item strong { display: block; font-size: 15.5px; font-weight: 600; line-height: 1.45; }

.tsw-contact__steps { padding: 24px 24px 8px; border-left: 3px solid var(--tsw-gold); background: #fff; border-radius: 0 var(--tsw-radius-lg) var(--tsw-radius-lg) 0; box-shadow: var(--tsw-shadow-sm); }
.tsw-contact__steps-title { margin: 0 0 16px; font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--tsw-ink); }
.tsw-contact__steps ol { margin: 0; padding: 0; list-style: none; }
.tsw-contact__steps li { display: flex; gap: 16px; padding-bottom: 16px; }
.tsw-contact__steps li > span { flex: 0 0 auto; font-family: var(--tsw-serif) !important; font-size: 18px; font-weight: 600; color: var(--tsw-gold-600); line-height: 1.3; }
.tsw-contact__steps strong { display: block; font-size: 15.5px; color: var(--tsw-ink); }
.tsw-contact__steps li p { margin: 2px 0 0; font-size: 14.5px; line-height: 1.6; color: var(--tsw-muted); }

/* Right: form card */
.tsw-contact__card {
  position: relative; padding: clamp(28px, 4vw, 48px);
  background: #fff; border: 1px solid var(--tsw-line); border-top: 4px solid var(--tsw-gold); border-radius: 14px;
  box-shadow: 0 30px 60px -30px rgba(11, 23, 48, .35);
  scroll-margin-top: calc(var(--tsw-header-h) + 20px);
}
.tsw-contact__card-head h2 { margin: 0 0 10px; font-size: clamp(26px, 2.8vw, 34px) !important; line-height: 1.2 !important; }
.tsw-contact__card-head h2::before { display: none !important; }
.tsw-contact__card-head > p:last-child { margin: 0 0 28px; color: var(--tsw-muted); line-height: 1.7; }
.tsw-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 20px; }
.tsw-field--full { grid-column: 1 / -1; }
.tsw-field label { display: block; margin: 0 0 7px; font-size: 14px; font-weight: 600; color: var(--tsw-ink); }
.tsw-field .wpcf7-form-control-wrap { display: block; }
.tsw-form .form-control { min-height: 52px; background: var(--tsw-surface) !important; border-color: var(--tsw-line) !important; }
.tsw-form .form-control:focus { background: #fff !important; }
.tsw-form textarea.form-control { min-height: 160px; height: 160px; }
.tsw-form__foot { display: flex; align-items: center; justify-content: space-between; gap: 16px 24px; flex-wrap: wrap; margin-top: 24px; }
.tsw-form__note { display: flex; align-items: center; gap: 10px; margin: 0; font-size: 14px; color: var(--tsw-muted); }
.tsw-form__note svg { flex: 0 0 18px; width: 18px; height: 18px; fill: none; stroke: var(--tsw-gold-600); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.tsw-form__submit { min-height: 52px; padding: 14px 28px !important; font-size: 16px !important; }
.tsw-form__submit svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .2s ease; }
.tsw-form__submit:hover svg { transform: translateX(4px); }

/* Map with floating office card */
.tsw-contact__map { position: relative; min-height: clamp(420px, 48vw, 540px); background: var(--tsw-navy-900); overflow: hidden; }
.tsw-contact__map iframe { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none !important; border: 0; filter: grayscale(.35) contrast(1.05); }
.tsw-contact__map-inner { position: relative; height: 100%; min-height: inherit; display: flex; align-items: center; pointer-events: none; }
.tsw-contact__map-card {
  pointer-events: auto; max-width: 380px; padding: 30px 30px 28px;
  background: var(--tsw-navy-900); color: rgba(255, 255, 255, .78); border-radius: 12px; box-shadow: 0 24px 48px -20px rgba(0, 0, 0, .55);
}
.tsw-contact__map-card h3 { margin: 0 0 10px; font-family: var(--tsw-serif) !important; font-size: 26px !important; color: #fff !important; }
.tsw-contact__map-card p:not(.tsw-eyebrow) { margin: 0 0 22px; color: rgba(255, 255, 255, .75); line-height: 1.7; }
.tsw-contact__map-card .tsw-btn svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linejoin: round; }

@media (max-width: 991px) {
  .tsw-contact__grid { grid-template-columns: 1fr; }
  .tsw-contact__card { order: -1; } /* form first on smaller screens (Submit Case lands here) */
}
@media (max-width: 575px) {
  .tsw-form__grid { grid-template-columns: 1fr; }
  .tsw-form__submit { width: 100%; }
  .tsw-contact__map { min-height: 0; display: flex; flex-direction: column; }
  .tsw-contact__map iframe { position: relative; height: 320px; }
  .tsw-contact__map-inner { padding-top: 0; padding-bottom: 0; }
  .tsw-contact__map-card { max-width: none; margin: -40px 0 0; position: relative; }
  .tsw-contact__map { padding-bottom: 0; }
}
@media (min-width: 992px) {
  .tsw-contact__card { position: sticky; top: calc(var(--tsw-header-h) + 24px); } /* stays in view beside the longer details column */
}
