/**
 * Kodak Portfolio — v2.0.0 Reliable Smooth
 */

.kp-portfolio-section{box-sizing:border-box;position:relative}
.kp-portfolio-section *,.kp-portfolio-section *::before,.kp-portfolio-section *::after{box-sizing:border-box}

/* ── Grid ── */
.kp-grid{list-style:none;margin:18px 0 0;position:relative;z-index:1;transition:opacity .35s ease}
.kp-grid.is-switching{opacity:0}
.kp-hero{grid-column:span 2}
@media(max-width:600px){.kp-hero{grid-column:span 1}}
.ak-item.is-hidden{display:none!important}

/* ── Card shadows ── */
.kp-shadow-subtle .ak-card{box-shadow:0 2px 8px rgba(0,0,0,.08)}
.kp-shadow-medium .ak-card{box-shadow:0 4px 16px rgba(0,0,0,.12)}
.kp-shadow-strong .ak-card{box-shadow:0 8px 30px rgba(0,0,0,.18)}

/* ── Card image ── */
.ak-card img.kp-card-img{transition:transform .45s cubic-bezier(.25,.46,.45,.94);will-change:transform}
.ak-card:hover img.kp-card-img{transform:scale(var(--kp-hover-scale,1.04))}

/* ── Dim siblings ── */
.kp-dim-active:hover .ak-item{transition:opacity .35s ease}
.kp-dim-active:hover .ak-item:not(:hover){opacity:var(--kp-dim-opacity,.4)}
.kp-dim-active:hover .ak-item:hover{opacity:1}

/* ── Filter buttons ── */
.ak-filter{
  border:1px solid var(--kp-f-border,#ddd);
  background:var(--kp-f-bg,#fff);
  color:var(--kp-f-color,#111);
  transition:background .3s ease,color .3s ease,border-color .3s ease;
}
.ak-filter.is-active{
  border-color:var(--kp-f-active-border,#111);
  background:var(--kp-f-active-bg,#111);
  color:var(--kp-f-active-color,#fff);
}
.ak-filter:hover:not(.is-active){border-color:var(--kp-f-active-border,#111);background:rgba(0,0,0,.04)}

.kp-filters-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap!important;padding-bottom:4px}
.kp-filters-scroll::-webkit-scrollbar{display:none}
.kp-filters-scroll .ak-filter{flex-shrink:0}
.kp-filter-indicator{position:absolute;bottom:-2px;left:0;height:2px;background:var(--kp-f-active-border,#111);border-radius:1px;transition:left .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1);pointer-events:none}

/* ── Skeleton ── */
.kp-skeleton{position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,#eee 25%,#f5f5f5 50%,#eee 75%);background-size:400% 100%;animation:kp-shimmer 1.8s ease infinite}
@keyframes kp-shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
.kp-skeleton.is-gone{display:none}

/* ── Hover overlay ── */
.kp-hover-overlay{position:absolute;inset:0;opacity:0;transition:opacity .3s ease;pointer-events:none}
.ak-card:hover .kp-hover-overlay{opacity:1}
.kp-hover-dark{background:rgba(0,0,0,var(--kp-overlay-opacity,.3))}
.kp-hover-light{background:rgba(255,255,255,var(--kp-overlay-opacity,.3))}
.kp-hover-gradient{background:linear-gradient(to top,rgba(0,0,0,var(--kp-overlay-opacity,.5)) 0%,transparent 60%)}

/* ── Hover title ── */
.kp-hover-title{position:absolute;bottom:12px;left:12px;right:12px;color:#fff;font:600 13px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif;text-shadow:0 1px 4px rgba(0,0,0,.5);opacity:0;transform:translateY(6px);transition:opacity .3s ease,transform .3s ease;pointer-events:none;z-index:2}
.ak-card:hover .kp-hover-title{opacity:1;transform:translateY(0)}

/* ── Caption ── */
.kp-caption{font:500 12px/1.4 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.03em;color:#333;padding:8px 4px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kp-caption-overlay-bottom{position:absolute;bottom:0;left:0;right:0;padding:10px 12px;background:linear-gradient(to top,rgba(0,0,0,.6),transparent);color:#fff;font:500 12px/1.4 'Helvetica Neue',sans-serif;z-index:2}

/* ── Watermark ── */
.kp-watermark{max-width:30%;max-height:30%;object-fit:contain;z-index:1}
.kp-wm-center{top:50%;left:50%;transform:translate(-50%,-50%)}
.kp-wm-bottom-right{bottom:8px;right:8px}
.kp-wm-bottom-left{bottom:8px;left:8px}
.kp-wm-top-right{top:8px;right:8px}
.kp-wm-top-left{top:8px;left:8px}

/* ── Load More ── */
.kp-load-more{transition:transform .18s ease,box-shadow .18s ease}
.kp-load-more:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(0,0,0,.06)}
.kp-load-more:active{transform:translateY(0);box-shadow:none}

/* ── Focus rings ── */
.ak-card:focus-visible{outline:2px solid rgba(17,17,17,.6);outline-offset:2px}
.ak-filter:focus-visible{outline:2px solid rgba(17,17,17,.4);outline-offset:2px}

/* ══════ LIGHTBOX ══════ */
body.kp-noscroll{overflow:hidden!important}

/* Simple opacity fade — dark overlay fades smoothly */
.kp-lightbox{
  opacity:0;
  transition:opacity .4s ease;
  pointer-events:none;
}
.kp-lightbox.is-open{opacity:1;pointer-events:auto}

/* ── Dual image layers for seamless transitions ── */
.kp-lb-img{
  position:absolute;left:50%;top:50%;
  transform:translate(-50%,-50%) scale(1);
  max-width:100vw;max-height:100vh;
  object-fit:contain;
  will-change:transform,opacity;
}
/* Mobile slide */
.kp-lb-img.kp-slide-transition{transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .2s ease}
/* While dragging: no transition (follow finger) */
.kp-lb-img.kp-dragging{transition:none!important}

/* Chrome: slight delay so it appears after backdrop */
.kp-lightbox .ak-chrome{opacity:0;transition:opacity .3s ease .15s}
.kp-lightbox.is-open .ak-chrome{opacity:1}

.kp-lightbox.is-embed .ak-inner{place-items:center!important;padding-top:0!important}
.kp-lightbox.is-embed .kp-zoom-wrap{height:100vh!important}
.kp-lb-video,.kp-lb-iframe{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;display:none;background:#000}

/* ── Close: forced perfect circle ── */
.kp-lb-close{
  position:absolute!important;top:16px!important;right:16px!important;
  width:40px!important;height:40px!important;
  min-width:40px!important;min-height:40px!important;
  max-width:40px!important;max-height:40px!important;
  padding:0!important;margin:0!important;
  border-radius:50%!important;
  box-sizing:border-box!important;
  appearance:none!important;-webkit-appearance:none!important;
  background:rgba(0,0,0,.5);backdrop-filter:blur(8px);
  color:#fff;border:1px solid rgba(255,255,255,.12);
  cursor:pointer;font:400 22px/1 sans-serif;
  display:flex!important;align-items:center!important;justify-content:center!important;
  transition:background .2s;pointer-events:auto;
}
.kp-lb-close:hover{background:rgba(0,0,0,.75)}

/* ── Arrows: circles, all positioning in CSS ── */
.kp-lb-prev,.kp-lb-next{position:absolute;top:50%}
.kp-lb-prev{left:14px}
.kp-lb-next{right:14px}
.kp-lb-arrow{
  width:44px;height:44px;padding:0;margin:0;
  border-radius:50%;
  background:rgba(0,0,0,.35);backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,.1);
  color:rgba(255,255,255,.8);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .2s,opacity .4s;
  pointer-events:auto;appearance:none;-webkit-appearance:none;
  transform:translateY(-50%);
}
.kp-lb-arrow:hover{background:rgba(0,0,0,.65);color:#fff}
.kp-lb-arrow svg{display:block;flex-shrink:0}
.kp-lightbox.kp-chrome-hidden .kp-lb-arrow,
.kp-lightbox.kp-chrome-hidden .kp-lb-close{opacity:0;pointer-events:none}
@media(max-width:600px){.kp-lb-arrow{width:36px;height:36px}}

/* ── Info bar: simple opacity ── */
.kp-lb-info{opacity:0;transition:opacity .4s ease;pointer-events:none}
.kp-lb-info.is-visible{opacity:1}

/* ── Spinner ── */
.kp-lb-spinner{position:absolute;inset:0;z-index:1;display:grid;place-items:center;pointer-events:none}
.kp-lb-spinner::after{content:'';width:28px;height:28px;border:1.5px solid rgba(255,255,255,.12);border-top-color:rgba(255,255,255,.6);border-radius:50%;animation:kp-spin .8s linear infinite}
@keyframes kp-spin{to{transform:rotate(360deg)}}
.kp-lb-spinner.is-hidden{display:none}

/* ── Filmstrip ── */
.kp-lb-filmstrip{position:absolute;bottom:0;left:0;right:0;z-index:4;height:72px;background:linear-gradient(to top,rgba(0,0,0,.5),transparent);display:flex;align-items:flex-end;justify-content:center;padding-bottom:8px;gap:4px;overflow-x:auto;pointer-events:auto;scrollbar-width:none}
.kp-lb-filmstrip::-webkit-scrollbar{display:none}
.kp-filmstrip-thumb{width:48px;height:48px;border-radius:4px;object-fit:cover;cursor:pointer;opacity:.45;border:2px solid transparent;transition:opacity .2s,border-color .2s;flex-shrink:0}
.kp-filmstrip-thumb:hover{opacity:.8}
.kp-filmstrip-thumb.is-active{opacity:1;border-color:rgba(255,255,255,.8)}

/* ── Gesture dismiss ── */
.kp-lightbox.is-dismissing .ak-inner{transition:transform .3s ease,opacity .3s ease}

/* ── Download protection ── */
.kp-portfolio-section[data-protected] .ak-card img{-webkit-user-drag:none;user-select:none;-webkit-touch-callout:none}

/* ── Entrance animations ── */
.kp-anim-fade .ak-item{opacity:0;transition:opacity var(--kp-anim-dur,400ms) ease}
.kp-anim-fade .ak-item.is-visible{opacity:1}
.kp-anim-fade-up .ak-item{opacity:0;transform:translateY(24px);transition:opacity var(--kp-anim-dur,400ms) ease,transform var(--kp-anim-dur,400ms) ease}
.kp-anim-fade-up .ak-item.is-visible{opacity:1;transform:translateY(0)}
.kp-anim-scale .ak-item{opacity:0;transform:scale(.92);transition:opacity var(--kp-anim-dur,400ms) ease,transform var(--kp-anim-dur,400ms) ease}
.kp-anim-scale .ak-item.is-visible{opacity:1;transform:scale(1)}
.kp-reveal-clip-left .ak-item{clip-path:inset(0 100% 0 0);transition:clip-path var(--kp-anim-dur,600ms) cubic-bezier(.4,0,.2,1)}
.kp-reveal-clip-left .ak-item.is-visible{clip-path:inset(0)}
.kp-reveal-clip-up .ak-item{clip-path:inset(100% 0 0 0);transition:clip-path var(--kp-anim-dur,600ms) cubic-bezier(.4,0,.2,1)}
.kp-reveal-clip-up .ak-item.is-visible{clip-path:inset(0)}
.kp-reveal-clip-diagonal .ak-item{clip-path:polygon(0 0,0 0,0 100%,0 100%);transition:clip-path var(--kp-anim-dur,800ms) cubic-bezier(.4,0,.2,1)}
.kp-reveal-clip-diagonal .ak-item.is-visible{clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}

/* ── Masonry ── */
.kp-grid.kp-masonry{display:block!important;column-count:var(--kp-cols-d,3);column-gap:var(--kp-gap,1px)}
.kp-masonry .ak-item{break-inside:avoid;margin-bottom:var(--kp-gap,1px);display:block}
.kp-masonry .ak-card{aspect-ratio:auto!important}

/* ── Reduced motion ── */
@media(prefers-reduced-motion:reduce){
.kp-grid,.ak-card img,.kp-hover-overlay,.kp-hover-title,.kp-lightbox,.kp-lb-img,
.kp-lightbox .ak-chrome,.kp-lb-info,.ak-filter,.kp-load-more,
.kp-anim-fade .ak-item,.kp-anim-fade-up .ak-item,.kp-anim-scale .ak-item,
.kp-reveal-clip-left .ak-item,.kp-reveal-clip-up .ak-item,.kp-reveal-clip-diagonal .ak-item
{transition:none!important}
.ak-card:hover img{transform:none!important}
}

/* ── Responsive ── */
@media(max-width:900px){
  .kp-portfolio-section{padding:50px 0 50px!important}
  .kp-portfolio-section .kp-container{max-width:none!important;margin:0!important}
  .kp-grid{grid-template-columns:repeat(var(--kp-cols-t,2),1fr)!important}
  .kp-grid.kp-masonry{column-count:var(--kp-cols-t,2)!important}
}
@media(max-width:600px){
  .kp-grid{grid-template-columns:repeat(var(--kp-cols-m,1),1fr)!important}
  .kp-grid.kp-masonry{column-count:var(--kp-cols-m,1)!important}
}
@media(min-width:901px){.kp-grid{grid-template-columns:repeat(var(--kp-cols-d,3),1fr)}}

.kp-empty{padding:40px;text-align:center;color:#666;font:15px/1.6 sans-serif}
.kp-empty a{color:#0073aa;text-decoration:underline}

/* ── Floating "Show Less" pill ── */
.kp-float-collapse{
  position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);
  z-index:999;
  opacity:0;pointer-events:none;
  transition:opacity .3s ease,transform .3s ease;
}
.kp-float-collapse.is-visible{
  opacity:1;pointer-events:auto;
  transform:translateX(-50%) translateY(0);
}
.kp-float-btn{
  appearance:none;-webkit-appearance:none;
  padding:10px 20px;
  border-radius:999px;
  background:rgba(17,17,17,.9);
  color:#fff;
  border:1px solid rgba(255,255,255,.12);
  cursor:pointer;
  font:600 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
  backdrop-filter:blur(8px);
  box-shadow:0 4px 20px rgba(0,0,0,.25);
  transition:background .2s,transform .15s;
}
.kp-float-btn:hover{background:rgba(17,17,17,1);transform:scale(1.04)}
.kp-float-btn:active{transform:scale(.97)}
