.pf-gallery { color:var(--text,inherit); --pf-gallery-gap:30px; --pf-gallery-line:var(--line,#8884); --pf-gallery-muted:color-mix(in srgb,var(--muted,currentColor) 80%,var(--text,currentColor)); }
/* Give Elementor a definite width when calculating wrapped flex item heights. */
.elementor-widget-portfolio-projects,.elementor-widget-portfolio-articles { width:100%; min-width:0; }
.pf-gallery .pf-gallery-header { display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:12px 22px; padding-bottom:22px; border-bottom:1px solid var(--pf-gallery-line); }
.pf-gallery .pf-gallery-header h2 { margin:8px 0 0; font-size:22px; letter-spacing:-.04em; line-height:1.2; }
.pf-gallery .pf-gallery-header h2:first-letter { color:var(--accent-text,var(--accent,#416dde)); }
.pf-gallery .pf-gallery-filters { display:flex; flex:1 1 260px; flex-wrap:wrap; justify-content:flex-end; gap:4px 12px; }
.pf-gallery .pf-gallery-header--filters .pf-gallery-filters { justify-content:flex-start; }
.pf-gallery .pf-gallery-filters a { display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:8px 16px; font-size:12px; font-weight:600; line-height:1.4; color:inherit; text-decoration:none; border:1px solid var(--pf-gallery-line); border-radius:999px; background:color-mix(in srgb,var(--panel-soft,transparent) 65%,transparent); transition:background-color .2s ease,color .2s ease,border-color .2s ease; }
.pf-gallery .pf-gallery-filters a:hover { color:var(--accent-text,var(--accent,#416dde)); border-color:currentColor; }
.pf-gallery .pf-gallery-filters a[aria-current] { color:var(--accent-ink,#101725); background:var(--accent,#6495ff); border-color:transparent; box-shadow:0 5px 18px -8px var(--accent,#6495ff); }
.pf-gallery .pf-gallery-status { margin:12px 0 20px; color:var(--pf-gallery-muted); font-size:12px; }
/* Fit one or two columns to the actual widget width without size containment,
   which can inflate Elementor flex items' intrinsic heights on mobile. */
.pf-gallery .pf-gallery-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,max(220px,calc((100% - var(--pf-gallery-gap))/2))),1fr)); gap:var(--pf-gallery-gap); align-items:start; overflow-anchor:none; transition:opacity .18s ease; }
.pf-gallery[aria-busy=true] .pf-gallery-grid { opacity:.45; }
.pf-gallery .pf-gallery-card { min-width:0; border:1px solid color-mix(in srgb,var(--accent,#6495ff) 18%,var(--pf-gallery-line)); border-radius:22px; background:linear-gradient(145deg,color-mix(in srgb,var(--accent,#6495ff) 9%,var(--panel-soft,#202633)),var(--panel-soft,#202633) 70%); padding:10px; overflow:hidden; box-shadow:0 8px 24px -14px #0005,inset 0 1px 0 #ffffff0b; animation:pf-gallery-enter .36s backwards; animation-delay:calc(var(--pf-card-order,0)*30ms); transition:transform .25s,border-color .25s,box-shadow .25s; }
.pf-gallery a.pf-gallery-link { height:100%; display:flex; flex-direction:column; color:inherit; text-decoration:none; border-radius:12px; }
.pf-gallery .pf-gallery-image { position:relative; overflow:hidden; border-radius:14px; aspect-ratio:16/10; background:radial-gradient(ellipse at 20% 10%,color-mix(in srgb,var(--accent,#6495ff) 38%,transparent),transparent 70%),linear-gradient(135deg,var(--panel-soft,#202633),var(--panel,#181d26)); }
.pf-gallery .pf-gallery-image img { display:block; width:100%; height:100%; object-fit:cover; transition:transform .5s cubic-bezier(.22,1,.36,1),filter .4s; }
/* Keep the thumbnail zoom smooth when Elementor's global reset is loaded. */
.pf-fx-scope:not([data-motion="off"]) .pf-gallery .pf-gallery-image img { transition-duration:.5s,.4s!important; }
.pf-gallery .pf-gallery-placeholder { display:grid; place-items:center; height:100%; font-size:64px; font-weight:500; color:var(--accent-text,var(--accent,#416dde)); }
.pf-gallery .pf-gallery-image-open { position:absolute; inset:0; display:grid; place-items:center; font-size:42px; color:white; background:linear-gradient(180deg,#0000,#0006); opacity:0; transition:opacity .25s; }
.pf-gallery .pf-gallery-placeholder + .pf-gallery-image-open { display:none; }
.pf-gallery .pf-gallery-caption { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 9px 9px; flex:1; }
.pf-gallery .pf-gallery-caption>div { min-width:0; flex:1; }
/* Reserve the same text rows even for a single result, long names or cards without a date. */
.pf-gallery p.pf-gallery-categories { margin:0 0 5px; height:3.2em; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; font-size:10px; line-height:1.6; text-transform:uppercase; letter-spacing:.06em; color:var(--pf-gallery-muted); overflow-wrap:anywhere; }
.pf-gallery .pf-gallery-caption h3 { margin:0; height:2.9em; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; font-size:17px; font-weight:650; letter-spacing:-.025em; line-height:1.45; overflow-wrap:anywhere; }
.pf-gallery .pf-gallery-meta { display:block; height:1.6em; margin-top:8px; color:var(--pf-gallery-muted); font-size:11px; line-height:1.6; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pf-gallery .pf-gallery-arrow { display:grid; place-items:center; width:44px; height:44px; flex:0 0 44px; font-size:23px; color:var(--accent-text,var(--accent,#416dde)); border:1px solid color-mix(in srgb,var(--accent,#6495ff) 30%,var(--pf-gallery-line)); background:color-mix(in srgb,var(--accent,#6495ff) 10%,transparent); border-radius:15px; transition:background .25s,color .25s,transform .25s; }
.pf-gallery .pf-gallery-link:focus-visible,.pf-gallery .pf-gallery-filters a:focus-visible,.pf-gallery .pf-gallery-pagination a:focus-visible { outline:2px solid var(--accent-text,var(--accent,#416dde)); outline-offset:3px; }
.pf-gallery .pf-gallery-link:focus-visible .pf-gallery-arrow { color:var(--accent-text,var(--accent,#416dde)); }
.pf-gallery .pf-gallery-empty { padding:30px 20px; border:1px dashed var(--pf-gallery-line); border-radius:16px; color:var(--pf-gallery-muted); }
.pf-gallery .pf-gallery-pagination { display:flex; justify-content:center; flex-wrap:wrap; gap:8px; margin-top:28px; }
.pf-gallery .pf-gallery-pagination .page-numbers { min-width:44px; min-height:44px; display:grid; place-items:center; padding:8px 12px; border:1px solid var(--pf-gallery-line); border-radius:10px; font-size:13px; color:inherit; text-decoration:none; }
.pf-gallery .pf-gallery-pagination .current { color:var(--accent-text,var(--accent,#416dde)); border-color:currentColor; }
@media(hover:hover) and (pointer:fine) {
  .pf-gallery .pf-gallery-card:hover { border-color:var(--accent-text,var(--accent,#416dde)); box-shadow:0 16px 34px -18px color-mix(in srgb,var(--accent,#6495ff) 45%,#0005); }
  /* In the portfolio the rise is marked by effects.js, so a card does not shake under a pointer on its edge. */
  .pf-gallery .pf-gallery-card[data-fx-lifted],.pf-gallery:not(.pf-fx-scope .pf-gallery) .pf-gallery-card:hover { transform:translateY(-4px); }
  .pf-gallery .pf-gallery-link:hover img { transform:scale(1.045); }
  .pf-gallery .pf-gallery-link:hover .pf-gallery-image-open { opacity:1; }
  .pf-gallery .pf-gallery-link:hover h3,.pf-gallery .pf-gallery-link:hover .pf-gallery-arrow { color:var(--accent-text,var(--accent,#416dde)); }
  .pf-gallery .pf-gallery-link:hover .pf-gallery-arrow { transform:translate(2px,-2px); }
}
@media(max-width:640px) {
  .pf-gallery { --pf-gallery-gap:18px; }
  .pf-gallery .pf-gallery-caption { padding:14px 3px 6px; gap:8px; }
  .pf-gallery .pf-gallery-header { flex-direction:column; gap:10px; }
  .pf-gallery .pf-gallery-filters { flex-basis:auto; justify-content:flex-start; }
  .pf-gallery .pf-gallery-caption h3 { font-size:15px; }
}
@keyframes pf-gallery-enter { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:none; } }
[data-motion=off] .pf-gallery *,[data-motion=off] .pf-gallery *:before { animation:none!important; transition:none!important; transform:none!important; }
