/*
 * Theme custom overrides (kept outside vendor/framework styles)
 */
/* ----------------------------------------
   Global Font Override
   优先使用微软雅黑作为站点全局字体
----------------------------------------- */
:root {
  --font-family-base: "SF Pro SC","HanHei SC","SF Pro Text","Myriad Set Pro","SF Pro Icons","Apple Legacy Chevron","PingFang SC","Helvetica Neue","Helvetica","Arial",sans-serif;
}
html body { font-family: var(--font-family-base); }

/* Ensure logo image is block-level for consistent spacing */
.logo img {
  /* display: block; */
  height: 40px;
}

/* Hero section full-width background support */
.hero {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  position: relative;
  z-index: 1;
  min-height: 500px;
  display: flex;
  align-items: center;
}

.hero .container {
  position: relative;
  z-index: 2;
}

.hero.has-bg::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0, 0, 0, 0.35);
}
/* When using glass container, remove global overlay to allow backdrop blur */
.hero.has-bg.has-glass::before {
  display: none;
}

.hero.has-bg .title-1,
.hero.has-bg .title-sub,
.hero.has-bg .lead {
  color: #fff;
}

/* Improve readability of hero text when glass is used over light backgrounds */
.hero.has-bg.has-glass .title-1,
.hero.has-bg.has-glass .title-sub {
  text-shadow: 0 2px 8px rgba(0,0,0,0.35), 0 1px 2px rgba(0,0,0,0.50);
}

/* Hero subtitle size increase */
.hero .title-sub {
  font-size: 16px;
  line-height: 1.6;
  letter-spacing: 0.02em;
}

/* Projects grid: 3 columns per row on desktop */
/* Ensure grid wraps and doesn't overflow container */
#jsProjectGrid.project-grid-3 {
  display: flex;
  flex-wrap: wrap !important;
  white-space: normal !important;
  width: 100%;
}

@media (min-width: 992px) {
  #jsProjectGrid.project-grid-3 .section-col-3 {
    -webkit-box-flex: 0;
    -ms-flex: 0 0 33.3333%;
    flex: 0 0 33.3333%;
    max-width: 33.3333%;
    box-sizing: border-box;
  }
}
/* Service cards full-image with overlay title */
.service-card {
  position: relative;
  overflow: hidden;
  display: block;
}
.service-card img {
  width: 100%;
  height: 280px;
  object-fit: cover;
  display: block;
  transition: transform 240ms ease;
  transform-origin: center;
}
.service-card:hover img { transform: scale(1.06); }
.service-card__title {
  position: absolute;
  left: 16px;
  bottom: 16px;
  background: rgba(0, 0, 0, 0.45);
  color: #fff;
  padding: 8px 12px;
  font-size: 16px;
  line-height: 1.4;
}
@media (min-width: 992px) {
  .service-card img { height: 340px; }
}
/* Balanced title/sub sizes for service module */
.section-title--balanced .title-1 {
  font-size: clamp(20px, 2.0vw, 26px);
  line-height: 1.3;
  margin-bottom: 12px;
}
.section-title--balanced .title-sub {
  font-size: clamp(14px, 1.2vw, 18px);
  line-height: 1.7;
  margin: 0;
}
@media (max-width: 767.98px) {
  .section-title--balanced .title-1 { font-size: 20px; }
  .section-title--balanced .title-sub { font-size: 14px; }
}
/* Smaller title for service module */
.section-title--sm .title-1 {
  font-size: 32px;
  line-height: 1.3;
}
/* About simple centered layout */
.section-about-simple .about-centered {
  max-width: 860px;
  margin: 0 auto;
}
.section-about-simple .media__text {
  margin-top: 12px;
}
/* Client logo wall: show only ~60% of image within viewport */
.client-logos-wall {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  overflow: hidden;
}
/* Offices horizontal scroller */
.office-section {
  background-color: #fff;
}
.office-card {
  flex: 0 0 300px;
  max-width: 300px;
  background: #f8f8f8;
  border: 1px solid #eee;
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
}
.office-card__image img {
  width: 100%;
  height: 180px;
  object-fit: cover;
  display: block;
}
.office-card__body {
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
}
.office-card__name {
  font-size: 16px;
  font-weight: 600;
  margin: 0 0 6px;
}
.office-card__address {
  margin: 0;
  color: #666;
  font-size: 14px;
  line-height: 1.6;
  /* Reserve height for up to two lines to keep card heights equal */
  min-height: 3.2em; /* 2 lines * 1.6 line-height */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

@media (min-width: 992px) {
  .office-card { flex-basis: 340px; max-width: 340px; }
  .office-card__image img { height: 200px; }
}

/* Offices slick spacing and sizing */
.slick-offices .slick-content {
  margin-left: -12px;
  margin-right: -12px;
}
.slick-offices .slick-item {
  padding: 0 12px;
}
.slick-offices .office-card {
  width: 100%;
  max-width: none;
}

/* Project slider spacing */

/* ----------------------------------------
   Contact form aligned field heights
   使文本域高度正好等于两行输入框 + 中间间隔
----------------------------------------- */
.form-contact {
  --contact-input-h: 45px;    /* 输入框高度，与按钮 line-height 保持一致 */
  --contact-input-gap: 15px;  /* 输入框之间的间隔 */
}
.form-contact .au-input {
  height: var(--contact-input-h);
  line-height: var(--contact-input-h);
  margin-bottom: var(--contact-input-gap);
}
.form-contact .au-input:last-child {
  margin-bottom: 0; /* 避免最后一个输入框多余间隔 */
}
.form-contact .au-textarea {
  height: calc(var(--contact-input-h) * 2 + var(--contact-input-gap));
  min-height: calc(var(--contact-input-h) * 2 + var(--contact-input-gap));
}

/* ----------------------------------------
   Portfolio CTA & Modal
----------------------------------------- */
.portfolio-cta .link-2 {
  font-weight: 700;
  text-decoration: underline;
}

.portfolio-modal {
  position: fixed;
  inset: 0;
  z-index: 100000; /* ensure above page-line and other overlays */
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 260ms ease, visibility 0s linear 260ms;
}
.portfolio-modal.active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity 260ms ease;
}
.portfolio-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.5);
  z-index: 1; /* below panel */
}
.portfolio-modal__panel {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -100%;
  background: #fff;
  box-shadow: 0 -12px 40px rgba(0,0,0,0.18);
  transition: transform 320ms ease, bottom 0s linear 320ms;
  transform: translateY(100%);
  padding: 28px 0;
  z-index: 2; /* above backdrop */
}
.portfolio-modal.active .portfolio-modal__panel {
  bottom: 0;
  transform: translateY(0);
  transition: transform 320ms ease;
}
.portfolio-modal__close {
  position: absolute;
  right: 12px;
  top: 8px;
  background: transparent;
  border: none;
  font-size: 28px;
  line-height: 1;
  color: #888;
}
.portfolio-form .form-group { margin-bottom: 15px; }
.portfolio-form .au-input { width: 100%; }
.portfolio-cta { position: relative; z-index: 10001; }

/* Project card adjustments */
.media-project-2 .media__body {
    width: 100%;
    padding: 12px;
}
.media-project-2 .media__title {
    font-size: 20px;
    line-height: 1.4;
    margin-top: 10px;
}
.media-project-2 .media__meta {
    margin-top: 6px;
}
.media-project-2 .media__meta .address,
.media-project-2 .media__meta .category {
    font-size: 14px;
    line-height: 1.6;
    color: #666;
}

/* Project card image: fill from top and crop overflow */
.media-project-2 .media__img {
    position: relative;
    overflow: hidden;
    width: 100%;
    /* Maintain a consistent visual ratio for cards */
    aspect-ratio: 4 / 3;
}
.media-project-2 .media__img img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    object-position: top center;
}

/* Team hover behavior override: zoom image, remove overlay & social reveal */
.media-team .media__img-wrap {
    position: relative;
    overflow: hidden;
}
.media-team .overlay {
    display: none !important;
    opacity: 0 !important;
}
.media-team .list-social {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transition: none !important;
}
.media-team .media__img {
    transition: transform 300ms ease;
    transform-origin: center center;
}
.media-team:hover .media__img {
    transform: scale(1.06);
}

/* Project slider arrows visibility on white background */

/* Offices slider arrows visibility (match project arrows) */
.slick-offices ~ .slick__nav .slick-arrow {
  color: #222;
  background: #fff;
  border: 1px solid #ddd;
  width: 40px;
  height: 40px;
  line-height: 40px;
  border-radius: 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}
.slick-offices ~ .slick__nav .slick-arrow:hover {
  color: #000;
  border-color: #ccc;
  box-shadow: 0 2px 6px rgba(0,0,0,0.12);
}

/* Also style when nav is inside the wrapper */
.slick-offices .slick__nav .slick-arrow {
  color: #222;
  background: #fff;
  border: 1px solid #ddd;
  width: 40px;
  height: 40px;
  line-height: 40px;
  border-radius: 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}
.slick-offices .slick__nav .slick-arrow:hover {
  color: #000;
  border-color: #ccc;
  box-shadow: 0 2px 6px rgba(0,0,0,0.12);
}
.slick-offices .slick__nav .slick-prev { left: 10px !important; }
.slick-offices .slick__nav .slick-next { right: 10px !important; }

/* Basic layout for slick__nav when used as a container */

/* Team Bio Modal */
.team-bio-modal {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  background: rgba(0,0,0,0.72);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 10000;
}
.team-bio-modal.is-open { display: flex; }
.team-bio-dialog {
  position: relative;
  background: #ffffff;
  color: #333;
  width: min(1040px, 92vw);
  max-height: 88vh;
  overflow: auto;
  border-radius: 8px;
  box-shadow: 0 12px 32px rgba(0,0,0,0.25);
  display: grid;
  grid-template-columns: 360px 1fr;
  gap: 24px;
  padding: 24px;
}
.team-bio-close {
  position: absolute;
  right: 16px;
  top: 12px;
  border: none;
  background: transparent;
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
  color: #666;
}
.team-bio-photo { align-self: start; }
.team-bio-photo img {
  width: 100%;
  height: auto;
  border-radius: 6px;
  display: block;
}
.team-bio-title {
  margin: 0 0 20px 0;
  font-size: 24px;
  font-weight: 600;
}
.team-bio-intro {
  font-size: 13px;
  line-height: 1.8;
  color: #555;
  white-space: pre-line; /* 保留文本中的换行符为实际换行 */
}
@media (max-width: 768px) {
  .team-bio-dialog {
    grid-template-columns: 1fr;
    gap: 16px;
    padding: 20px;
  }
}

/* Office Maps section */
.office-maps .section-title { text-align: center; }
.office-maps .media__text { margin-top: 8px; color: #666; }
.office-maps__image img {
  display: block;
  margin: 16px auto 0;
  max-width: min(100%, 980px);
  height: auto;
}
/* ----------------------------------------
   Project Detail Page
   Scoped adjustments to match template style
----------------------------------------- */
.project-detail .title-2 {
  font-size: 20px; /* 减小标题字号 */
  font-weight: 600;
  margin: 0;
}
.project-detail .row-block {
  padding-top: 20px;
  padding-bottom: 20px;
  border-top: 1px solid #eee;
}
.project-detail .row-block:first-child { border-top: none; }
.project-detail .content {
  line-height: 2.2; /* 提升可读性：增大上下行间距 */
  color: #333;
}
/* ----------------------------------------
   Project Hero: Glass container and stats
----------------------------------------- */
.hero.hero--lg {
  min-height: 640px;
}
/* 视窗与首屏高度变量（用于第二屏定位） */
:root {
  --hero-first-screen-height: calc(100vh - var(--header-height));
  /* 箭头向上偏移量（默认 24px，可按需调） */
  --hero-arrow-offset: 24px;
}
/* 全宽毛玻璃容器：置于文档流中，紧随首屏出现 */
.hero.has-glass { position: relative; display: block; }
.hero-top { min-height: var(--hero-first-screen-height); display: flex; align-items: center; }
.hero-glass-wrap {
  position: relative;
  width: 100%;
  z-index: 1;
  /* 可调最小高度，避免内容过少时毛玻璃区域过窄 */
  min-height: var(--hero-glass-min-height, 200px);
}
/* hero 总高度：由首屏与 glass 内容自然撑开，无需额外 padding */
.hero.has-glass { min-height: calc(var(--hero-first-screen-height) + var(--hero-glass-min-height, 200px)); }
/* 首屏容器：内容在首屏区域居中显示 */
.hero-top {
  min-height: var(--hero-first-screen-height);
  display: flex;
  align-items: center;
}
/* 强制首屏标题水平居中（覆盖主题可能的左对齐） */
.hero-top .text-center .title-1 { text-align: center; }
/* 首屏底部下箭头：居中叠加于首屏与第二屏之间 */
.hero-arrow {
  position: absolute;
  left: 50%;
  top: calc(var(--hero-first-screen-height) - var(--hero-arrow-offset, 24px));
  width: 180px;
  height: 180px;
  transform: translate(-50%, -50%);
  z-index: 2;
  pointer-events: none; /* 纯视觉，不影响交互 */
}
/* 下箭头上下浮动动画（不影响父层居中位移） */
.hero-arrow__inner {
  display: inline-block;
  animation: heroArrowFloat 2.6s ease-in-out infinite;
  will-change: transform;
}
@keyframes heroArrowFloat {
  0% { transform: translateY(0); }
  50% { transform: translateY(12px); }
  100% { transform: translateY(0); }
}
/* 毛玻璃背景层（占满包裹层） */
.hero-glass-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.08);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
/* 文字内容层：保持容器宽度与居中，位于毛玻璃之上 */
.hero-glass__content {
  max-width: 1024px;
  margin: 0 auto;
  padding: 20px 16px;
  position: relative; /* 让内容位于 backdrop 上层 */
  min-height: var(--hero-glass-min-height, 200px);
  display: flex;
  flex-direction: column;
  justify-content: center; /* 垂直居中内容 */
}
.hero .hero-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  align-items: start;
}
.hero .hero-stats .stat {
  color: #fff;
  text-align: center; /* 居中标题与数值文本 */
}
.hero .hero-stats .stat .value {
  font-size: clamp(24px, 3.2vw, 36px);
  font-weight: 700;
  line-height: 1.2;
}
.hero .hero-stats .stat .label {
  margin-top: 8px;
  font-size: 14px;
  opacity: 0.9;
}

/* Shadows for glass content: improve contrast on bright backgrounds */
.hero.has-bg.has-glass .title-sub {
  text-shadow: 0 2px 8px rgba(0,0,0,0.35), 0 1px 2px rgba(0,0,0,0.50);
}
.hero.has-bg.has-glass .hero-stats .stat,
.hero.has-bg.has-glass .hero-stats .stat .value,
.hero.has-bg.has-glass .hero-stats .stat .label {
  text-shadow: 0 2px 8px rgba(0,0,0,0.35), 0 1px 2px rgba(0,0,0,0.50);
}
@media (max-width: 767.98px) {
  .hero .hero-stats { grid-template-columns: 1fr; }
}
/* (reverted) remove explicit header height overrides to use theme defaults */
/* Viewport and header height variables */
:root {
  --header-height: 56px; /* mobile default */
}
@media (min-width: 992px) {
  :root { --header-height: 82px; } /* desktop header approx */
}
.hero.hero--fullscreen {
  min-height: calc(100vh - var(--header-height));
}

/* Home hero: force flex centering even when has-glass */
.hero.home-hero.has-glass {
  display: flex;
  align-items: center;
}
.hero.home-hero.has-glass .hero-glass-wrap {
  width: 100%;
}
.hero.home-hero.has-glass .hero-glass__content {
  min-height: var(--hero-first-screen-height);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

/* Home hero spacing: increase gap between label and CTA */
.hero.home-hero .hero-cta {
  display: inline-block;
  margin-top: 28px;
}
@media (min-width: 992px) {
  .hero.home-hero .hero-cta { margin-top: 36px; }
}
/* Metrics cards */
.metrics-cards .metric-card {
  background: #f7f8fa; /* 浅色背景 */
  border-radius: 12px; /* 圆角 */
  padding: 16px 18px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
  text-align: center; /* 卡片内文本居中 */
}
.metric-card-title {
  font-weight: 600;
  margin-bottom: 8px;
}
.metric-card-body {
  display: block;
}
.metric-group + .metric-group {
  margin-top: 8px;
}
.metric-divider {
  height: 1px;
  background: rgba(0,0,0,0.08);
  margin: 12px 0;
}
.metric-value {
  font-size: 24px;
  font-weight: 700;
  line-height: 1.2;
}
.metric-desc {
  font-size: 12px;
  margin-top: 4px;
}

/* 等高布局：每行卡片高度一致 */
.metrics-cards .row {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch; /* 让同一行的列等高 */
}
.metrics-cards .row > [class*="col-"] {
  display: flex; /* 列作为 flex 项，使子卡片可撑满高度 */
  flex: 0 0 100%;
  max-width: 100%;
}
/* Bootstrap 断点宽度对齐：确保同一行等宽 */
@media (min-width: 768px) { /* sm */
  .metrics-cards .row > .col-sm-6 {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
@media (min-width: 992px) { /* md */
  .metrics-cards .row > .col-md-4 {
    flex: 0 0 33.3333%;
    max-width: 33.3333%;
  }
}
.metrics-cards .metric-card {
  display: flex;
  flex-direction: column;
  height: 100%; /* 卡片填满列高度，实现等高 */
}
.metrics-cards .metric-card .metric-card-body {
  flex: 1 1 auto; /* 主体部分占满剩余空间 */
}
/* CSS Grid for equal-width cards */
.metrics-cards .metrics-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  align-items: stretch; /* 同一行卡片等高 */
}
@media (max-width: 991.98px) {
  .metrics-cards .metrics-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 767.98px) {
  .metrics-cards .metrics-grid {
    grid-template-columns: 1fr;
  }
}

/* Header locale switcher: smaller text with middle separator */
.header-lang .list-social {
  display: inline-flex;
  align-items: center;
}
.header-lang .list-social__item {
  display: inline-flex;
  align-items: center;
}
.header-lang .list-social__item + .list-social__item::before {
  content: "|";
  color: #999;
  margin: 0 8px;
}
.header-lang .list-social a {
  font-size: 12px;
  line-height: 1;
  color: #333;
}
.header-lang .list-social a.is-active {
  font-weight: 600;
}
/* Slick arrows & dots custom styles */
.au-slick-arrow {
  width: 40px;
  height: 40px;
  border: 1px solid rgba(255,255,255,0.6);
  background: rgba(0,0,0,0.25);
  color: #fff;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
}
.au-slick-arrow:hover {
  background: rgba(0,0,0,0.4);
  border-color: rgba(255,255,255,0.85);
}

.slick-dots.slick-dots--light li button:before {
  color: #fff;
  opacity: 0.85;
}
.slick-dots.slick-dots--light li.slick-active button:before {
  color: #fff;
  opacity: 1;
}
/* Header locale switch text shadow */
.tp-caption.tp-resizeme.rev-text-1,
.tp-caption.tp-resizeme.rev-text-2 {
  text-shadow: 0 2px 6px rgba(0,0,0,0.7), 0 1px 2px rgba(0,0,0,0.6);
  color: #fff !important;
}
/* Hero title & subtitle text shadow */
.hero .title-1 {
  text-shadow: 0 2px 8px rgba(0,0,0,0.45), 0 1px 2px rgba(0,0,0,0.25);
}
.hero .title-sub {
  text-shadow: 0 1px 6px rgba(0,0,0,0.35), 0 1px 2px rgba(0,0,0,0.20);
}
/* Header nav hover & active bold */
.header-nav-menu .nav-menu .menu-item > a:hover,
.header-nav-menu .nav-menu .menu-item > a:focus {
  font-weight: 600;
}
.header-nav-menu .nav-menu .menu-item.is-active > a {
  font-weight: 700;
}
/* also support is-active on anchor */
.header-nav-menu .nav-menu .menu-item > a.is-active {
  font-weight: 700;
}

.header-nav-menu-mobile .nav-menu .menu-item > a:hover,
.header-nav-menu-mobile .nav-menu .menu-item > a:focus {
  font-weight: 600;
}
.header-nav-menu-mobile .nav-menu .menu-item.is-active > a {
  font-weight: 700;
}
/* also support is-active on anchor */
.header-nav-menu-mobile .nav-menu .menu-item > a.is-active {
  font-weight: 700;
}

/* Client logos wall (migrated from home/about inline styles) */
.client-logos-wall { overflow: hidden; --logos-height: 64px; }
.client-logos-row { width: 100%; }
.client-logos-track { white-space: nowrap; overflow: hidden; }
.client-logos-seam { display: inline-flex; will-change: transform; backface-visibility: hidden; transform: translate3d(0,0,0); animation-timing-function: linear; }
.client-logos-img { display: block; height: auto; max-height: var(--logos-height); flex: 0 0 auto; margin: 0; padding: 0; border: 0; }
.client-logos-track--ltr .client-logos-seam { animation: logos-marquee-right 30s linear infinite; }
.client-logos-track--rtl .client-logos-seam { animation: logos-marquee-left 30s linear infinite; }
@keyframes logos-marquee-left { 0% { transform: translate3d(0,0,0); } 100% { transform: translate3d(-50%,0,0); } }
@keyframes logos-marquee-right { 0% { transform: translate3d(-50%,0,0); } 100% { transform: translate3d(0,0,0); } }
@keyframes logos-marquee-right-w4873 { 0% { transform: translate3d(-4873px,0,0); } 100% { transform: translate3d(0,0,0); } }
@keyframes logos-marquee-left-w4844 { 0% { transform: translate3d(0,0,0); } 100% { transform: translate3d(-4844px,0,0); } }
.client-logos-seam--w4873-right { animation-name: logos-marquee-right-w4873; animation-duration: calc(30s * (4873 / 4844)); }
.client-logos-seam--w4844-left { animation-name: logos-marquee-left-w4844; animation-duration: 30s; }

/* Hero background common props */
.hero.has-bg { background-position: top center; background-size: cover; background-repeat: no-repeat; }

/* Animation helpers for home hero */
.anim-delay-1_2s { animation-delay: 1.2s; }
.anim-delay-1_6s { animation-delay: 1.6s; }
.anim-delay-2_2s { animation-delay: 2.2s; }
.anim-duration-1_5s { animation-duration: 1.5s; }
.anim-duration-1_2s { animation-duration: 1.2s; }

/* Contact result initial state */
.contact-result { display: none; opacity: 0; transition: opacity 0.4s ease; }

/* Initial hidden helper for rev slider */
.rev-init-hidden { display: none; }

/* Project filter width */
#jsProjectFilter { max-width: 260px; }

.testi-card {
    background: #f8f9fa;
    padding: 30px;
    height: 100%;
    transition: transform 0.3s ease;
}
.testi-card:hover {
    transform: scale(1.02);
}
.testi-card__body {
    font-size: 12px;
    line-height: 24px;
}
