/* Portfolio Gallery for Elementor — frontend styles.
   Anything set on the Elementor Style tab overrides these defaults. */

.ow-portfolio{
  background:#14181c;
  padding:80px 24px;
  box-sizing:border-box;
}
.ow-portfolio *,
.ow-portfolio *::before,
.ow-portfolio *::after{box-sizing:border-box;}
.ow-inner{max-width:1240px;margin:0 auto;}

/* ---------- Heading ---------- */
.ow-head{margin-bottom:34px;}
.ow-head-split{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:24px 48px;
  align-items:end;
}
.ow-head-centered{text-align:center;}
.ow-head-centered .ow-sub{margin-left:auto;margin-right:auto;}
.ow-eyebrow{
  color:#f2a81d;font-size:13px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;margin:0 0 10px;
}
.ow-title{
  color:#fff;font-size:clamp(30px,4vw,46px);line-height:1.1;
  font-weight:800;margin:0;letter-spacing:-.01em;
}
.ow-sub{
  color:#9db2c7;font-size:16px;line-height:1.65;margin:0;max-width:52ch;
}
.ow-head-split .ow-sub{padding-bottom:8px;}
.ow-head-stacked .ow-sub,
.ow-head-centered .ow-sub{margin-top:14px;}

/* ---------- Filters ---------- */
.ow-filters{
  display:flex;flex-wrap:wrap;gap:10px;
  padding:0 0 28px;
  border-bottom:1px solid rgba(157,178,199,.22);
  margin-bottom:22px;
}
.ow-filter{
  appearance:none;cursor:pointer;font:inherit;
  font-size:14px;font-weight:600;line-height:1;
  color:#9db2c7;background:transparent;
  border:1px solid rgba(157,178,199,.22);
  border-radius:40px;padding:11px 20px;
  transition:color .18s ease,border-color .18s ease,background-color .18s ease;
}
.ow-filter:hover{color:#fff;border-color:rgba(242,168,29,.55);}
.ow-filter:focus-visible{outline:2px solid #f2a81d;outline-offset:3px;}
.ow-filter[aria-pressed="true"]{background:#f2a81d;border-color:#f2a81d;color:#14181c;}
.ow-count{margin-left:auto;align-self:center;color:#9db2c7;font-size:13px;opacity:.85;}

/* ---------- Grid ---------- */
.ow-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:22px;list-style:none;margin:0;padding:0;
}
.ow-grid[hidden]{display:none;}
.ow-item{margin:0;}
.ow-item.is-hidden{display:none;}

.ow-card{
  display:block;position:relative;width:100%;
  aspect-ratio:4/3;                 /* every tile the same box */
  overflow:hidden;border-radius:6px;
  background:#1b2128;border:1px solid rgba(157,178,199,.22);
  cursor:pointer;padding:0;appearance:none;text-align:left;
}
.ow-card:focus-visible{outline:2px solid #f2a81d;outline-offset:3px;}

.ow-card img,
.ow-card video{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center;display:block;
  transition:transform .5s cubic-bezier(.2,.7,.3,1);
}
.ow-zoom .ow-card:hover img,
.ow-zoom .ow-card:focus-visible img,
.ow-zoom .ow-card:hover video,
.ow-zoom .ow-card:focus-visible video{transform:scale(1.05);}

.ow-noimg{position:absolute;inset:0;background:#1b2128;}

/* Play badge */
.ow-play{
  position:absolute;top:50%;left:50%;
  width:56px;height:56px;margin:-28px 0 0 -28px;
  border-radius:50%;background:rgba(20,24,28,.72);
  border:1px solid rgba(255,255,255,.35);
  display:flex;align-items:center;justify-content:center;
  transition:background-color .2s ease,border-color .2s ease;
  pointer-events:none;
}
.ow-play::after{
  content:"";border-left:15px solid #fff;
  border-top:9px solid transparent;border-bottom:9px solid transparent;
  margin-left:4px;
}
.ow-card:hover .ow-play{background:#f2a81d;border-color:#f2a81d;}
.ow-card:hover .ow-play::after{border-left-color:#14181c;}

.ow-badge{
  position:absolute;top:12px;left:12px;
  background:rgba(20,24,28,.8);color:#fff;
  font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  padding:5px 9px;border-radius:3px;pointer-events:none;
}
.ow-no-badge .ow-badge{display:none;}

/* Captions */
.ow-caption{
  position:absolute;left:0;right:0;bottom:0;
  padding:44px 18px 16px;
  background:linear-gradient(to top,rgba(10,13,16,.92) 20%,rgba(0,0,0,0));
  transition:transform .32s cubic-bezier(.2,.7,.3,1);
  pointer-events:none;
}
.ow-caption-hover .ow-caption{transform:translateY(101%);}
.ow-caption-hover .ow-card:hover .ow-caption,
.ow-caption-hover .ow-card:focus-visible .ow-caption{transform:translateY(0);}
.ow-caption b{display:block;color:#fff;font-size:15px;font-weight:700;line-height:1.3;}
.ow-caption span{
  display:block;margin-top:3px;color:#f2a81d;
  font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
}

.ow-empty{color:#9db2c7;padding:48px 0;text-align:center;font-size:15px;}
.ow-empty[hidden]{display:none;}

/* ---------- Lightbox ---------- */
.ow-lightbox{
  position:fixed;inset:0;z-index:99999;
  display:flex;align-items:center;justify-content:center;
  padding:40px 72px;background:rgba(8,11,14,.95);
}
.ow-lightbox[hidden]{display:none;}
.ow-lb-stage{width:100%;max-width:1100px;}
.ow-lb-stage img,
.ow-lb-stage video{
  max-width:100%;max-height:78vh;display:block;margin:0 auto;
  border-radius:6px;background:#000;
}
.ow-lb-frame{
  position:relative;width:100%;aspect-ratio:16/9;max-height:78vh;
  border-radius:6px;overflow:hidden;background:#000;
}
.ow-lb-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.ow-lb-cap{color:#fff;text-align:center;margin:14px 0 0;font-size:15px;}
.ow-lb-cap em{display:block;font-style:normal;color:#9db2c7;font-size:13px;margin-top:4px;}
.ow-lb-btn{
  position:absolute;top:50%;transform:translateY(-50%);
  width:48px;height:48px;border-radius:50%;
  border:1px solid rgba(157,178,199,.3);background:rgba(20,24,28,.85);
  color:#fff;font-size:22px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
}
.ow-lb-btn:hover{border-color:#f2a81d;color:#f2a81d;}
.ow-lb-prev{left:20px;}
.ow-lb-next{right:20px;}
.ow-lb-close{position:absolute;top:20px;right:20px;transform:none;}

/* ---------- Tablet ---------- */
@media (max-width:1024px){
  .ow-portfolio{padding:64px 22px;}
  .ow-head-split{grid-template-columns:1fr;align-items:start;gap:14px;}
  .ow-head-split .ow-sub{padding-bottom:0;}
  .ow-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}

/* ---------- Mobile ---------- */
@media (max-width:767px){
  .ow-portfolio{padding:52px 18px;}
  .ow-sub{font-size:15px;}
  .ow-filters{
    flex-wrap:nowrap;overflow-x:auto;padding-bottom:20px;
    scrollbar-width:none;-webkit-overflow-scrolling:touch;
  }
  .ow-filters::-webkit-scrollbar{display:none;}
  .ow-filter{flex:0 0 auto;padding:10px 16px;font-size:13px;}
  .ow-count{display:none;}
  .ow-grid{grid-template-columns:1fr;}
  /* No hover on touch, so captions stay put */
  .ow-caption-hover .ow-caption{transform:none;padding:30px 12px 11px;}
  .ow-caption b{font-size:13px;}
  .ow-caption span{font-size:10px;}
  .ow-play{width:44px;height:44px;margin:-22px 0 0 -22px;}
  .ow-play::after{border-left-width:12px;border-top-width:7px;border-bottom-width:7px;}
  .ow-lightbox{padding:16px;}
  .ow-lb-btn{width:40px;height:40px;}
  .ow-lb-prev{left:6px;}
  .ow-lb-next{right:6px;}
}

@media (prefers-reduced-motion:reduce){
  .ow-portfolio *{transition:none !important;}
}
