/* Camcastic video portfolio (grid, filters, lightbox). */
.cc-portfolio,.cc-featured{padding:110px 40px 40px;max-width:1440px;margin:0 auto;box-sizing:border-box}
.cc-featured{padding-bottom:0}
.cc-portfolio .cc-section-head,.cc-featured .cc-section-head{margin-bottom:44px}
.cc-pf-filters{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0 0 34px}
.cc-pf-filter{font-family:var(--wp--preset--font-family--inconsolata,monospace);font-size:13px;letter-spacing:.18em;text-transform:uppercase;background:transparent;color:#0A0A0A;border:1px solid #0A0A0A;border-radius:0;padding:11px 18px;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.cc-pf-filter:hover{border-color:#5E2750;color:#5E2750}
.cc-pf-filter[aria-pressed="true"]{background:#5E2750;border-color:#5E2750;color:#FAF8F7}
.cc-pf-filter:focus-visible,.cc-pf-tile:focus-visible,.cc-pf-lb button:focus-visible{outline:2px solid #5E2750;outline-offset:3px}
.cc-pf-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.cc-pf--featured .cc-pf-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.cc-pf-item{margin:0;min-width:0}
.cc-pf-item[hidden]{display:none}
.cc-pf-tile{all:unset;box-sizing:border-box;position:relative;display:block;width:100%;aspect-ratio:9/16;overflow:hidden;background:#111011;cursor:pointer}
.cc-pf-tile picture,.cc-pf-tile img{display:block;width:100%;height:100%}
.cc-pf-tile img{object-fit:cover;transition:transform 1.2s ease,opacity .4s}
.cc-pf-tile:hover img{transform:scale(1.04);opacity:.88}
.cc-pf-tile:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,10,0) 55%,rgba(10,10,10,.72) 100%);pointer-events:none}
.cc-pf-play{position:absolute;z-index:2;left:50%;top:50%;width:54px;height:54px;margin:-27px 0 0 -27px;border:1px solid rgba(250,248,247,.85);border-radius:50%;background:rgba(10,10,10,.25);transition:background .2s}
.cc-pf-play:before{content:"";position:absolute;left:50%;top:50%;transform:translate(-35%,-50%);border-left:14px solid #FAF8F7;border-top:9px solid transparent;border-bottom:9px solid transparent}
.cc-pf-tile:hover .cc-pf-play{background:#5E2750;border-color:#5E2750}
.cc-pf-meta{position:absolute;z-index:2;left:16px;right:16px;bottom:16px;color:#FAF8F7;display:flex;flex-direction:column;gap:6px}
.cc-pf-cat{font-family:var(--wp--preset--font-family--inconsolata,monospace);font-size:11px;letter-spacing:.2em;text-transform:uppercase;opacity:.8}
.cc-pf-title{font-family:var(--wp--preset--font-family--italiana,serif);font-size:24px;line-height:1.05;text-transform:uppercase}
.cc-featured .cc-more,.cc-portfolio .cc-more{justify-content:center;margin-top:34px}
/* Lightbox */
.cc-pf-lb{border:0;padding:0;margin:0;max-width:none;max-height:none;width:100vw;height:100vh;height:100dvh;background:rgba(10,10,10,.94);color:#FAF8F7;overflow:hidden}
.cc-pf-lb::backdrop{background:rgba(10,10,10,.94)}
.cc-pf-lb[open]{display:flex;align-items:center;justify-content:center}
.cc-pf-lb-stage{display:flex;flex-direction:column;align-items:center;gap:14px;max-width:calc(100vw - 160px)}
.cc-pf-lb video{display:block;max-width:calc(100vw - 160px);max-height:calc(100dvh - 120px);width:auto;height:auto;background:#000;aspect-ratio:var(--cc-ar,9/16)}
.cc-pf-lb-cap{font-family:var(--wp--preset--font-family--inconsolata,monospace);font-size:13px;letter-spacing:.18em;text-transform:uppercase;text-align:center;margin:0}
.cc-pf-lb button{all:unset;box-sizing:border-box;position:absolute;display:flex;align-items:center;justify-content:center;width:52px;height:52px;cursor:pointer;color:#FAF8F7;border:1px solid rgba(250,248,247,.4);border-radius:50%;font-size:22px;line-height:1;background:rgba(10,10,10,.4)}
.cc-pf-lb button:hover{background:#5E2750;border-color:#5E2750}
.cc-pf-lb .cc-pf-lb-close{top:20px;right:20px}
.cc-pf-lb .cc-pf-lb-prev{left:24px;top:50%;margin-top:-26px}
.cc-pf-lb .cc-pf-lb-next{right:24px;top:50%;margin-top:-26px}
html.cc-pf-lock{overflow:hidden}
@media (max-width:1100px){.cc-pf-grid,.cc-pf--featured .cc-pf-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){
  .cc-portfolio,.cc-featured{padding:80px 16px 24px}
  .cc-pf-grid,.cc-pf--featured .cc-pf-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .cc-pf-filters{gap:6px;margin-bottom:22px}.cc-pf-filter{font-size:11px;padding:9px 11px;letter-spacing:.12em}
  .cc-pf-meta{left:10px;right:10px;bottom:10px;gap:3px}.cc-pf-title{font-size:17px}.cc-pf-cat{font-size:9px}
  .cc-pf-play{width:42px;height:42px;margin:-21px 0 0 -21px}
  .cc-pf-lb-stage,.cc-pf-lb video{max-width:100vw}.cc-pf-lb video{max-height:calc(100dvh - 140px)}
  .cc-pf-lb .cc-pf-lb-prev,.cc-pf-lb .cc-pf-lb-next{top:auto;bottom:16px;margin-top:0}.cc-pf-lb .cc-pf-lb-prev{left:calc(50% - 64px)}.cc-pf-lb .cc-pf-lb-next{right:calc(50% - 64px)}
  .cc-pf-lb .cc-pf-lb-close{top:12px;right:12px}.cc-pf-lb-stage{margin-bottom:60px}
}
@media (prefers-reduced-motion:reduce){.cc-pf-tile img{transition:none}.cc-pf-tile:hover img{transform:none}}
.cc-pf-lb button[hidden]{display:none}
.cc-pf-status.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* Close button lives in a reserved top band ABOVE the video so it never covers native controls (iOS mute/audio). */
.cc-pf-lb{box-sizing:border-box;--cc-lb-top:calc(env(safe-area-inset-top,0px) + 20px);padding-top:calc(var(--cc-lb-top) + 52px + 16px)}
.cc-pf-lb .cc-pf-lb-close{top:var(--cc-lb-top);right:calc(env(safe-area-inset-right,0px) + 20px);z-index:2}
.cc-pf-lb video{max-height:calc(100dvh - 120px - 88px - env(safe-area-inset-top,0px))}
@media (max-width:760px){
  .cc-pf-lb{--cc-lb-top:calc(env(safe-area-inset-top,0px) + 12px);padding-top:calc(var(--cc-lb-top) + 44px + 12px);padding-bottom:env(safe-area-inset-bottom,0px)}
  .cc-pf-lb .cc-pf-lb-close{width:44px;height:44px;font-size:20px;right:calc(env(safe-area-inset-right,0px) + 12px)}
  .cc-pf-lb .cc-pf-lb-prev,.cc-pf-lb .cc-pf-lb-next{bottom:calc(env(safe-area-inset-bottom,0px) + 16px)}
  .cc-pf-lb video{max-height:calc(100dvh - 140px - 68px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}
}
