/* Project portfolio. Uses the existing photos, filters, and native image dialog. */
.portfolio-masthead { padding-top:clamp(38px,6vw,82px); }
.portfolio-register { display:flex;align-items:center;justify-content:space-between;gap:24px;padding-bottom:20px;border-bottom:1px solid #3b443e; }
.portfolio-register .eyebrow { margin:0;color:#d4b17a; }
.portfolio-register > span { color:#b6bbb5;font-size:.71rem;letter-spacing:.13em;text-transform:uppercase; }
.portfolio-heading { display:grid;grid-template-columns:1.6fr 1fr;align-items:end;gap:clamp(24px,5vw,80px);padding:38px 0 48px; }
.portfolio-heading h1 { margin:0;font-family:"Outfit",sans-serif;font-size:clamp(3.5rem,7.5vw,7rem);font-weight:600;line-height:.98;letter-spacing:-.065em;color:#f2f0e8; }
.portfolio-heading h1 span { display:block;color:#d4b17a; }
.portfolio-intro { max-width:360px;justify-self:end;padding-bottom:7px; }
.portfolio-intro p { margin:0 0 24px;color:#b6bbb5;line-height:1.75;font-size:1rem; }
.portfolio-intro .text-link { color:#f2f0e8;font-size:.86rem; }
.portfolio-intro .text-link .icon-arrow { margin-left:18px;color:#d4b17a; }
.portfolio-feature { position:relative;display:block;width:100%;height:clamp(360px,40vw,550px);padding:0;border:1px solid #566055;border-radius:0;overflow:hidden;isolation:isolate;background:#191f1c;text-align:left;cursor:pointer; }
.portfolio-feature > img { display:block;width:100%;height:100%;object-fit:cover;object-position:50% 54%;transition:transform 700ms cubic-bezier(.2,.65,.3,1); }
.portfolio-feature::after { content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(10,15,12,.9));pointer-events:none; }
.portfolio-feature::before { content:"";position:absolute;z-index:2;top:20px;left:20px;width:32px;height:32px;border-top:1px solid #f2f0e8;border-left:1px solid #f2f0e8;pointer-events:none; }
.portfolio-feature-caption { position:absolute;z-index:1;left:clamp(24px,4vw,52px);bottom:clamp(24px,4vw,44px);max-width:70%;color:#f2f0e8; }
.portfolio-feature-label { display:block;font-size:.71rem;letter-spacing:.14em;text-transform:uppercase;color:#e4c698;margin-bottom:10px; }
.portfolio-feature-title { font-size:clamp(1.5rem,3vw,2.7rem);font-weight:500;line-height:1.1;letter-spacing:-.035em; }
.portfolio-feature-open { position:absolute;z-index:1;right:clamp(24px,4vw,52px);bottom:clamp(24px,4vw,44px);display:flex;align-items:center;gap:18px;color:#f2f0e8;font-size:.78rem; }
.portfolio-feature-open > span { display:grid;place-items:center;width:48px;height:48px;border:1px solid rgba(242,240,232,.65);font-size:1.8rem;font-weight:300; }
.portfolio-collection { scroll-margin-top:100px; }
.portfolio-collection-heading { display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:32px; }
.portfolio-collection-heading .eyebrow { margin:0 0 14px; }
.portfolio-collection-heading h2 { margin:0;max-width:17ch;font-size:clamp(2rem,3.3vw,3.25rem);letter-spacing:-.04em; }
.portfolio-collection-heading > p { margin:0 0 5px;color:#b6bbb5;font-size:.9rem; }
.page-gallery .gallery-filters { display:flex;flex-wrap:wrap;gap:0;margin:0;padding:0;border-top:1px solid #3b443e;border-bottom:1px solid #3b443e; }
.page-gallery .filter-button { position:relative;min-height:52px;padding:14px 23px;border:0;border-radius:0;background:transparent;color:#b6bbb5;font-size:.74rem;font-weight:500;letter-spacing:.07em;transition:background-color 160ms,color 160ms; }
.page-gallery .filter-button.is-active { background:#d4b17a;color:#111514; }
.page-gallery .filter-button:hover { background:#29312a;color:#f2f0e8; }
.page-gallery .filter-button.is-active:hover { background:#e2c59b;color:#111514; }
.page-gallery .gallery-result-count { margin:18px 0 28px;color:#b6bbb5;font-size:.76rem;letter-spacing:.04em; }
.page-gallery .gallery-wall { display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:28px;row-gap:44px;align-items:start; }
.page-gallery .gallery-card,.page-gallery .gallery-card.large { display:block;grid-column:span 6;max-width:none;width:100%;min-width:0;padding:0;border:0;border-radius:0;background:transparent;color:#f2f0e8;transform:none;text-align:left; }
.page-gallery .gallery-card:nth-child(6n+1) { grid-column:span 8; }
.page-gallery .gallery-card:nth-child(6n+2) { grid-column:span 4; }
.page-gallery .gallery-card:nth-child(6n+3) { grid-column:span 5; }
.page-gallery .gallery-card:nth-child(6n+4) { grid-column:span 7; }
.portfolio-collection:has(.filter-button:not([data-filter="all"]).is-active) .gallery-card { grid-column:span 6; }
.page-gallery .gallery-card-inner { display:block;height:auto;overflow:hidden;border-radius:0; }
.page-gallery .gallery-card-inner::after { display:none; }
.page-gallery .gallery-card img { display:block;width:100%;height:clamp(250px,28vw,390px);min-height:0;border:0;border-radius:0;box-shadow:none;object-fit:cover;transition:transform 700ms cubic-bezier(.2,.65,.3,1),filter 300ms; }
.page-gallery .gallery-caption { position:relative;inset:auto;display:grid;grid-template-columns:28px minmax(0,1fr);gap:16px;min-height:118px;margin:0;padding:20px 0 12px;border:0;border-bottom:1px solid #3b443e;border-radius:0;background:#111514;color:#f2f0e8;backdrop-filter:none; }
.page-gallery .gallery-caption::after { content:"+";position:absolute;right:0;top:19px;width:24px;height:24px;color:#d4b17a;font-size:1.2rem;line-height:1;text-align:center; }
.page-gallery .gallery-meta { padding-right:32px; }
.page-gallery .project-number { padding-top:4px;color:#d4b17a;font-size:.69rem;font-weight:500;letter-spacing:.08em; }
.page-gallery .gallery-caption h3 { margin:0 0 7px;color:#f2f0e8;font-size:clamp(1.08rem,1.5vw,1.42rem);line-height:1.23;font-weight:500;letter-spacing:-.02em; }
.page-gallery .gallery-caption p { margin:0;max-width:54ch;color:#b6bbb5;font-size:.88rem;line-height:1.55; }
.page-gallery .portfolio-closing { position:relative;isolation:isolate;display:grid;grid-template-columns:1.5fr 1fr;gap:50px;align-items:end;margin-top:80px;padding:clamp(28px,5vw,70px);overflow:hidden;border:1px solid #566055;border-radius:0;background:#191f1c; }
.portfolio-closing::after { content:"";position:absolute;right:-70px;top:-40px;z-index:-1;width:330px;height:330px;border:1px solid rgba(143,174,147,.17);background:repeating-linear-gradient(90deg,transparent 0 31px,rgba(143,174,147,.09) 31px 32px),repeating-linear-gradient(0deg,transparent 0 31px,rgba(143,174,147,.09) 31px 32px);transform:rotate(-25deg);pointer-events:none; }
.portfolio-closing h2 { margin:0 0 24px;max-width:18ch;font-size:clamp(2.2rem,4.2vw,4.25rem);letter-spacing:-.05em; }
.portfolio-closing p:not(.eyebrow) { max-width:46ch;margin:0;color:#b6bbb5; }
.portfolio-closing .cta-actions { display:flex;flex-direction:column;align-items:stretch;justify-self:end;width:min(100%,280px); }
.page-gallery .lightbox { border:1px solid #566055;border-radius:0;background:#191f1c;color:#f2f0e8; }
.page-gallery .lightbox img { border-radius:0; }
.page-gallery .lightbox-close { border-radius:0;background:#d4b17a;color:#111514; }
.page-gallery #lightbox-title { color:#f2f0e8; }
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  .portfolio-feature:hover > img { transform:scale(1.025); }
  .page-gallery .gallery-card:hover img { transform:scale(1.025);filter:brightness(1.06); }
}
@media (max-width:1000px) {
  .portfolio-heading { grid-template-columns:1.3fr 1fr;gap:28px; }
  .portfolio-heading h1 { font-size:clamp(3.5rem,8vw,5.5rem); }
  .page-gallery .gallery-wall { gap:32px 22px; }
  .page-gallery .gallery-card:nth-child(n) { grid-column:span 6; }
  .page-gallery .gallery-card img { height:290px; }
  .page-gallery .portfolio-closing { gap:32px; }
}
@media (max-width:700px) {
  .portfolio-register { align-items:start;gap:16px; }
  .portfolio-register > span { display:none; }
  .portfolio-heading { grid-template-columns:1fr;padding:30px 0;gap:22px; }
  .portfolio-heading h1 { font-size:clamp(3.4rem,11.5vw,5rem);letter-spacing:-.055em; }
  .portfolio-intro { max-width:46ch;justify-self:start;padding:0; }
  .portfolio-intro p { margin-bottom:16px;font-size:.94rem; }
  .portfolio-feature { height:380px; }
  .portfolio-feature > img { object-position:51% 50%; }
  .portfolio-feature-caption { left:22px;bottom:26px;max-width:70%; }
  .portfolio-feature-title { font-size:1.6rem; }
  .portfolio-feature-label { max-width:22ch;font-size:.64rem; }
  .portfolio-feature-open { right:20px;bottom:24px;font-size:0;gap:0; }
  .portfolio-feature-open > span { width:44px;height:44px; }
  .portfolio-collection-heading { display:block;margin-bottom:24px; }
  .portfolio-collection-heading > p { margin-top:16px; }
  .page-gallery .filter-button { flex:1 1 auto;padding:14px 15px;min-height:48px;font-size:.69rem; }
  .page-gallery .gallery-wall { gap:28px 18px; }
  .page-gallery .gallery-card img { height:240px; }
  .page-gallery .gallery-caption { gap:10px;grid-template-columns:20px minmax(0,1fr);padding-top:17px; }
  .page-gallery .gallery-meta { padding-right:14px; }
  .page-gallery .gallery-caption::after { right:-3px;top:17px;width:18px; }
  .page-gallery .portfolio-closing { grid-template-columns:1fr;margin-top:52px;gap:28px; }
  .portfolio-closing .cta-actions { justify-self:start;width:100%; }
}
@media (max-width:540px) {
  .page-gallery .gallery-wall { grid-template-columns:minmax(0,1fr);row-gap:28px; }
  .page-gallery .gallery-card:nth-child(n),.portfolio-collection:has(.filter-button:not([data-filter="all"]).is-active) .gallery-card { grid-column:1; }
  .page-gallery .gallery-card img { height:auto;aspect-ratio:4 / 3; }
  .page-gallery .gallery-caption { min-height:0;padding-bottom:22px; }
}
@media (prefers-reduced-motion:reduce) {
  .portfolio-feature > img,.page-gallery .gallery-card img,.page-gallery .filter-button { transition:none; }
}
