/* Zencomex Project Gallery — styles strictly scoped to plugin output. */
.zcx-app, .zcx-single { --zcx-blue:#0751b5; --zcx-ink:#18283b; --zcx-gap:22px; font-family:inherit; }
.zcx-app *, .zcx-single * { box-sizing:border-box; }
.zcx-app { width:100%; max-width:1440px; margin:0 auto; padding:30px 0 45px; color:var(--zcx-ink); }
.zcx-tabs { display:flex; flex-wrap:wrap; justify-content:center; gap:34px; margin:0 0 30px; padding:0 12px; }
.zcx-tab { appearance:none!important; background:transparent!important; border:0!important; border-bottom:2px solid transparent!important; border-radius:0!important; padding:7px 1px 5px!important; margin:0!important; color:#696d77!important; font-weight:400!important; font-size:16px!important; text-transform:uppercase!important; line-height:1.5!important; letter-spacing:0!important; box-shadow:none!important; cursor:pointer; transition:color .18s ease,border-color .18s ease; }
.zcx-tab:hover, .zcx-tab:focus-visible, .zcx-tab.is-active { color:#1a1c26!important; border-bottom-color:var(--zcx-blue)!important; }
.zcx-tab:focus-visible, .zcx-card__gallery:focus-visible, .zcx-viewer button:focus-visible, .zcx-load-more:focus-visible { outline:2px solid #5da5ff!important; outline-offset:3px; }
.zcx-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--zcx-gap); align-items:start; width:100%; }
.zcx-card { position:relative; min-width:0; aspect-ratio:1.6 / 1; border-radius:12px; overflow:hidden; background:#e9edf3; box-shadow:none; isolation:isolate; }
.zcx-card__link { position:absolute; inset:0; z-index:1; display:block; overflow:hidden; color:#fff!important; text-decoration:none!important; }
.zcx-card__link > img { display:block; width:100%; height:100%; object-fit:cover; object-position:center; transform:scale(1); transition:transform .45s ease; }
.zcx-card__link:hover > img, .zcx-card:focus-within .zcx-card__link > img { transform:scale(1.045); }
.zcx-card__placeholder { display:flex; align-items:center; justify-content:center; height:100%; width:100%; background:linear-gradient(125deg,#073f88,#0b66c3); color:#fff; letter-spacing:.2em; font-weight:700; }
.zcx-card__shade { position:absolute; inset:0; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:12px; padding:24px; background:rgba(7,17,31,.67); color:#fff; text-align:center; opacity:0; transform:translateY(5px); transition:opacity .25s ease,transform .25s ease; pointer-events:none; }
.zcx-card:hover .zcx-card__shade, .zcx-card:focus-within .zcx-card__shade { opacity:1; transform:translateY(0); }
.zcx-card__category { font-size:14px; font-weight:400; color:#e9e9e9; }
.zcx-card__title { font-size:clamp(15px,1.28vw,20px); font-weight:600; line-height:1.65; color:#fff; text-transform:none; }
.zcx-card__gallery { position:absolute; z-index:3; top:12px; right:12px; display:flex!important; align-items:center; justify-content:center; width:39px; height:39px; padding:9px!important; margin:0!important; min-height:0!important; border:0!important; border-radius:6px!important; background:rgba(0,0,0,.32)!important; box-shadow:none!important; color:#fff!important; opacity:0; transform:translateY(-4px); cursor:zoom-in; transition:opacity .23s ease,background .23s ease,transform .23s ease; }
.zcx-card:hover .zcx-card__gallery, .zcx-card:focus-within .zcx-card__gallery { opacity:1; transform:none; }
.zcx-card__gallery:hover { background:rgba(0,0,0,.68)!important; }
.zcx-card__gallery svg { width:19px; height:19px; stroke:currentColor; stroke-width:1.8px; fill:none; stroke-linecap:round; stroke-linejoin:round; }
.zcx-load-area { display:flex; justify-content:center; align-items:center; flex-direction:column; min-height:76px; margin-top:20px; }
.zcx-sentinel { display:block; height:1px; width:100%; pointer-events:none; }
.zcx-load-more { margin:18px auto 0!important; padding:11px 20px!important; border:1px solid var(--zcx-blue)!important; border-radius:5px!important; background:#fff!important; color:var(--zcx-blue)!important; font-size:14px!important; font-weight:600!important; line-height:1.4!important; cursor:pointer; box-shadow:none!important; min-height:0!important; }
.zcx-load-more:hover { background:var(--zcx-blue)!important; color:#fff!important; }
.zcx-load-more span { margin-left:10px; }
.zcx-loading, .zcx-empty { color:#7b8795; text-align:center; font-size:15px; }
.zcx-empty { margin:30px auto; }
.zcx-app [hidden], .zcx-single [hidden] { display:none!important; }
/* Black photographic lightbox, native fullscreen, keyboard navigation */
.zcx-viewer:not([hidden]) { position:fixed; inset:0; z-index:999999; display:flex; align-items:center; justify-content:center; background:#030303; color:#fff; }
.zcx-viewer:fullscreen { background:#000; }
.zcx-viewer__top { position:absolute; z-index:5; inset:0 0 auto; display:flex; align-items:flex-start; justify-content:space-between; padding:10px 18px; pointer-events:none; }
.zcx-viewer__counter { font-size:13px; color:#d6d6d6; line-height:35px; }
.zcx-viewer__actions { display:flex; gap:4px; pointer-events:auto; }
.zcx-viewer__actions button, .zcx-viewer__nav { border:0!important; background:transparent!important; box-shadow:none!important; color:#ddd!important; cursor:pointer; font-family:Arial,sans-serif!important; text-align:center; font-weight:300!important; padding:0!important; min-height:0!important; }
.zcx-viewer__actions button { width:44px; height:41px; font-size:28px!important; line-height:41px!important; }
.zcx-viewer__actions button:hover, .zcx-viewer__nav:hover { color:#fff!important; }
.zcx-viewer__image-wrap { display:flex; align-items:center; justify-content:center; width:min(86vw,1200px); height:calc(100% - 110px); margin:55px auto; }
.zcx-viewer__image { display:block; object-fit:contain; width:auto!important; height:auto!important; max-width:100%!important; max-height:100%!important; border-radius:3px; box-shadow:none!important; }
.zcx-viewer__nav { position:absolute; z-index:5; top:50%; transform:translateY(-50%); width:58px; height:78px; font-size:42px!important; line-height:78px!important; }
.zcx-viewer__prev { left:5px; }
.zcx-viewer__next { right:5px; }
body.zcx-no-scroll { overflow:hidden!important; }
/* Only project-post full-width template; does not change blog posts */
.zcx-single { width:100%; background:#fff; color:#273648; }
.zcx-single__header { padding:64px 24px 65px; background:#0751b5; color:#fff; text-align:center; }
.zcx-single__container { width:100%; max-width:1100px; padding-left:20px; padding-right:20px; margin-left:auto; margin-right:auto; }
.zcx-single__breadcrumb { display:flex; justify-content:center; gap:12px; margin-bottom:34px; font-size:12px; color:#d4e5ff; text-transform:uppercase; }
.zcx-single__breadcrumb a { color:#fff; text-decoration:none; }
.zcx-single__eyebrow { font-size:12px; font-weight:700; letter-spacing:.1em; color:#c3deff; }
.zcx-single__header h1 { margin:12px auto 0; max-width:1000px; color:#fff; line-height:1.23; font-size:clamp(29px,4.5vw,52px); font-weight:600; }
.zcx-single__body { padding-top:50px; padding-bottom:65px; }
.zcx-single__hero-image { margin:0 auto 42px; max-width:100%; text-align:center; }
.zcx-single__hero-image img { width:100%; height:auto; max-height:600px; object-fit:cover; border-radius:10px; }
.zcx-single__content { line-height:1.9; font-size:16px; color:#303b48; overflow-wrap:anywhere; }
.zcx-single__content img { max-width:100%; height:auto; }
.zcx-single__content h2, .zcx-single__content h3, .zcx-single__photos h2 { color:#17365e; line-height:1.35; }
.zcx-single__content h2 { margin:36px 0 16px; font-size:28px; }
.zcx-single__content h3 { margin:24px 0 12px; font-size:22px; }
.zcx-single__content a { color:#0751b5; }
.zcx-single__content .alignwide, .zcx-single__content .alignfull { max-width:100%; width:100%; margin-left:auto; margin-right:auto; }
.zcx-single__content table { width:100%; display:block; overflow-x:auto; }
.zcx-single__photos { padding-top:40px; margin-top:45px; border-top:1px solid #e6edf4; }
.zcx-single__photos h2 { text-align:center; font-size:27px; margin:0 0 25px; }
.zcx-single__photo-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.zcx-single__photo { position:relative; display:block!important; padding:0!important; border:0!important; min-height:0!important; border-radius:9px!important; aspect-ratio:1.55; overflow:hidden; cursor:zoom-in; background:#e8edf4!important; box-shadow:none!important; }
.zcx-single__photo img { width:100%; height:100%; object-fit:cover; transition:transform .2s ease; }
.zcx-single__photo:hover img { transform:scale(1.04); }
.zcx-single__photo span { position:absolute; right:10px; top:10px; background:rgba(0,0,0,.5); color:#fff; padding:4px 8px; border-radius:4px; }
.zcx-single__back { margin:42px 0 0; text-align:center; }
.zcx-single__back a { color:#0751b5; border:1px solid #0751b5; padding:10px 25px; border-radius:6px; text-decoration:none; }
@media (max-width:900px) {
  .zcx-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
  .zcx-tabs { gap:20px; }
  .zcx-card__gallery { opacity:1; transform:none; }
  .zcx-card__shade { opacity:1; transform:none; justify-content:flex-end; background:linear-gradient(transparent 25%,rgba(0,0,0,.72)); gap:3px; padding:16px; }
  .zcx-card__title { font-size:16px; line-height:1.35; }
}
@media (max-width:575px) {
  .zcx-app { padding:22px 0; }
  .zcx-tabs { gap:14px; margin-bottom:20px; }
  .zcx-tab { font-size:11px!important; }
  .zcx-grid { grid-template-columns:1fr; gap:14px; }
  .zcx-card { aspect-ratio:1.65; border-radius:9px; }
  .zcx-viewer__top { padding:6px 8px; }
  .zcx-viewer__image-wrap { width:calc(100vw - 48px); }
  .zcx-viewer__nav { width:29px; font-size:30px!important; }
  .zcx-single__header { padding:45px 4px; }
  .zcx-single__body { padding-top:30px; }
  .zcx-single__photo-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .zcx-single__content { font-size:15px; }
}
@media (prefers-reduced-motion:reduce) {
  .zcx-app *, .zcx-single * { transition:none!important; animation:none!important; scroll-behavior:auto!important; }
}

/* === v1.1.0: Full-width project-page heading and same-category post carousel === */
.zcx-single__container { max-width:1250px; }
.zcx-projects-banner { box-sizing:border-box; width:100vw; max-width:none; position:relative; left:50%; margin-left:-50vw; margin-right:0; background:#0751b5; color:white; padding:70px 20px 68px; text-align:center; clear:both; }
.zcx-projects-banner *, .zcx-related * { box-sizing:border-box; }
.zcx-projects-banner__inner { max-width:1320px; margin:0 auto; }
.zcx-projects-banner h1 { font-family:inherit; font-size:clamp(36px,5vw,76px); font-weight:400; line-height:1.18; max-width:1250px; margin:0 auto 17px; color:#fff; text-transform:none; letter-spacing:0; }
.zcx-projects-banner nav { display:flex; align-items:center; justify-content:center; gap:12px; color:#fff; font-size:12px; font-weight:700; line-height:1.4; }
.zcx-projects-banner nav a { color:#fff!important; text-decoration:none; }
.zcx-projects-banner nav a:hover { text-decoration:underline; }
/* Flatsome may add its default page title; hide that duplicate only on project list page. */
.zcx-project-listing-page main .entry-header > .entry-title,
.zcx-project-listing-page main .page-title-inner > h1 { display:none; }
.zcx-single__body { padding-top:42px; }
.zcx-related { margin-top:65px; border-top:1px solid #e5e5e5; padding-top:50px; width:100%; color:var(--zcx-ink); }
.zcx-related h2 { font-size:24px; font-weight:400; color:#0751b5; margin:0 0 29px; text-transform:none; line-height:1.35; }
.zcx-related__slider { position:relative; width:100%; }
.zcx-related__viewport { overflow-x:auto; overflow-y:hidden; scrollbar-width:none; -ms-overflow-style:none; scroll-snap-type:x mandatory; scroll-behavior:smooth; width:100%; outline-offset:6px; }
.zcx-related__viewport::-webkit-scrollbar { display:none; }
.zcx-related__viewport:focus-visible { outline:2px solid #0751b5; }
.zcx-related__track { display:flex; align-items:stretch; gap:0; width:100%; }
.zcx-related .zcx-card { flex:0 0 33.333333%; border-radius:10px; scroll-snap-align:start; aspect-ratio:1.6 / 1; }
.zcx-related__arrow { position:absolute; z-index:4; top:50%; transform:translateY(-50%); width:42px; height:60px; line-height:56px!important; text-align:center; padding:0!important; margin:0!important; min-height:0!important; border:0!important; border-radius:0!important; background:transparent!important; color:#989da3!important; font-size:40px!important; font-weight:300!important; box-shadow:none!important; cursor:pointer; transition:color .2s ease; }
.zcx-related__arrow:hover { color:#0751b5!important; }
.zcx-related__arrow:disabled { opacity:.25; cursor:not-allowed; }
.zcx-related__prev { left:-51px; }
.zcx-related__next { right:-51px; }
.zcx-related__arrow:focus-visible { outline:2px solid #0751b5; outline-offset:1px; }
/* Move lightbox into document.body to keep floating chat overlays from eclipsing controls. */
body > .zcx-viewer:not([hidden]) { z-index:2147483647!important; }
.zcx-viewer[hidden] { display:none!important; }
.zcx-viewer__next { right:115px!important; }
.zcx-viewer__prev { left:14px!important; }
@media (max-width:1220px) {
  .zcx-related__prev { left:-24px; background:rgba(255,255,255,.9)!important; }
  .zcx-related__next { right:-24px; background:rgba(255,255,255,.9)!important; }
}
@media (max-width:900px) {
  .zcx-related .zcx-card { flex-basis:50%; }
  .zcx-related__prev { left:0; }
  .zcx-related__next { right:0; }
  .zcx-projects-banner { padding:54px 18px; }
}
@media (max-width:575px) {
  .zcx-related { padding-top:35px; margin-top:40px; }
  .zcx-related h2 { font-size:22px; }
  .zcx-related .zcx-card { flex-basis:100%; }
  .zcx-related__arrow { width:36px; font-size:32px!important; }
  .zcx-viewer__next { right:70px!important; }
  .zcx-viewer__prev { left:4px!important; }
  .zcx-projects-banner { padding:45px 16px; }
  .zcx-projects-banner h1 { font-size:clamp(30px,8vw,42px); }
}
@media (prefers-reduced-motion:reduce) {
  .zcx-related__viewport { scroll-behavior:auto!important; }
}
