.portfolio-hero {
  padding: clamp(5rem, 9vw, 9rem) 0 clamp(4rem, 7vw, 7rem);
  border-bottom: 1px solid rgba(38, 36, 33, 0.2);
}

.portfolio-hero h1 {
  margin: 1.25rem 0 0;
}

.portfolio-hero h1 span { color: var(--dark-red); }

.portfolio-section { padding: clamp(4rem, 7vw, 7rem) 0; }

.portfolio-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 2rem;
  margin-bottom: 1rem;
}

.portfolio-filters { display: flex; flex-wrap: wrap; gap: .65rem; }

.portfolio-filter {
  padding: .7rem 1.1rem;
  border: 1px solid var(--charcoal);
  border-radius: 0;
  background: transparent;
  color: var(--charcoal);
  font-weight: 700;
  transition: .2s ease;
}

.portfolio-filter:hover,
.portfolio-filter:focus-visible,
.portfolio-filter.active { background: var(--dark-red); border-color: var(--dark-red); color: var(--ivory); }

.portfolio-sort { width: min(220px, 100%); }
.portfolio-sort label { display: block; margin-bottom: .5rem; font-size: .75rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.portfolio-sort .form-select { border-radius: 0; border-color: var(--charcoal); background-color: transparent; }
.portfolio-count { margin: 0 0 2rem; color: #6b6259; font-size: .9rem; }

.portfolio-card { height: 100%; }
.portfolio-card-button { display: block; width: 100%; padding: 0; border: 0; background: transparent; color: inherit; text-align: left; }
.portfolio-thumb { position: relative; overflow: hidden; aspect-ratio: 4 / 3; background: var(--parchment); }
.portfolio-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease; }
.portfolio-card-button:hover .portfolio-thumb img,
.portfolio-card-button:focus-visible .portfolio-thumb img { transform: scale(1.035); }
.portfolio-card-button:focus-visible { outline: 3px solid var(--elimblue); outline-offset: 4px; }
.portfolio-badge { position: absolute; top: 1rem; right: 1rem; padding: .42rem .62rem; color: #fff; background: rgba(24,24,24,.86); font-size: .7rem; font-weight: 700; letter-spacing: .08em; }
.portfolio-card-copy { padding: 1.15rem 0 1.5rem; border-bottom: 1px solid rgba(38, 36, 33, .25); }
.portfolio-card-meta { margin: 0 0 .4rem; color: var(--dark-red); font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.portfolio-card h3 { margin: 0; font-size: clamp(1.25rem, 2vw, 1.65rem); font-weight: 600; }
.portfolio-description { margin: .6rem 0 0; color: #625b53; font-size: .92rem; line-height: 1.6; }
.portfolio-empty { padding: 5rem 2rem; border: 1px solid rgba(38,36,33,.25); text-align: center; }

.portfolio-modal .modal-content { color: var(--ivory); background: var(--deanblack); }
.portfolio-modal .modal-header { min-height: 90px; padding: 1rem clamp(1rem, 3vw, 3rem); border-color: rgba(255,255,255,.16); }
.portfolio-modal .modal-title { font-size: clamp(1.35rem, 3vw, 2rem); }
.modal-category { margin: 0 0 .2rem; color: var(--deangold); font-size: .7rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.modal-actions { display: flex; align-items: center; gap: 1.25rem; }
.portfolio-modal .modal-body { display: grid; place-items: center; min-height: 0; padding: clamp(1rem, 3vw, 2.5rem); overflow: auto; }
.portfolio-modal-image { display: block; max-width: 100%; max-height: calc(100vh - 150px); margin: auto; object-fit: contain; }
.portfolio-modal-pdf { width: 100%; height: calc(100vh - 150px); border: 0; background: #fff; }

@media (max-width: 767.98px) {
  .portfolio-toolbar { align-items: stretch; flex-direction: column; }
  .portfolio-sort { width: 100%; }
  .portfolio-filter { flex: 1 1 auto; }
  .portfolio-modal .modal-header { align-items: flex-start; }
  .modal-actions .btn { display: none; }
  .portfolio-modal-pdf { height: calc(100vh - 125px); }
}
