.portfollow{--portfollow-bg:#fff;--portfollow-text:#161616;--portfollow-muted:#676767;--portfollow-accent:#161616;--portfollow-gap:clamp(1.5rem,3vw,3rem);--portfollow-radius:0;color:var(--portfollow-text);box-sizing:border-box}.portfollow *,.portfollow *::before,.portfollow *::after{box-sizing:inherit}.portfollow a{color:inherit}.portfollow-archive,.portfollow-single{width:min(100% - 2rem,1280px);margin-inline:auto;padding-block:clamp(4rem,10vw,9rem)}.portfollow-archive__header,.portfollow-project__header{max-width:900px;margin-bottom:clamp(3rem,7vw,7rem)}.portfollow-eyebrow{margin:0 0 1rem;color:var(--portfollow-muted);font-size:.75rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.portfollow-archive h1,.portfollow-project__title{margin:0;font-size:clamp(3rem,9vw,8rem);font-weight:500;letter-spacing:-.055em;line-height:.92}.portfollow-project__summary,.portfollow-archive__description{max-width:720px;margin:2rem 0 0;color:var(--portfollow-muted);font-size:clamp(1.1rem,2vw,1.5rem);line-height:1.5}.portfollow-grid{display:grid;grid-template-columns:repeat(var(--portfollow-columns,3),minmax(0,1fr));gap:var(--portfollow-gap)}.portfollow-card{min-width:0;margin:0}.portfollow-card__link{display:block;text-decoration:none}.portfollow-card__media{position:relative;overflow:hidden;aspect-ratio:4/3;background:#ececeb;border-radius:var(--portfollow-radius)}.portfollow-card__image,.portfollow-card__placeholder{display:block;width:100%;height:100%;object-fit:cover;transition:transform .45s ease}.portfollow-card__link:hover .portfollow-card__image,.portfollow-card__link:focus-visible .portfollow-card__image{transform:scale(1.025)}.portfollow-card__link:focus-visible{outline:2px solid var(--portfollow-accent);outline-offset:6px}.portfollow-card__content{padding-top:1.1rem}.portfollow-card__title{margin:0;font-size:clamp(1.25rem,2vw,1.75rem);font-weight:600;letter-spacing:-.025em}.portfollow-card__excerpt{margin:.55rem 0 0;color:var(--portfollow-muted);line-height:1.6}.portfollow-project__hero{margin:0 0 clamp(3rem,8vw,8rem)}.portfollow-project__hero img{display:block;width:100%;height:auto;max-height:85vh;object-fit:cover;border-radius:var(--portfollow-radius)}.portfollow-project__content{max-width:820px;margin:0 auto clamp(4rem,8vw,8rem);font-size:clamp(1.05rem,1.5vw,1.25rem);line-height:1.75}.portfollow-project__content>*:first-child{margin-top:0}.portfollow-details{display:grid;gap:clamp(3rem,7vw,7rem)}.portfollow-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem;margin:0;padding:2rem 0;border-top:1px solid currentColor;border-bottom:1px solid currentColor}.portfollow-fact{margin:0}.portfollow-fact dt{margin-bottom:.6rem;color:var(--portfollow-muted);font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.portfollow-fact dd{margin:0;line-height:1.55}.portfollow-gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--portfollow-gap)}.portfollow-gallery-grid__item{margin:0}.portfollow-gallery-grid img{display:block;width:100%;height:auto;border-radius:var(--portfollow-radius)}.portfollow .nav-links{display:flex;justify-content:center;gap:1rem;margin-top:4rem}.portfollow .page-numbers{padding:.6rem .9rem}.portfollow-empty{grid-column:1/-1}

body.single-portfollow_project #site-header{display:none}

.portfollow-navigation{margin-top:clamp(2rem,4vw,3.5rem);overflow-x:auto;scrollbar-width:thin}.portfollow-navigation__list{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem 1.5rem;margin:0;padding:0;list-style:none}.portfollow-navigation__item{margin:0;padding:0}.portfollow-navigation__link{display:inline-block;padding:.4rem 0;border-bottom:2px solid transparent;color:var(--portfollow-muted);font-size:.85rem;font-weight:650;letter-spacing:.04em;text-decoration:none;transition:color .2s ease,border-color .2s ease}.portfollow-navigation__link:hover,.portfollow-navigation__link:focus-visible{color:var(--portfollow-text);border-color:currentColor}.portfollow-navigation__link:focus-visible{outline:2px solid var(--portfollow-accent);outline-offset:4px}.portfollow-navigation__link.is-current{color:var(--portfollow-text);border-color:var(--portfollow-accent)}.portfollow-navigation__link.is-project-category{color:var(--portfollow-text)}

.portfollow-gallery-shell{min-width:0}.portfollow-gallery-controls{display:flex;justify-content:flex-end;gap:.6rem;margin:0 0 1rem}.portfollow-gallery-control{display:inline-grid;place-items:center;width:2.75rem;height:2.75rem;padding:0;border:1px solid currentColor;border-radius:50%;background:var(--portfollow-bg);color:var(--portfollow-text);font:inherit;font-size:1.2rem;cursor:pointer}.portfollow-gallery-control:hover,.portfollow-gallery-control:focus-visible{background:var(--portfollow-text);color:var(--portfollow-bg)}.portfollow-gallery-control:focus-visible{outline:2px solid var(--portfollow-accent);outline-offset:3px}.portfollow .portfollow-gallery--grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));columns:auto}.portfollow .portfollow-gallery--grid .portfollow-gallery-grid__item{margin:0}.portfollow .portfollow-gallery--masonry{display:block;columns:2;column-gap:var(--portfollow-gap)}.portfollow .portfollow-gallery--masonry .portfollow-gallery-grid__item{break-inside:avoid;margin:0 0 var(--portfollow-gap)}.portfollow .portfollow-gallery--carousel{display:flex;grid-template-columns:none;columns:auto;gap:var(--portfollow-gap);overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:thin}.portfollow .portfollow-gallery--carousel .portfollow-gallery-grid__item{flex:0 0 100%;margin:0;aspect-ratio:var(--portfollow-carousel-ratio,16 / 9);overflow:hidden;scroll-snap-align:start;scroll-snap-stop:always}.portfollow-gallery--carousel img{width:100%;height:100%;object-fit:cover;object-position:center}

/* Editorial Minimal */
.portfollow--editorial{--portfollow-gap:clamp(2rem,4vw,4.5rem)}.portfollow--editorial .portfollow-card:nth-child(3n+2){margin-top:clamp(2rem,6vw,7rem)}

/* Masonry Gallery */
.portfollow--masonry{--portfollow-gap:clamp(.75rem,1.5vw,1.5rem)}.portfollow--masonry .portfollow-grid{align-items:start}.portfollow--masonry .portfollow-card:nth-child(4n+1) .portfollow-card__media{aspect-ratio:3/4}.portfollow--masonry .portfollow-card:nth-child(4n+2) .portfollow-card__media{aspect-ratio:1/1}.portfollow--masonry .portfollow-card:nth-child(4n+3) .portfollow-card__media{aspect-ratio:4/5}.portfollow--masonry .portfollow-gallery-grid{columns:2;display:block}.portfollow--masonry .portfollow-gallery-grid__item{break-inside:avoid;margin:0 0 var(--portfollow-gap)}

/* Split Showcase */
.portfollow--split{--portfollow-gap:clamp(2rem,5vw,6rem)}.portfollow--split .portfollow-grid{grid-template-columns:1fr}.portfollow--split .portfollow-card__link{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);align-items:center;gap:var(--portfollow-gap)}.portfollow--split .portfollow-card:nth-child(even) .portfollow-card__media{order:2}.portfollow--split .portfollow-card__media{aspect-ratio:16/10}.portfollow--split .portfollow-card__title{font-size:clamp(2rem,4vw,4.5rem)}.portfollow--split .portfollow-details{grid-template-columns:minmax(240px,.35fr) minmax(0,.65fr);align-items:start}.portfollow--split .portfollow-facts{grid-template-columns:1fr;position:sticky;top:2rem}.portfollow--split .portfollow-gallery-grid{grid-template-columns:1fr}

/* Case Study */
.portfollow--case-study{--portfollow-radius:12px;--portfollow-accent:#3157d5}.portfollow--case-study .portfollow-card{padding:1rem;border:1px solid #dedede;border-radius:calc(var(--portfollow-radius) + 4px)}.portfollow--case-study .portfollow-facts{padding:2rem;background:#f4f5f7;border:0;border-radius:var(--portfollow-radius)}.portfollow--case-study .portfollow-fact dt{color:var(--portfollow-accent)}

/* Cinematic Dark */
.portfollow--cinematic{--portfollow-bg:#0b0b0c;--portfollow-text:#f5f5f2;--portfollow-muted:#aaa;--portfollow-accent:#fff;--portfollow-gap:clamp(1rem,2vw,2rem);margin-inline:calc(50% - 50vw);width:100vw;max-width:none;padding-inline:max(1rem,calc((100vw - 1280px)/2));padding-block:clamp(4rem,10vw,9rem);background:var(--portfollow-bg);color:var(--portfollow-text)}.portfollow--cinematic .portfollow-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portfollow--cinematic .portfollow-card__media{aspect-ratio:16/10}.portfollow--cinematic .portfollow-card__title{font-size:clamp(1.5rem,3vw,3rem)}.portfollow--cinematic .portfollow-facts{border-color:#444}

@media(max-width:900px){.portfollow-grid{grid-template-columns:repeat(min(2,var(--portfollow-columns,3)),minmax(0,1fr))}.portfollow-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.portfollow--split .portfollow-details{grid-template-columns:1fr}.portfollow--split .portfollow-facts{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.portfollow-grid,.portfollow--cinematic .portfollow-grid{grid-template-columns:1fr}.portfollow--editorial .portfollow-card:nth-child(3n+2){margin-top:0}.portfollow--split .portfollow-card__link{grid-template-columns:1fr;gap:1rem}.portfollow--split .portfollow-card:nth-child(even) .portfollow-card__media{order:0}.portfollow-facts,.portfollow--split .portfollow-facts{grid-template-columns:1fr}.portfollow-gallery-grid,.portfollow .portfollow-gallery--grid{grid-template-columns:1fr}.portfollow--masonry .portfollow-gallery-grid,.portfollow .portfollow-gallery--masonry{columns:1}}
@media(prefers-reduced-motion:reduce){.portfollow-card__image{transition:none}.portfollow .portfollow-gallery--carousel{scroll-behavior:auto}}

/* Shared slideshow controls and predictable slide positioning, including preset overrides. */
.portfollow .portfollow-gallery-grid.portfollow-gallery--carousel{position:relative;display:flex;columns:auto;grid-template-columns:none}
.portfollow .portfollow-gallery--carousel img{object-fit:var(--portfollow-image-fit,cover)}
.portfollow-gallery--carousel:focus-visible{outline:2px solid var(--portfollow-accent);outline-offset:4px}
.portfollow-gallery-controls{flex-wrap:wrap;align-items:center}
.portfollow-slideshow-toggle{border:1px solid currentColor;border-radius:1.5rem;background:var(--portfollow-bg);color:var(--portfollow-text);font:inherit;padding:.55rem 1rem;cursor:pointer;min-height:2.75rem}
.portfollow-slideshow-toggle[hidden]{display:none}
.portfollow-slideshow-toggle:focus-visible{outline:2px solid var(--portfollow-accent);outline-offset:3px}

.portfollow-slideshow.portfollow--cinematic{width:100%;margin-inline:0;padding:clamp(1rem,3vw,2rem)}

/* Optional image viewer; native dialog places it above theme headers and overlays. */
.portfollow .portfollow-gallery-open{display:block;cursor:zoom-in}
.portfollow .portfollow-gallery--carousel .portfollow-gallery-open{width:100%;height:100%}
.portfollow .portfollow-gallery-open:focus-visible{outline:3px solid var(--portfollow-accent);outline-offset:-3px}
dialog.portfollow-lightbox{box-sizing:border-box;position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#101114;color:#fff;overflow:hidden}
dialog.portfollow-lightbox:not([open]){display:none}
dialog.portfollow-lightbox[open]{display:flex;flex-direction:column}
.portfollow-lightbox::backdrop{background:rgba(0,0,0,.94)}
.portfollow-lightbox .portfollow-lightbox__toolbar{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:12px max(16px,env(safe-area-inset-right));padding-top:max(12px,env(safe-area-inset-top));flex-shrink:0}
.portfollow-lightbox__toolbar span{margin-right:auto;font:400 16px/1.4 system-ui,sans-serif}
.portfollow-lightbox .portfollow-lightbox__toolbar button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid #737780;border-radius:50%;background:#22252b;color:#fff;font:400 28px/1 system-ui,sans-serif;cursor:pointer}
.portfollow-lightbox .portfollow-lightbox__toolbar button[hidden]{display:none}
.portfollow-lightbox .portfollow-lightbox__toolbar button:hover{background:#424854}
.portfollow-lightbox .portfollow-lightbox__toolbar button:focus-visible{outline:3px solid #fff;outline-offset:3px}
.portfollow-lightbox .portfollow-lightbox__stage{flex:1;min-height:0;width:100%;display:flex;align-items:center;justify-content:center;padding:8px 16px max(16px,env(safe-area-inset-bottom));box-sizing:border-box}
.portfollow-lightbox .portfollow-lightbox__image{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;object-position:center;border:0;border-radius:0;box-shadow:none}

/* Gallery widget arrow shapes; retain native buttons, hit targets and focus outlines. */
.portfollow-arrows-square .portfollow-gallery-control{border-radius:0}
.portfollow-arrows-rounded .portfollow-gallery-control{border-radius:12px}
.portfollow-arrows-diamond .portfollow-gallery-control{border-radius:0;transform:rotate(45deg);margin:10px}
.portfollow-arrows-diamond .portfollow-gallery-control>span{transform:rotate(-45deg)}
.portfollow-arrows-minimal .portfollow-gallery-control{border:0;border-radius:0;background:transparent!important}
.portfollow-arrows-minimal .portfollow-gallery-control:hover,.portfollow-arrows-minimal .portfollow-gallery-control:focus-visible{color:var(--portfollow-accent)!important}

/* Gallery arrow colors must not create a frame, including theme button states. */
.elementor-widget-portfollow-project-gallery .portfollow .portfollow-gallery-control,.elementor-widget-portfollow-project-gallery .portfollow .portfollow-gallery-control:hover,.elementor-widget-portfollow-project-gallery .portfollow .portfollow-gallery-control:focus,.elementor-widget-portfollow-project-gallery .portfollow .portfollow-gallery-control:active{border:0;box-shadow:none}

.portfollow-video{position:relative;width:100%;aspect-ratio:16/9;background:#000;overflow:hidden}
.portfollow-video iframe,.portfollow-video video{display:block;width:100%;height:100%;border:0;object-fit:contain}
.portfollow-video iframe{min-height:200px}
.portfollow-video:has(iframe){min-height:200px}
