:root {
  --pfi-project-red: var(--pfi-color-primary);
  --pfi-project-red-deep: var(--pfi-color-primary-deep);
  --pfi-project-blue: var(--pfi-color-secondary);
  --pfi-project-ink: var(--pfi-color-ink);
  --pfi-project-slate: var(--pfi-color-text);
  --pfi-project-bone: var(--pfi-color-bone);
  --pfi-project-soft: var(--pfi-color-bone);
  --pfi-project-line: var(--pfi-color-line);
  --pfi-project-white: var(--pfi-color-panel);
  --pfi-project-shell: var(--pfi-shell-standard);
  --pfi-project-wide: var(--pfi-shell-wide);
  --pfi-project-text: var(--pfi-text-measure-wide);
  --pfi-project-font-heading: var(--pfi-font-heading);
  --pfi-project-font-body: var(--pfi-font-body);
  --pfi-project-type-h1: var(--pfi-type-h1);
  --pfi-project-type-h2: var(--pfi-type-h2);
  --pfi-project-type-h3: var(--pfi-type-h3);
  --pfi-project-type-body: var(--pfi-type-body);
  --pfi-project-type-lead: var(--pfi-type-lead);
  --pfi-project-type-eyebrow: var(--pfi-type-eyebrow);
  --pfi-project-line-heading: var(--pfi-line-heading);
  --pfi-project-line-body: var(--pfi-line-body);
  --pfi-project-space-card: var(--pfi-space-card);
  --pfi-project-shadow: var(--pfi-shadow-soft);
}

.pfi-projects-archive,
.pfi-project-single {
  color: var(--pfi-project-ink);
  max-width: 100%;
  overflow-x: hidden;
  padding: 1.5rem 0 4rem;
}

.pfi-projects-archive,
.pfi-projects-archive *,
.pfi-projects-archive *::before,
.pfi-projects-archive *::after,
.pfi-project-single,
.pfi-project-single *,
.pfi-project-single *::before,
.pfi-project-single *::after {
  box-sizing: border-box;
}

.pfi-projects-shell {
  margin: 0 auto;
  max-width: var(--pfi-project-shell);
  padding: 0 1.25rem;
  width: 100%;
}

.pfi-projects-archive .pfi-projects-shell {
  max-width: var(--pfi-project-wide);
}

.pfi-projects-directory {
  align-items: start;
  display: grid;
  gap: 1.3rem;
  grid-template-columns: minmax(0, 1fr);
}

.pfi-projects-sidebar,
.pfi-project-detail {
  background: var(--pfi-project-white);
  border: 1px solid var(--pfi-project-line);
  box-shadow: var(--pfi-project-shadow);
}

.pfi-projects-hero {
  align-items: end;
  border-bottom: 1px solid var(--pfi-project-line);
  display: grid;
  gap: 1rem;
  grid-template-columns: minmax(0, 1fr) auto;
  padding: 0.45rem 0 1.35rem;
}

.pfi-projects-hero__copy {
  display: grid;
  gap: 0.55rem;
  max-width: 760px;
  min-width: 0;
}

.pfi-projects-hero__title {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-heading);
  font-size: var(--pfi-project-type-h1);
  font-weight: 800;
  letter-spacing: 0;
  line-height: 0.96;
  margin: 0;
}

.pfi-projects-hero__summary {
  color: var(--pfi-project-slate);
  line-height: var(--pfi-project-line-body);
  margin: 0;
  overflow-wrap: break-word;
}

.pfi-projects-filterbar {
  background: rgba(251, 250, 247, 0.72);
  border-bottom: 1px solid var(--pfi-project-line);
  border-top: 1px solid var(--pfi-project-line);
  display: grid;
  gap: 0.72rem;
  min-width: 0;
  padding: 0.72rem 0;
}

.pfi-projects-filterbar__head {
  align-items: center;
  display: flex;
  gap: 1rem;
  justify-content: space-between;
}

.pfi-projects-filterbar__head h2 {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-body);
  font-size: 0.96rem;
  font-weight: 750;
  letter-spacing: 0;
  margin: 0;
}

.pfi-projects-filterbar__grid {
  align-items: end;
  display: grid;
  gap: 0.62rem;
  grid-template-columns: minmax(220px, 1.3fr) repeat(4, minmax(150px, 1fr));
}

.pfi-projects-filterbar__actions {
  display: flex;
  justify-content: flex-end;
}

.pfi-projects-sidebar {
  display: grid;
  max-height: calc(100vh - 4rem);
  overflow-y: auto;
  overscroll-behavior: contain;
  position: sticky;
  scrollbar-gutter: stable;
  top: 2rem;
}

.pfi-projects-sidebar__section {
  border-top: 1px solid var(--pfi-project-line);
  padding: 1.25rem;
}

.pfi-projects-sidebar__section:first-child {
  border-top: 0;
}

.pfi-projects-sidebar__section--title {
  border-top: 4px solid var(--pfi-project-red);
}

.pfi-projects-eyebrow,
.pfi-projects-filter span,
.pfi-projects-results-group__eyebrow {
  color: var(--pfi-project-red);
  display: block;
  font-family: var(--pfi-project-font-body);
  font-size: var(--pfi-project-type-eyebrow);
  font-weight: 750;
  letter-spacing: var(--pfi-track-eyebrow);
  text-transform: uppercase;
}

.pfi-projects-sidebar__title,
.pfi-projects-results-pane h2,
.pfi-projects-results-group__title,
.pfi-project-detail h1,
.pfi-project-detail h2,
.pfi-project-detail h3 {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-heading);
  font-weight: 750;
  letter-spacing: 0;
  line-height: var(--pfi-project-line-heading);
  margin: 0;
}

.pfi-projects-sidebar__title {
  font-size: clamp(2.15rem, 2.5vw, 3rem);
  margin-top: 0.5rem;
}

.pfi-projects-sidebar__summary,
.pfi-projects-results-pane__summary,
.pfi-projects-results-group__description,
.pfi-projects-empty-state p,
.pfi-project-card__summary,
.pfi-projects-modal__summary,
.pfi-project-detail__lead,
.pfi-project-detail__copy,
.pfi-project-detail__section p,
.pfi-project-detail__card li,
.pfi-project-detail__cta p {
  color: var(--pfi-project-slate);
  line-height: var(--pfi-project-line-body);
}

.pfi-projects-sidebar__summary {
  margin-bottom: 0;
}

.pfi-projects-sidebar__stat {
  border-top: 1px solid var(--pfi-project-line);
  display: grid;
  gap: 0.25rem;
  margin-top: 1.1rem;
  padding-top: 1rem;
}

.pfi-projects-sidebar__stat-value {
  color: var(--pfi-project-red);
  font-family: var(--pfi-project-font-body);
  font-size: 2.3rem;
  font-weight: 800;
  line-height: 1;
}

.pfi-projects-sidebar__stat-label {
  color: var(--pfi-project-slate);
  font-size: 0.95rem;
}

.pfi-projects-sidebar__section h2 {
  color: #303030;
  font-family: var(--pfi-project-font-body);
  font-size: 1.12rem;
  font-weight: 750;
  margin: 0;
}

.pfi-project-notes {
  border-top: 1px solid var(--pfi-project-line);
  margin-top: 1.2rem;
  padding-top: 0.9rem;
}

.pfi-project-notes__panel {
  max-width: 640px;
}

.pfi-project-notes__summary {
  align-items: center;
  background: #f8f6f2;
  border: 1px solid var(--pfi-project-line);
  color: var(--pfi-project-red);
  cursor: pointer;
  display: inline-flex;
  font-family: var(--pfi-project-font-body);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1;
  min-height: 2.15rem;
  padding: 0.62rem 0.78rem;
  text-transform: uppercase;
}

.pfi-project-notes__summary::marker {
  color: var(--pfi-project-red);
}

.pfi-project-notes__form {
  background: #fbfaf7;
  border: 1px solid var(--pfi-project-line);
  display: grid;
  gap: 0.85rem;
  margin-top: 0.75rem;
  padding: 1rem;
}

.pfi-project-notes__form label {
  display: grid;
  gap: 0.4rem;
}

.pfi-project-notes__form label span {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-body);
  font-size: 0.84rem;
  font-weight: 750;
}

.pfi-project-notes__form textarea,
.pfi-project-notes__form input[type="file"] {
  background: #ffffff;
  border: 1px solid var(--pfi-project-line);
  color: var(--pfi-project-ink);
  font: inherit;
  max-width: 100%;
  padding: 0.72rem;
  width: 100%;
}

.pfi-project-notes__submit {
  justify-self: start;
}

.pfi-project-notes__notice {
  border: 1px solid var(--pfi-project-line);
  font-family: var(--pfi-project-font-body);
  font-weight: 750;
  margin: 1rem;
  padding: 0.85rem 1rem;
}

.pfi-project-notes__notice--success {
  background: #edf7ef;
  color: #155724;
}

.pfi-project-notes__notice--error {
  background: #fff3f0;
  color: var(--pfi-project-red);
}

.pfi-projects-sidebar__section-head,
.pfi-projects-results__header {
  align-items: center;
  display: flex;
  gap: 1rem;
  justify-content: space-between;
}

.pfi-projects-link-button {
  align-items: center;
  background: none;
  border: 0;
  color: var(--pfi-project-red);
  cursor: pointer;
  display: inline-flex;
  font-family: var(--pfi-project-font-body);
  font-size: 0.92rem;
  font-weight: 800;
  justify-content: center;
  min-height: 44px;
  padding: 0.35rem 0;
}

.pfi-projects-filter-stack {
  display: grid;
  gap: 0.95rem;
  margin-top: 1rem;
}

.pfi-projects-filter {
  display: grid;
  gap: 0.45rem;
  min-width: 0;
}

.pfi-projects-filter input,
.pfi-projects-filter select {
  appearance: none;
  background: #fff;
  border: 1px solid #d6d0c7;
  border-radius: 4px;
  box-shadow: none;
  color: #303030;
  font-family: var(--pfi-project-font-body);
  font-size: 0.88rem;
  min-height: 44px;
  padding: 0.48rem 0.62rem;
  width: 100%;
}

.pfi-projects-filter input:focus,
.pfi-projects-filter select:focus {
  border-color: var(--pfi-project-red);
  outline: 2px solid rgba(125, 21, 24, 0.14);
  outline-offset: 0;
}

.pfi-projects-tier-list {
  display: grid;
  gap: 0.8rem;
  margin-top: 1rem;
}

.pfi-projects-tier-key {
  align-items: start;
  border: 1px solid var(--pfi-project-line);
  display: grid;
  gap: 0.75rem;
  grid-template-columns: auto minmax(0, 1fr);
  padding: 0.9rem;
}

.pfi-projects-tier-key__count {
  align-items: center;
  background: rgba(125, 21, 24, 0.08);
  color: var(--pfi-project-red);
  display: inline-flex;
  font-weight: 800;
  justify-content: center;
  min-width: 2.2rem;
  padding: 0.35rem 0.55rem;
}

.pfi-projects-tier-key strong,
.pfi-projects-tier-key em {
  display: block;
}

.pfi-projects-tier-key strong {
  color: var(--pfi-project-ink);
  font-size: 0.98rem;
  line-height: 1.25;
}

.pfi-projects-tier-key em {
  color: var(--pfi-project-slate);
  font-size: 0.88rem;
  font-style: normal;
  line-height: 1.45;
  margin-top: 0.18rem;
}

.pfi-projects-results-pane {
  display: grid;
  gap: 1rem;
}

.pfi-projects-results-pane__header {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(246, 243, 238, 0.98));
  padding: 1.5rem 1.6rem 1.35rem;
}

.pfi-projects-results-pane h2 {
  font-size: clamp(2rem, 2.8vw, 2.9rem);
  margin-top: 0.45rem;
}

.pfi-projects-results-pane__summary {
  margin-bottom: 0;
  max-width: var(--pfi-project-text);
}

.pfi-projects-results {
  padding: 0.3rem 0 0;
}

.pfi-projects-results-summary {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-body);
  font-size: 0.96rem;
  font-weight: 750;
  margin: 0 0 1rem;
}

.pfi-projects-active-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
}

.pfi-projects-active-filters[hidden] {
  display: none;
}

.pfi-projects-pill,
.pfi-projects-filter-chip,
.pfi-project-card__chips span,
.pfi-projects-chip-list span {
  align-items: center;
  background: rgba(125, 21, 24, 0.08);
  color: #3a302b;
  display: inline-flex;
  font-family: var(--pfi-project-font-body);
  font-size: 0.84rem;
  gap: 0.4rem;
  max-width: 100%;
  min-width: 0;
  overflow-wrap: anywhere;
  padding: 0.38rem 0.72rem;
}

.pfi-projects-empty-state {
  background: var(--pfi-project-bone);
  border: 1px dashed #cabfb4;
  padding: 2.1rem 1.5rem;
  text-align: center;
}

.pfi-projects-empty-state[hidden],
.pfi-projects-results-groups[hidden] {
  display: none;
}

.pfi-projects-empty-state h3 {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-body);
  font-size: 1.35rem;
  margin: 0 0 0.5rem;
}

.pfi-projects-results-groups {
  display: grid;
  gap: 1.75rem;
  margin-top: 1rem;
}

.pfi-projects-load-more-wrap {
  align-items: center;
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  justify-content: center;
  margin-top: 1.5rem;
  text-align: center;
}

.pfi-projects-load-more.is-loading {
  cursor: wait;
  opacity: 0.72;
  pointer-events: none;
}

.pfi-projects-load-more[hidden] {
  display: none;
}

.pfi-projects-load-status {
  color: var(--pfi-project-slate);
  font-size: 0.9rem;
  margin: 0;
  min-height: 1.35em;
}

.pfi-projects-results-group {
  border-top: 1px solid var(--pfi-project-line);
  display: grid;
  gap: 1rem;
  padding-top: 1.5rem;
}

.pfi-projects-results-group:first-child {
  border-top: 0;
  padding-top: 0;
}

.pfi-projects-results-group__header {
  align-items: start;
  display: flex;
  gap: 1rem;
  justify-content: space-between;
}

.pfi-projects-results-group__copy {
  display: grid;
  gap: 0.25rem;
}

.pfi-projects-results-group__title {
  font-size: 1.45rem;
}

.pfi-projects-results-group__description {
  margin: 0;
  max-width: 48rem;
}

.pfi-projects-results-group__count {
  align-items: center;
  background: var(--pfi-project-blue);
  color: #fff;
  display: inline-flex;
  font-family: var(--pfi-project-font-body);
  font-size: 0.86rem;
  font-weight: 800;
  justify-content: center;
  min-width: 2.5rem;
  padding: 0.42rem 0.7rem;
}

.pfi-project-card-grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
}

.pfi-project-card {
  background: #fff;
  border: 1px solid var(--pfi-project-line);
  cursor: pointer;
  display: flex;
  flex-direction: column;
  min-height: 100%;
  overflow: hidden;
  padding: 0;
  text-align: left;
  transition: border-color 140ms ease, box-shadow 140ms ease, transform 140ms ease;
}

.pfi-project-card:hover,
.pfi-project-card:focus-visible {
  border-color: rgba(125, 21, 24, 0.5);
  box-shadow: 0 14px 26px rgba(0, 0, 0, 0.08);
  outline: none;
  transform: translateY(-2px);
}

.pfi-project-card__media {
  aspect-ratio: 16 / 10;
  background: var(--pfi-project-soft);
  display: block;
  overflow: hidden;
}

.pfi-project-card__media img {
  display: block;
  height: 100%;
  object-fit: cover;
  width: 100%;
}

.pfi-project-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 0.65rem;
  padding: 0.95rem;
}

.pfi-project-card__eyebrow,
.pfi-project-card__tier {
  color: var(--pfi-project-red);
  font-family: var(--pfi-project-font-body);
  font-size: var(--pfi-project-type-eyebrow);
  font-weight: 750;
  letter-spacing: var(--pfi-track-eyebrow);
  text-transform: uppercase;
}

.pfi-project-card__title {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-body);
  font-size: 1.18rem;
  font-weight: 750;
  line-height: 1.18;
  overflow-wrap: anywhere;
}

.pfi-project-card__meta {
  color: #686868;
  font-size: 0.94rem;
}

.pfi-project-card__summary {
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
  display: -webkit-box;
  font-size: 0.95rem;
  overflow: hidden;
}

.pfi-project-card__chips,
.pfi-projects-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.pfi-project-card__footer {
  display: flex;
  margin-top: auto;
}

.pfi-project-card__cta,
.pfi-projects-button {
  align-items: center;
  background: var(--pfi-project-red);
  border: 1px solid var(--pfi-project-red);
  color: #fff;
  display: inline-flex;
  font-family: var(--pfi-project-font-body);
  font-size: 0.84rem;
  font-weight: 800;
  gap: 0.55rem;
  justify-content: center;
  letter-spacing: 0.06em;
  max-width: 100%;
  min-height: 44px;
  overflow-wrap: anywhere;
  padding: 0.65rem 1rem;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  transition: background-color 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.pfi-project-card__cta::after,
.pfi-projects-button::after {
  content: "\2192";
  font-size: 1rem;
}

.pfi-project-card:hover .pfi-project-card__cta,
.pfi-project-card:focus-visible .pfi-project-card__cta,
.pfi-projects-button:hover,
.pfi-projects-button:focus-visible {
  background: var(--pfi-project-red-deep);
  border-color: var(--pfi-project-red-deep);
  color: #fff;
  transform: translateY(-1px);
}

.pfi-projects-button--light {
  background: #fff;
  border-color: #fff;
  color: var(--pfi-project-red);
}

.pfi-projects-button--light:hover,
.pfi-projects-button--light:focus-visible {
  background: var(--pfi-project-bone);
  border-color: var(--pfi-project-bone);
  color: var(--pfi-project-red-deep);
}

.pfi-projects-modal[hidden] {
  display: none;
}

.pfi-projects-modal {
  align-items: flex-start;
  display: flex;
  inset: 0;
  justify-content: center;
  overflow-y: auto;
  padding: 5.75rem 1rem 1rem;
  position: fixed;
  z-index: 2147483000;
}

body.admin-bar .pfi-projects-modal {
  padding-top: 7.75rem;
}

.pfi-projects-modal__backdrop {
  background: rgba(12, 12, 12, 0.76);
  inset: 0;
  position: absolute;
}

.pfi-projects-modal__panel {
  background: #fff;
  box-shadow: 0 30px 60px rgba(0, 0, 0, 0.24);
  display: grid;
  grid-template-columns: minmax(280px, 0.85fr) minmax(0, 1.15fr);
  max-height: min(88vh, 960px);
  max-width: min(84vw, 1240px);
  min-height: 0;
  overflow: hidden;
  position: relative;
  width: min(84vw, 1240px);
}

.pfi-projects-modal__panel--no-media {
  grid-template-columns: minmax(0, 1fr);
  max-width: min(720px, 84vw);
}

.pfi-projects-modal__close {
  background: rgba(0, 0, 0, 0.07);
  border: 0;
  color: #222;
  cursor: pointer;
  font-size: 1.6rem;
  height: 44px;
  position: absolute;
  right: 1rem;
  top: 1rem;
  width: 44px;
  z-index: 3;
}

.pfi-projects-modal__media {
  background: var(--pfi-project-soft);
  max-height: min(88vh, 960px);
  min-height: 0;
}

.pfi-projects-modal__media img {
  display: block;
  height: 100%;
  object-fit: cover;
  width: 100%;
}

.pfi-projects-modal__body {
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
  max-height: min(88vh, 960px);
  overflow-y: auto;
  padding: 2rem;
}

.pfi-projects-modal__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding-right: 3rem;
}

.pfi-projects-modal h3 {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-body);
  font-size: clamp(2rem, 3vw, 3.2rem);
  line-height: 1.02;
  margin: 0;
  overflow-wrap: anywhere;
}

.pfi-projects-modal__summary {
  font-size: 1.06rem;
  margin: 0;
}

.pfi-projects-modal__section {
  border-top: 1px solid var(--pfi-project-line);
  display: grid;
  gap: 0.55rem;
  padding-top: 1rem;
}

.pfi-projects-modal__section[hidden] {
  display: none;
}

.pfi-projects-modal__section h4 {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-body);
  font-size: 1.05rem;
  margin: 0;
}

.pfi-projects-modal__section p {
  color: var(--pfi-project-slate);
  line-height: 1.6;
  margin: 0;
}

.pfi-projects-modal__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
  margin-top: auto;
}

.pfi-projects-modal-open {
  overflow: hidden;
}

.pfi-project-detail {
  display: grid;
  gap: 0;
  overflow: hidden;
}

.pfi-project-detail__hero {
  display: grid;
  grid-template-columns: minmax(280px, 0.9fr) minmax(0, 1.1fr);
  min-height: 460px;
}

.pfi-project-detail__hero--no-media {
  grid-template-columns: minmax(0, 1fr);
  min-height: 0;
}

.pfi-project-detail__hero--no-media .pfi-project-detail__intro {
  max-width: 940px;
}

.pfi-project-detail__media {
  background: var(--pfi-project-soft);
  min-height: 320px;
}

.pfi-project-detail__media img {
  display: block;
  height: 100%;
  object-fit: cover;
  width: 100%;
}

.pfi-project-detail__intro {
  align-content: center;
  display: grid;
  gap: 1rem;
  padding: clamp(2rem, 5vw, 4.5rem);
}

.pfi-project-detail h1 {
  font-size: clamp(2.5rem, 4.8vw, 5rem);
  overflow-wrap: anywhere;
}

.pfi-project-detail__location {
  color: var(--pfi-project-blue);
  font-family: var(--pfi-project-font-body);
  font-weight: 800;
  margin: 0;
}

.pfi-project-detail__lead {
  font-size: 1.16rem;
  margin: 0;
  max-width: var(--pfi-project-text);
}

.pfi-project-detail__section {
  border-top: 1px solid var(--pfi-project-line);
  display: grid;
  gap: 1.25rem;
  padding: clamp(2rem, 4.5vw, 4rem);
}

.pfi-project-detail__section--split {
  grid-template-columns: minmax(220px, 0.75fr) minmax(0, 1.25fr);
}

.pfi-project-detail__section--compact {
  max-width: 760px;
}

.pfi-project-detail__section--featured-project {
  background: var(--pfi-project-bone);
}

.pfi-project-detail__section-head {
  display: grid;
  gap: 0.45rem;
}

.pfi-project-detail h2 {
  font-size: clamp(1.75rem, 3vw, 2.65rem);
}

.pfi-project-detail__copy {
  max-width: var(--pfi-project-text);
}

.pfi-project-detail__copy p,
.pfi-project-detail__section p {
  margin: 0;
}

.pfi-project-video {
  aspect-ratio: 16 / 9;
  background: var(--pfi-project-ink);
  border-radius: 8px;
  overflow: hidden;
  width: 100%;
}

.pfi-project-video iframe {
  border: 0;
  display: block;
  height: 100%;
  width: 100%;
}

.pfi-project-video + .pfi-project-gallery-grid {
  margin-top: clamp(1.25rem, 3vw, 2rem);
}

.pfi-project-gallery-grid {
  display: grid;
  gap: 0.85rem;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.pfi-project-gallery-card {
  aspect-ratio: 4 / 3;
  background: var(--pfi-project-soft);
  border: 1px solid var(--pfi-project-line);
  margin: 0;
  overflow: hidden;
}

.pfi-project-gallery-card__button {
  background: transparent;
  border: 0;
  cursor: zoom-in;
  display: block;
  height: 100%;
  padding: 0;
  width: 100%;
}

.pfi-project-gallery-card__button:focus-visible {
  outline: 3px solid var(--pfi-project-red);
  outline-offset: -3px;
}

.pfi-project-gallery-card img {
  display: block;
  height: 100%;
  object-fit: cover;
  width: 100%;
}

.pfi-project-gallery-lightbox[hidden] {
  display: none;
}

.pfi-project-gallery-lightbox {
  align-items: center;
  display: flex;
  inset: 0;
  justify-content: center;
  padding: clamp(1rem, 4vw, 3rem);
  position: fixed;
  z-index: 2147483001;
}

.pfi-project-gallery-lightbox__backdrop {
  background: rgba(5, 8, 12, 0.86);
  border: 0;
  cursor: zoom-out;
  inset: 0;
  padding: 0;
  position: absolute;
}

.pfi-project-gallery-lightbox__panel {
  align-items: center;
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr) 52px;
  max-height: calc(100vh - 2rem);
  max-width: min(1180px, calc(100vw - 2rem));
  position: relative;
  width: 100%;
  z-index: 1;
}

body.admin-bar .pfi-project-gallery-lightbox__panel {
  max-height: calc(100vh - 4.5rem);
}

.pfi-project-gallery-lightbox__figure {
  align-items: center;
  display: grid;
  gap: 0.85rem;
  grid-column: 2;
  justify-items: center;
  margin: 0;
  min-width: 0;
}

.pfi-project-gallery-lightbox__figure img {
  background: rgba(255, 255, 255, 0.08);
  box-shadow: 0 28px 70px rgba(0, 0, 0, 0.42);
  display: block;
  max-height: calc(100vh - 8rem);
  max-width: 100%;
  object-fit: contain;
}

body.admin-bar .pfi-project-gallery-lightbox__figure img {
  max-height: calc(100vh - 10rem);
}

.pfi-project-gallery-lightbox__figure figcaption {
  color: #fff;
  font-size: 0.92rem;
  line-height: 1.4;
  min-height: 1.3em;
  text-align: center;
}

.pfi-project-gallery-lightbox__close,
.pfi-project-gallery-lightbox__control {
  align-items: center;
  background: rgba(255, 255, 255, 0.9);
  border: 0;
  color: var(--pfi-project-ink);
  cursor: pointer;
  display: inline-flex;
  font-family: var(--pfi-project-font-body);
  font-weight: 800;
  height: 48px;
  justify-content: center;
  width: 48px;
}

.pfi-project-gallery-lightbox__close:hover,
.pfi-project-gallery-lightbox__close:focus-visible,
.pfi-project-gallery-lightbox__control:hover,
.pfi-project-gallery-lightbox__control:focus-visible {
  background: #fff;
  outline: 3px solid rgba(255, 255, 255, 0.45);
  outline-offset: 3px;
}

.pfi-project-gallery-lightbox__close {
  font-size: 1.7rem;
  position: absolute;
  right: 0;
  top: 0;
  z-index: 2;
}

.pfi-project-gallery-lightbox__control {
  font-size: 2.2rem;
}

.pfi-project-gallery-lightbox__control--prev {
  grid-column: 1;
  justify-self: start;
}

.pfi-project-gallery-lightbox__control--next {
  grid-column: 3;
  justify-self: end;
}

.pfi-project-gallery-lightbox__counter {
  background: rgba(0, 0, 0, 0.58);
  color: #fff;
  font-size: 0.84rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  padding: 0.45rem 0.65rem;
  position: absolute;
  right: 0;
  text-transform: uppercase;
  top: 3.4rem;
  z-index: 2;
}

.pfi-project-detail__scope-text strong {
  color: var(--pfi-project-ink);
  display: block;
  margin-bottom: 0.4rem;
}

.pfi-project-detail__cards,
.pfi-project-related-grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
}

.pfi-project-detail__cards--execution {
  align-items: start;
  grid-template-columns: 1fr;
}

.pfi-project-detail__cards--execution .pfi-project-detail__card--quantities {
  grid-column: 1 / -1;
}

.pfi-project-detail__card {
  background: #fff;
  border: 1px solid var(--pfi-project-line);
  padding: 1.15rem;
}

.pfi-project-detail__card h3,
.pfi-project-detail__method-group h3,
.pfi-project-detail__constraint-group h3 {
  font-size: 1.18rem;
  margin-bottom: 0.75rem;
}

.pfi-project-detail__card ul,
.pfi-project-detail__highlight-list {
  display: grid;
  gap: 0.65rem;
  margin: 0;
  padding-left: 1.1rem;
}

.pfi-project-detail__highlight-list {
  max-width: var(--pfi-project-text);
}

.pfi-project-detail__method-group {
  min-width: 0;
}

.pfi-project-detail__cards--execution:not(:has(.pfi-project-detail__constraint-group))
  .pfi-project-detail__method-group {
  grid-column: 1 / -1;
}

.pfi-project-detail__constraint-group {
  background: #fff;
  border: 1px solid var(--pfi-project-line);
  min-width: 0;
  padding: 1.15rem;
}

.pfi-project-method-card-grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.pfi-project-method-card {
  background: linear-gradient(180deg, #fff, rgba(246, 242, 234, 0.62));
  border: 1px solid rgba(23, 53, 74, 0.22);
  color: inherit;
  display: grid;
  min-width: 0;
  overflow: hidden;
  position: relative;
  text-decoration: none;
}

.pfi-project-method-card::before {
  background: var(--pfi-project-red);
  content: "";
  height: 3px;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
}

.pfi-project-method-card__media {
  align-items: center;
  background: rgba(23, 53, 74, 0.07);
  border-bottom: 1px solid rgba(23, 53, 74, 0.12);
  display: flex;
  gap: 0.75rem;
  min-height: 92px;
  overflow: hidden;
  padding: 1.15rem;
}

.pfi-project-method-card__icon {
  --pfi-project-method-icon: url("data:image/svg+xml,%3Csvg viewBox='0 0 48 48' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 38h16' stroke='%23000' stroke-width='3' stroke-linecap='round'/%3E%3Cpath d='M24 8v30' stroke='%23000' stroke-width='3' stroke-linecap='round'/%3E%3Cpath d='M18 14h12M18 22h12M18 30h12' stroke='%23000' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E");
  background: #fff;
  border-radius: 50%;
  box-shadow: 0 8px 18px rgba(12, 13, 16, 0.12);
  display: block;
  height: 56px;
  position: relative;
  width: 56px;
}

.pfi-project-method-card__icon::before {
  background: var(--pfi-project-blue);
  content: "";
  display: block;
  height: 28px;
  left: 50%;
  mask: var(--pfi-project-method-icon) center / contain no-repeat;
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 28px;
  -webkit-mask: var(--pfi-project-method-icon) center / contain no-repeat;
}

.pfi-project-method-card--jet-grouting .pfi-project-method-card__icon {
  background: #063360;
}

.pfi-project-method-card--jet-grouting .pfi-project-method-card__icon::before {
  --pfi-project-method-icon: url("data:image/svg+xml,%3Csvg viewBox='0 0 48 48' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M24 7v18' stroke='%23000' stroke-width='3' stroke-linecap='round'/%3E%3Cpath d='M17 17h14M19 24h10' stroke='%23000' stroke-width='3' stroke-linecap='round'/%3E%3Cpath d='M24 25c0 7-8 8-8 14M24 25c0 7 8 8 8 14M24 25v15' stroke='%23000' stroke-width='3' stroke-linecap='round'/%3E%3Cpath d='M14 40h20' stroke='%23000' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E");
  background: #fff;
}

.pfi-project-method-card--deep-cement-mixing .pfi-project-method-card__icon {
  background: #063360;
}

.pfi-project-method-card--deep-cement-mixing .pfi-project-method-card__icon::before {
  --pfi-project-method-icon: url("data:image/svg+xml,%3Csvg viewBox='0 0 48 48' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M24 7v28' stroke='%23000' stroke-width='3' stroke-linecap='round'/%3E%3Cpath d='M17 13l14 6-14 6 14 6-14 6' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M14 40h20' stroke='%23000' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E");
  background: #fff;
}

.pfi-project-method-card__body {
  display: grid;
  gap: 0.45rem;
  padding: 1.15rem;
}

.pfi-project-method-card__body span {
  color: var(--pfi-project-red);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.pfi-project-method-card__body strong {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-body);
  font-size: 1.1rem;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.pfi-project-method-card__body em {
  color: var(--pfi-project-slate);
  font-style: normal;
  line-height: 1.5;
}

.pfi-project-constraint-tabs {
  display: grid;
  gap: 0.7rem;
}

.pfi-project-constraint-tab {
  background: rgba(246, 242, 234, 0.72);
  border: 1px solid rgba(23, 53, 74, 0.16);
}

.pfi-project-constraint-tab summary {
  align-items: center;
  color: var(--pfi-project-ink);
  cursor: pointer;
  display: flex;
  font-weight: 800;
  gap: 0.75rem;
  justify-content: space-between;
  list-style: none;
  min-height: 48px;
  padding: 0.8rem 0.95rem;
}

.pfi-project-constraint-tab summary::-webkit-details-marker {
  display: none;
}

.pfi-project-constraint-tab summary::after {
  color: var(--pfi-project-red);
  content: "+";
  font-family: var(--pfi-project-font-body);
  font-size: 1.25rem;
  line-height: 1;
}

.pfi-project-constraint-tab[open] summary::after {
  content: "-";
}

.pfi-project-constraint-tab p {
  border-top: 1px solid rgba(23, 53, 74, 0.12);
  color: var(--pfi-project-slate);
  font-size: 0.98rem;
  line-height: 1.55;
  padding: 0.85rem 0.95rem 1rem;
}

.pfi-project-related-card {
  background: #fff;
  border: 1px solid var(--pfi-project-line);
  color: inherit;
  display: grid;
  overflow: hidden;
  text-decoration: none;
}

.pfi-project-related-card__media {
  aspect-ratio: 4 / 3;
  background: var(--pfi-project-soft);
  display: block;
  overflow: hidden;
}

.pfi-project-related-card__media img {
  display: block;
  height: 100%;
  object-fit: cover;
  width: 100%;
}

.pfi-project-related-card__body {
  display: grid;
  gap: 0.45rem;
  padding: 1rem;
}

.pfi-project-related-card__body span {
  color: var(--pfi-project-red);
  font-size: 0.8rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.pfi-project-related-card__body strong {
  color: var(--pfi-project-ink);
  font-family: var(--pfi-project-font-body);
  font-size: 1.15rem;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.pfi-project-related-card__body em {
  color: var(--pfi-project-slate);
  font-style: normal;
  line-height: 1.55;
}

.pfi-project-detail__cta {
  align-items: center;
  background: var(--pfi-project-red);
  color: #fff;
  display: flex;
  gap: 1.5rem;
  justify-content: space-between;
  padding: clamp(2rem, 4vw, 3.2rem);
}

.pfi-project-detail__cta .pfi-projects-eyebrow,
.pfi-project-detail__cta h2,
.pfi-project-detail__cta p {
  color: #fff;
}

.pfi-project-detail__cta h2 {
  font-size: clamp(2rem, 3vw, 3rem);
  margin: 0.35rem 0;
}

.pfi-project-detail__cta p {
  margin: 0;
  max-width: 680px;
}

@media (max-width: 1100px) {
  .pfi-projects-filterbar__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .pfi-projects-modal__panel {
    max-width: calc(100vw - 2rem);
    width: calc(100vw - 2rem);
  }
}

@media (max-width: 900px) {
  .pfi-projects-filterbar__grid,
  .pfi-project-detail__hero,
  .pfi-project-detail__section--split,
  .pfi-projects-modal__panel {
    grid-template-columns: 1fr;
  }

  .pfi-projects-hero {
    align-items: start;
    grid-template-columns: 1fr;
  }

  .pfi-projects-modal__media {
    max-height: 34vh;
  }

  .pfi-projects-modal__media img {
    max-height: 34vh;
  }

  .pfi-project-gallery-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .pfi-project-detail__hero {
    min-height: 0;
  }
}

@media (max-width: 640px) {
  .pfi-projects-archive,
  .pfi-project-single {
    overflow-x: hidden;
    padding-top: 0.75rem;
  }

  .pfi-projects-shell {
    max-width: 100vw;
    padding: 0 0.85rem;
    width: 100vw;
  }

  .pfi-projects-hero,
  .pfi-projects-filterbar,
  .pfi-projects-filterbar__grid,
  .pfi-projects-filter,
  .pfi-projects-results-pane,
  .pfi-projects-results,
  .pfi-projects-results-groups {
    max-width: calc(100vw - 1.7rem);
    min-width: 0;
    width: 100%;
  }

  .pfi-projects-hero__copy,
  .pfi-projects-hero__summary {
    max-width: calc(100vw - 1.7rem) !important;
    min-width: 0;
    white-space: normal;
    width: calc(100vw - 1.7rem) !important;
  }

  .pfi-projects-filterbar {
    width: calc(100vw - 1.7rem) !important;
  }

  .pfi-projects-filter input,
  .pfi-projects-filter select {
    max-width: 100%;
  }

  .pfi-projects-sidebar__section,
  .pfi-projects-filterbar,
  .pfi-projects-results,
  .pfi-projects-results-pane__header,
  .pfi-projects-modal__body,
  .pfi-project-detail__section,
  .pfi-project-detail__intro,
  .pfi-project-detail__cta {
    padding: 1.1rem;
  }

  .pfi-projects-filterbar {
    padding: 0.9rem 0;
  }

  .pfi-projects-results-group__header,
  .pfi-project-detail__cta {
    align-items: stretch;
    flex-direction: column;
  }

  .pfi-project-card-grid {
    grid-template-columns: 1fr;
  }

  .pfi-project-detail__cards--execution {
    grid-template-columns: 1fr;
  }

  .pfi-project-gallery-grid {
    gap: 0.7rem;
    grid-template-columns: 1fr;
  }

  .pfi-project-gallery-lightbox {
    padding: 0.85rem;
  }

  .pfi-project-gallery-lightbox__panel {
    grid-template-columns: 1fr;
    max-height: calc(100vh - 1.7rem);
    max-width: calc(100vw - 1.7rem);
  }

  body.admin-bar .pfi-project-gallery-lightbox__panel {
    max-height: calc(100vh - 3.8rem);
  }

  .pfi-project-gallery-lightbox__figure {
    grid-column: 1;
  }

  .pfi-project-gallery-lightbox__figure img {
    max-height: calc(100vh - 7.5rem);
  }

  body.admin-bar .pfi-project-gallery-lightbox__figure img {
    max-height: calc(100vh - 9.5rem);
  }

  .pfi-project-gallery-lightbox__control {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
  }

  .pfi-project-gallery-lightbox__control--prev {
    left: 0.5rem;
  }

  .pfi-project-gallery-lightbox__control--next {
    right: 0.5rem;
  }

  .pfi-project-gallery-lightbox__close,
  .pfi-project-gallery-lightbox__counter {
    right: 0.5rem;
  }

  .pfi-projects-modal {
    padding: 4.25rem 0.7rem 0.7rem;
  }

  .pfi-projects-modal__panel {
    max-height: none;
    max-width: 100%;
    width: 100%;
  }

  .pfi-projects-modal__body {
    max-height: none;
  }

  .pfi-projects-modal h3 {
    font-size: 2rem;
  }

  .pfi-projects-button {
    width: 100%;
  }
}
