/*
Theme Name: FWM26
Theme URI: https://florianwmueller.com/
Author: Florian W. Mueller & OpenAI
Description: A deliberately reduced portfolio theme for photography, art and commissioned work.
Version: 0.13.5
Requires at least: 6.6
Requires PHP: 8.1
Text Domain: fwm26
*/


@font-face {
  font-family: "General Sans";
  src: url("assets/fonts/GeneralSans-Regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "General Sans";
  src: url("assets/fonts/GeneralSans-Medium.woff2") format("woff2");
  font-style: normal;
  font-weight: 500 600;
  font-display: swap;
}

@font-face {
  font-family: "Gambetta";
  src: url("assets/fonts/Gambetta-Regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "Gambetta";
  src: url("assets/fonts/Gambetta-Italic.woff2") format("woff2");
  font-style: italic;
  font-weight: 400;
  font-display: swap;
}

:root {
  --fwm-sans: "General Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --fwm-serif: "Gambetta", Georgia, "Times New Roman", serif;
  --fwm-bg: #fbfaf2;
  --fwm-surface: #f0eee6;
  --fwm-text: #171716;
  --fwm-muted: #66635f;
  --fwm-line: #dedad1;
  --fwm-accent: #fe6f61;
  --fwm-accent-2: #6b7168;
  --fwm-inverse: #fbfaf2;
  --fwm-gutter: clamp(18px, 2.4vw, 42px);
  --fwm-header-y: clamp(18px, 2.2vw, 34px);
  --fwm-max: 1680px;
  --fwm-reading: 760px;
  --fwm-home-start: clamp(210px, 18vw, 350px);
  --fwm-ease: cubic-bezier(.22, .8, .2, 1);
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background: var(--fwm-bg);
  color: var(--fwm-text);
  font-family: var(--fwm-sans);
  font-size: clamp(16px, .98vw, 19px);
  line-height: 1.5;
  letter-spacing: -.004em;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

body.is-leaving {
  overflow: hidden;
}

a {
  color: inherit;
  text-decoration-thickness: 1px;
  text-underline-offset: .16em;
}

img,
video {
  display: block;
  max-width: 100%;
  height: auto;
}

button,
input,
textarea,
select {
  font: inherit;
}

::selection {
  background: var(--fwm-accent);
  color: var(--fwm-inverse);
}

.skip-link {
  position: fixed;
  z-index: 9999;
  left: 12px;
  top: 12px;
  transform: translateY(-200%);
  padding: 9px 12px;
  background: var(--fwm-accent);
  color: var(--fwm-inverse);
}

.skip-link:focus {
  transform: none;
}

.site-header {
  position: fixed;
  z-index: 50;
  inset: 0 0 auto 0;
  min-height: 72px;
  pointer-events: none;
}

.site-branding {
  position: absolute;
  top: var(--fwm-header-y);
  left: var(--fwm-gutter);
  z-index: 3;
  pointer-events: auto;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .045em;
  line-height: 1;
  text-transform: uppercase;
  transition: top 620ms var(--fwm-ease), left 620ms var(--fwm-ease), transform 620ms var(--fwm-ease);
}

.site-branding a {
  text-decoration: none;
}

.custom-logo-link {
  display: block;
  line-height: 0;
}

.custom-logo {
  display: block;
  width: clamp(34px, 2.5vw, 44px);
  height: auto;
  max-width: none;
  max-height: none;
  object-fit: contain;
  transform-origin: left center;
  transition: width 620ms var(--fwm-ease), filter 260ms ease, opacity 260ms ease;
}

body:not(.home) .custom-logo {
  filter: brightness(0);
}

.nav-stage {
  position: absolute;
  top: var(--fwm-header-y);
  left: 50%;
  width: min(760px, calc(100vw - 2 * var(--fwm-gutter)));
  transform: translate(-50%, 0);
  transition: top 620ms var(--fwm-ease), left 620ms var(--fwm-ease), width 620ms var(--fwm-ease), transform 620ms var(--fwm-ease);
  pointer-events: auto;
}

.primary-navigation ul {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: .35em 1.65em;
  margin: 0;
  padding: 0;
  list-style: none;
}

.primary-navigation a {
  display: inline-block;
  text-decoration: none;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .05em;
  line-height: 1.2;
  text-transform: uppercase;
}

.primary-navigation .current-menu-item > a,
.primary-navigation .current_page_item > a,
.primary-navigation a:hover,
.primary-navigation a:focus-visible {
  text-decoration: underline;
}

.home .site-header {
  min-height: 100svh;
  color: #fff;
  mix-blend-mode: difference;
}

.home .site-branding {
  top: 50%;
  transform: translateY(-50%);
}

.home .custom-logo {
  width: clamp(56px, 5vw, 82px);
  filter: brightness(0) invert(1);
}

.home .nav-stage {
  top: 50%;
  left: var(--fwm-home-start);
  width: calc(100vw - var(--fwm-home-start) - var(--fwm-gutter));
  transform: translateY(-50%);
}

.home .primary-navigation ul {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0 clamp(18px, 2.4vw, 46px);
}

.home .primary-navigation li {
  min-width: 0;
}

.home .primary-navigation li:last-child {
  text-align: right;
}

.home .primary-navigation a,
.home .site-branding {
  text-shadow: 0 1px 14px rgba(0, 0, 0, .22);
}

.home.is-leaving .site-branding {
  top: var(--fwm-header-y);
  transform: none;
}

.home.is-leaving .nav-stage {
  top: var(--fwm-header-y);
  left: 50%;
  width: min(760px, calc(100vw - 2 * var(--fwm-gutter)));
  transform: translate(-50%, 0);
}

.home-intro {
  max-width: 680px;
  margin: clamp(10px, 1.2vw, 18px) 0 0 50%;
  text-align: left;
  font-family: var(--fwm-serif);
  font-size: clamp(17px, 1.12vw, 21px);
  font-weight: 400;
  letter-spacing: -.016em;
  line-height: 1.28;
  text-wrap: pretty;
  text-shadow: 0 1px 18px rgba(0, 0, 0, .26);
  opacity: .98;
  transition: opacity 280ms ease, transform 420ms var(--fwm-ease);
}

.home-intro > *:first-child {
  margin-top: 0;
}

.home-intro > *:last-child {
  margin-bottom: 0;
}

.home.is-leaving .home-intro {
  opacity: 0;
  transform: translateY(-10px);
}

.home-hero {
  position: fixed;
  z-index: 0;
  inset: 0;
  margin: 0;
  background: #101010;
  overflow: hidden;
}

.home-hero img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transform: scale(1.003);
}

.home-hero-placeholder {
  width: 100%;
  height: 100%;
  background:
    radial-gradient(circle at 52% 46%, rgba(255,255,255,.11), transparent 26%),
    linear-gradient(145deg, #232323, #050505 62%);
}

.site-main {
  width: min(var(--fwm-max), 100%);
  margin: 0 auto;
  padding: clamp(126px, 15vw, 210px) var(--fwm-gutter) clamp(70px, 10vw, 150px);
}

.home .site-main {
  width: auto;
  margin: 0;
  padding: 0;
}

.page-header,
.project-header {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(250px, .8fr);
  gap: clamp(28px, 6vw, 110px);
  align-items: start;
  margin-bottom: clamp(62px, 10vw, 150px);
}

.work-archive .page-header {
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(18px, 2.4vw, 40px);
  align-items: end;
  margin-bottom: clamp(72px, 9vw, 140px);
}

.work-archive .page-title {
  grid-column: 1 / span 2;
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .06em;
  line-height: 1.2;
  text-transform: uppercase;
}

.work-archive .page-intro {
  grid-column: 7 / span 5;
  max-width: 720px;
  font-family: var(--fwm-serif);
  font-size: clamp(19px, 1.38vw, 26px);
  letter-spacing: -.015em;
  line-height: 1.28;
}

.work-archive .page-intro p {
  margin: 0;
}

.page-title,
.project-title {
  margin: -.1em 0 0;
  font-size: clamp(42px, 7.2vw, 126px);
  font-weight: 400;
  letter-spacing: -.055em;
  line-height: .92;
}

.page-intro,
.project-intro {
  max-width: 620px;
  color: var(--fwm-muted);
  font-family: var(--fwm-serif);
  font-size: clamp(19px, 1.34vw, 25px);
  letter-spacing: -.014em;
  line-height: 1.34;
}

.project-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px 28px;
  margin-top: 32px;
  padding-top: 18px;
  border-top: 1px solid var(--fwm-line);
  font-size: 13px;
  line-height: 1.35;
  text-transform: uppercase;
  letter-spacing: .04em;
}

.project-meta dt {
  color: var(--fwm-muted);
}

.project-meta dd {
  margin: 4px 0 0;
}

.work-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 24px;
  margin: 0 0 clamp(24px, 4vw, 52px);
  padding-bottom: 14px;
  border-bottom: 1px solid var(--fwm-line);
}

.work-count {
  font-size: 12px;
  letter-spacing: .045em;
  text-transform: uppercase;
}

.view-switcher {
  display: flex;
  gap: 16px;
}

.view-switcher button {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--fwm-muted);
  font-size: 12px;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.view-switcher button[aria-pressed="true"] {
  color: var(--fwm-text);
  text-decoration: underline;
  text-underline-offset: 4px;
}

.project-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(34px, 5vw, 86px) clamp(18px, 2.4vw, 40px);
}

.project-card {
  grid-column: span 6;
}

.project-card:nth-child(5n + 1) {
  grid-column: span 7;
}

.project-card:nth-child(5n + 2) {
  grid-column: 9 / span 4;
  align-self: end;
}

.project-card:nth-child(5n + 3) {
  grid-column: 2 / span 4;
}

.project-card:nth-child(5n + 4) {
  grid-column: 7 / span 6;
}

.project-card-link {
  display: block;
  text-decoration: none;
}

.project-card-media {
  margin: 0 0 13px;
  overflow: hidden;
  background: var(--fwm-surface);
}

.project-card-media img {
  width: 100%;
  height: auto;
  transition: transform 700ms var(--fwm-ease), filter 380ms ease;
}

.project-card-link:hover img,
.project-card-link:focus-visible img {
  transform: scale(1.014);
  filter: saturate(.92);
}

.project-card-caption {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  font-size: 13px;
  line-height: 1.25;
  letter-spacing: .012em;
}

.project-card-title {
  font-weight: 500;
}

.project-card-year {
  color: var(--fwm-muted);
  white-space: nowrap;
}

.project-index {
  display: none;
  border-top: 1px solid var(--fwm-line);
}

.project-index-row {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(150px, .5fr) minmax(70px, .2fr);
  gap: 20px;
  padding: 13px 0 12px;
  border-bottom: 1px solid var(--fwm-line);
  text-decoration: none;
  font-size: clamp(16px, 1.2vw, 21px);
  letter-spacing: -.012em;
}

.project-index-row span:nth-child(2),
.project-index-row span:nth-child(3) {
  color: var(--fwm-muted);
}

.work-archive[data-view="index"] .project-grid {
  display: none;
}

.work-archive[data-view="index"] .project-index {
  display: block;
}

.entry-content {
  max-width: var(--fwm-reading);
}

.entry-content,
.project-content {
  font-family: var(--fwm-serif);
  font-size: clamp(18px, 1.08vw, 21px);
  letter-spacing: -.008em;
  line-height: 1.52;
}

.entry-content h1,
.entry-content h2,
.entry-content h3,
.entry-content h4,
.project-content h1,
.project-content h2,
.project-content h3,
.project-content h4 {
  font-family: var(--fwm-sans);
  font-weight: 400;
  letter-spacing: -.038em;
  line-height: 1.04;
}

.entry-content blockquote,
.project-content blockquote {
  font-style: italic;
}

.entry-content > * {
  margin-top: 0;
  margin-bottom: 1.4em;
}

.entry-content > .alignwide,
.project-content > .alignwide {
  width: min(var(--fwm-max), calc(100vw - 2 * var(--fwm-gutter)));
  max-width: none;
  margin-left: 50%;
  transform: translateX(-50%);
}

.entry-content > .alignfull,
.project-content > .alignfull {
  width: 100vw;
  max-width: none;
  margin-left: 50%;
  transform: translateX(-50%);
}

.project-content {
  max-width: 100%;
}

.project-content > * {
  margin-top: 0;
  margin-bottom: clamp(30px, 6vw, 110px);
}

.project-content > p,
.project-content > h2,
.project-content > h3,
.project-content > ul,
.project-content > ol,
.project-content > blockquote {
  max-width: var(--fwm-reading);
  margin-left: auto;
  margin-right: auto;
}

.wp-block-image img,
.wp-block-gallery img,
.wp-block-video video {
  width: 100%;
}

.wp-block-columns {
  gap: clamp(18px, 2.4vw, 40px);
}


.site-footer {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 30px;
  padding: 22px var(--fwm-gutter) 28px;
  border-top: 1px solid var(--fwm-line);
  font-size: 12px;
  letter-spacing: .035em;
  text-transform: uppercase;
}

.home .site-footer {
  display: none;
}

.footer-navigation ul {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 18px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.footer-navigation a {
  text-decoration: none;
}

.site-footer-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 10px 24px;
}

.footer-legal-navigation ul {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 18px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.footer-legal-navigation a {
  color: inherit;
  text-decoration: none;
}

.footer-legal-navigation a::after {
  content: "↗";
  display: inline-block;
  margin-inline-start: .24em;
  color: currentColor;
  font-family: var(--fwm-sans);
  font-size: .72em;
  font-style: normal;
  font-weight: 500;
  line-height: 1;
  vertical-align: .16em;
  opacity: .82;
  transform: translate3d(0, 0, 0);
  transition:
    transform 180ms cubic-bezier(.22, .61, .36, 1),
    opacity 180ms ease;
}

.footer-legal-navigation a:hover::after,
.footer-legal-navigation a:focus-visible::after {
  opacity: 1;
  transform: translate3d(.13em, -.13em, 0);
}

@media (prefers-reduced-motion: reduce) {
  .footer-legal-navigation a::after {
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   0.12.3 — Info page: A little more + editorial FAQ accordion
   -------------------------------------------------------------------------- */

.info-closing {
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(56px, 7vw, 120px) clamp(18px, 2.4vw, 40px);
}

.info-closing-column {
  grid-column: 1 / span 5;
}

.info-closing-column .info-section-label,
.info-faq .info-section-label {
  margin: 0 0 clamp(28px, 3vw, 46px);
}

.info-closing-copy {
  max-width: 52ch;
  font-size: var(--fwm-info-copy-size);
  line-height: 1.48;
}

.info-faq {
  grid-column: 7 / -1;
  min-width: 0;
}

.info-faq-list {
  border-top: 1px solid var(--fwm-line);
}

.info-faq-item {
  border-bottom: 1px solid var(--fwm-line);
}

.info-faq-item summary {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) 20px;
  align-items: baseline;
  gap: 14px;
  padding: 16px 0 17px;
  color: var(--fwm-text);
  cursor: pointer;
  list-style: none;
}

.info-faq-item summary::-webkit-details-marker {
  display: none;
}

.info-faq-number {
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: 10px;
  letter-spacing: .055em;
}

.info-faq-question {
  font-family: var(--fwm-sans);
  font-size: clamp(14px, .92vw, 17px);
  font-weight: 500;
  letter-spacing: -.006em;
  line-height: 1.35;
}

.info-faq-arrow {
  color: var(--fwm-accent);
  font-family: var(--fwm-sans);
  font-size: 13px;
  line-height: 1;
  text-align: right;
  transform: rotate(0deg);
  transform-origin: center;
  transition: transform 320ms var(--fwm-ease);
}

.info-faq-item[open] .info-faq-arrow {
  transform: rotate(-90deg);
}

.info-faq-answer {
  max-width: 58ch;
  padding: 0 34px clamp(24px, 3vw, 42px) 48px;
  color: var(--fwm-muted);
  font-family: var(--fwm-serif);
  font-size: var(--fwm-info-copy-size);
  letter-spacing: -.006em;
  line-height: 1.5;
}

.info-faq-answer p {
  margin: 0 0 1em;
}

.info-faq-answer p:last-child {
  margin-bottom: 0;
}

.info-faq-item summary:hover .info-faq-question,
.info-faq-item summary:focus-visible .info-faq-question {
  color: var(--fwm-accent);
}

.info-faq-item summary:focus-visible {
  outline: 1px solid var(--fwm-accent);
  outline-offset: 4px;
}

@media (max-width: 900px) {
  .info-closing-column {
    grid-column: 1 / span 5;
  }

  .info-faq {
    grid-column: 6 / -1;
  }
}

@media (max-width: 700px) {
  .info-closing {
    grid-template-columns: 1fr;
  }

  .info-closing-column,
  .info-faq {
    grid-column: 1;
  }

  .info-faq-answer {
    padding-left: 48px;
    padding-right: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .info-faq-arrow {
    transition: none;
  }
}

.fwm-cursor {
  position: fixed;
  z-index: 9998;
  left: 0;
  top: 0;
  width: 22px;
  height: 22px;
  margin: -11px 0 0 -11px;
  border-radius: 50%;
  background: #fff;
  mix-blend-mode: difference;
  filter: blur(5px);
  pointer-events: none;
  opacity: 0;
  transform: translate3d(-100px, -100px, 0);
  transition: width 180ms ease, height 180ms ease, margin 180ms ease,
              filter 180ms ease, opacity 180ms ease;
}

.fwm-cursor.is-visible {
  opacity: 1;
}

.fwm-cursor.is-link {
  width: 12px;
  height: 12px;
  margin: -6px 0 0 -6px;
  filter: blur(0);
}

body.admin-bar .site-header {
  top: 32px;
}

body.admin-bar.home .site-header {
  min-height: calc(100svh - 32px);
}

@media (max-width: 782px) {
  body.admin-bar .site-header {
    top: 46px;
  }

  body.admin-bar.home .site-header {
    min-height: calc(100svh - 46px);
  }
}

@media (pointer: fine) {
  html.fwm-custom-cursor,
  html.fwm-custom-cursor body,
  html.fwm-custom-cursor a,
  html.fwm-custom-cursor button,
  html.fwm-custom-cursor summary {
    cursor: none;
  }

  html.fwm-custom-cursor input,
  html.fwm-custom-cursor textarea,
  html.fwm-custom-cursor select {
    cursor: text;
  }
}

@media (max-width: 860px) {
  .site-header {
    min-height: 64px;
  }

  .site-branding {
    font-size: 11px;
  }

  .primary-navigation ul {
    gap: .35em 1.05em;
  }

  .primary-navigation a {
    font-size: 11px;
  }

  .page-header,
  .project-header {
    grid-template-columns: 1fr;
    gap: 38px;
  }

  .work-archive .page-header {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
  }

  .work-archive .page-title {
    grid-column: 1;
  }

  .work-archive .page-intro {
    grid-column: 2;
  }

  .project-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 44px 18px;
  }

  .project-card,
  .project-card:nth-child(n) {
    grid-column: auto;
  }
}

@media (max-width: 620px) {
  :root {
    --fwm-gutter: 16px;
  }

  .site-branding {
    top: 17px;
  }

  .nav-stage,
  .home.is-leaving .nav-stage {
    top: 58px;
    width: calc(100vw - 32px);
  }

  .home .site-branding {
    top: 18px;
    transform: none;
  }

  .home .custom-logo {
    width: 54px;
  }

  .home .nav-stage {
    top: 50%;
    left: var(--fwm-gutter);
    width: calc(100vw - 2 * var(--fwm-gutter));
    transform: translateY(-50%);
  }

  .home .primary-navigation ul {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 28px;
  }

  .home .primary-navigation li:last-child {
    text-align: left;
  }

  .home.is-leaving .nav-stage {
    left: 50%;
    transform: translate(-50%, 0);
  }

  body:not(.home) .primary-navigation ul {
    justify-content: flex-end;
  }

  body:not(.home) .site-branding {
    max-width: 42vw;
  }

  body:not(.home) .custom-logo {
    width: 34px;
  }

  .home-intro {
    max-width: min(88vw, 430px);
    margin: 28px 0 0;
    font-size: 15px;
    line-height: 1.42;
  }

  .site-main {
    padding-top: 126px;
  }

  .page-title,
  .project-title {
    font-size: clamp(44px, 17vw, 74px);
  }


  .work-archive .page-header {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .work-archive .page-title,
  .work-archive .page-intro {
    grid-column: 1;
  }

  .project-grid {
    grid-template-columns: 1fr;
    gap: 42px;
  }

  .project-index-row {
    grid-template-columns: minmax(0, 1fr) 64px;
  }

  .project-index-row span:nth-child(2) {
    display: none;
  }

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

  .site-footer {
    align-items: flex-start;
    flex-direction: column;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }

  .fwm-cursor {
    display: none;
  }
}


/* The interface stays precise; the prose carries the editorial counterpoint. */
.site-header,
.page-title,
.project-title,
.project-meta,
.work-toolbar,
.project-card-caption,
.project-index,
.project-navigation,
.site-footer {
  font-family: var(--fwm-sans);
}

/* --------------------------------------------------------------------------
   Project pages — image viewer with thumbnail navigation
   -------------------------------------------------------------------------- */

.single-project .site-main {
  width: 100%;
  max-width: none;
  padding: clamp(78px, 7vw, 108px) var(--fwm-gutter) clamp(70px, 8vw, 130px);
}

.project-viewer {
  --fwm-viewer-side: clamp(92px, 10vw, 170px);
  --fwm-viewer-thumbs: clamp(180px, 22vw, 390px);
  width: 100%;
}

.project-viewer-stage {
  position: relative;
  display: grid;
  grid-template-columns: var(--fwm-viewer-side) minmax(0, 1fr) var(--fwm-viewer-thumbs);
  align-items: center;
  min-height: max(560px, calc(100svh - 238px));
  border-top: 1px solid var(--fwm-line);
}

.project-viewer-counter {
  grid-column: 1;
  align-self: center;
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .055em;
  line-height: 1;
  white-space: nowrap;
}

.project-viewer-canvas {
  position: relative;
  grid-column: 2;
  width: 100%;
  height: min(68svh, 760px);
  min-height: 430px;
}

.project-slide {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  margin: 0;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(7px);
  transition: opacity 360ms ease, transform 520ms var(--fwm-ease), visibility 0s linear 520ms;
}

.project-slide.is-active {
  z-index: 2;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: none;
  transition-delay: 0s;
}

.project-slide img {
  width: auto;
  height: auto;
  max-width: min(64vw, 1040px);
  max-height: min(68svh, 760px);
  object-fit: contain;
}

.project-slide--portrait img {
  max-width: min(48vw, 720px);
}

.project-slide figcaption {
  position: absolute;
  left: 50%;
  bottom: -24px;
  width: min(64vw, 1040px);
  transform: translateX(-50%);
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: 10px;
  letter-spacing: .02em;
  line-height: 1.35;
  text-align: left;
}

.project-viewer-thumbnails {
  grid-column: 3;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: clamp(7px, .65vw, 11px);
  min-width: 0;
  padding-left: clamp(18px, 2vw, 34px);
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scroll-snap-type: inline proximity;
  scrollbar-width: none;
}

.project-viewer-thumbnails::-webkit-scrollbar {
  display: none;
}

.project-thumbnail {
  flex: 0 0 auto;
  width: auto;
  height: auto;
  padding: 0;
  border: 0;
  background: transparent;
  opacity: .48;
  scroll-snap-align: center;
  transition: opacity 180ms ease, transform 240ms var(--fwm-ease);
}

.project-thumbnail:first-child {
  margin-left: auto;
}

.project-thumbnail img {
  display: block;
  width: auto;
  height: clamp(40px, 3vw, 52px);
  max-width: none;
  object-fit: contain;
}

.project-thumbnail:hover,
.project-thumbnail:focus-visible,
.project-thumbnail[aria-current="true"] {
  opacity: 1;
}

.project-thumbnail[aria-current="true"] {
  transform: translateY(-3px);
}

.project-viewer-arrow {
  position: absolute;
  z-index: 6;
  top: 50%;
  width: 42px;
  height: 42px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--fwm-text);
  font-family: var(--fwm-sans);
  font-size: 17px;
  line-height: 1;
  opacity: .52;
  transform: translateY(-50%);
  transition: opacity 180ms ease, transform 220ms var(--fwm-ease);
}

.project-viewer-arrow:hover,
.project-viewer-arrow:focus-visible {
  opacity: 1;
}

.project-viewer-arrow--previous {
  left: calc(var(--fwm-viewer-side) - 10px);
}

.project-viewer-arrow--next {
  right: calc(var(--fwm-viewer-thumbs) - 10px);
}

.project-viewer-arrow--previous:hover,
.project-viewer-arrow--previous:focus-visible {
  transform: translate(-3px, -50%);
}

.project-viewer-arrow--next:hover,
.project-viewer-arrow--next:focus-visible {
  transform: translate(3px, -50%);
}

.project-viewer[data-count="1"] .project-viewer-arrow,
.project-viewer[data-count="1"] .project-viewer-thumbnails,
.project-viewer[data-count="1"] .project-viewer-counter {
  display: none;
}

.project-information-bar {
  display: grid;
  grid-template-columns: minmax(180px, 1.45fr) repeat(3, minmax(110px, .65fr)) minmax(150px, .72fr);
  gap: clamp(18px, 3vw, 54px);
  align-items: start;
  min-height: 100px;
  padding: 18px 0 20px;
  border-top: 1px solid var(--fwm-line);
  border-bottom: 1px solid var(--fwm-line);
  font-family: var(--fwm-sans);
}

.project-information-title {
  grid-column: 1;
  margin: 0;
  color: var(--fwm-text);
  font-family: var(--fwm-serif);
  font-size: clamp(18px, 1.25vw, 23px);
  font-style: italic;
  font-weight: 400;
  letter-spacing: -.015em;
  line-height: 1.25;
}

.project-information-item--client { grid-column: 2; }
.project-information-item--year { grid-column: 3; }
.project-information-item--type { grid-column: 4; }

.project-information-item dt {
  margin: 0 0 6px;
  color: var(--fwm-muted);
  font-size: 9px;
  font-weight: 500;
  letter-spacing: .07em;
  line-height: 1.2;
  text-transform: uppercase;
}

.project-information-item dd {
  margin: 0;
  font-family: var(--fwm-serif);
  font-size: 15px;
  letter-spacing: -.008em;
  line-height: 1.35;
}

.project-information-toggle {
  grid-column: 5;
  justify-self: end;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--fwm-text);
  font-family: var(--fwm-sans);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .055em;
  line-height: 1.3;
  text-align: right;
  text-decoration: none;
  text-transform: uppercase;
}

.project-information-toggle:hover,
.project-information-toggle:focus-visible {
  text-decoration: underline;
  text-underline-offset: 4px;
}

.project-details {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(26px, 3vw, 52px);
  min-height: 0;
  padding: clamp(62px, 7vw, 112px) 0 clamp(62px, 7vw, 112px);
  border-bottom: 0;
  scroll-margin-top: clamp(82px, 8vw, 118px);
}

.project-details:focus {
  outline: none;
}

.project-details-copy {
  grid-column: 2 / span 6;
  align-self: start;
}

.project-details-intro {
  max-width: 46ch;
  font-family: var(--fwm-serif);
  font-size: clamp(18px, 1.2vw, 22px);
  letter-spacing: -.012em;
  line-height: 1.42;
  text-wrap: pretty;
}

.project-details-intro > *:first-child,
.project-details-content > *:first-child {
  margin-top: 0;
}

.project-details-intro > *:last-child,
.project-details-content > *:last-child {
  margin-bottom: 0;
}

.project-details-content {
  max-width: 58ch;
  margin-top: clamp(34px, 4vw, 68px);
  font-family: var(--fwm-serif);
  font-size: clamp(15px, .95vw, 18px);
  letter-spacing: -.004em;
  line-height: 1.62;
}

.project-details-content:only-child {
  margin-top: 0;
}

.project-details-content > * {
  margin-top: 0;
  margin-bottom: 1.35em;
}

.project-details-facts {
  grid-column: 9 / -1;
  align-self: start;
  display: grid;
  gap: clamp(30px, 3vw, 52px);
  padding-top: 4px;
}

.project-detail-fact {
  display: grid;
  grid-template-columns: minmax(78px, .75fr) minmax(0, 1.75fr);
  gap: 18px;
  margin: 0;
  padding-top: 12px;
  border-top: 1px solid var(--fwm-line);
}

.project-detail-fact dt {
  margin: 0;
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: 9px;
  font-weight: 500;
  letter-spacing: .07em;
  line-height: 1.35;
  text-transform: uppercase;
}

.project-detail-fact dd {
  margin: 0;
  font-family: var(--fwm-serif);
  font-size: clamp(14px, .9vw, 17px);
  letter-spacing: -.006em;
  line-height: 1.5;
}



@media (max-width: 980px) {
  .project-viewer {
    --fwm-viewer-side: 76px;
    --fwm-viewer-thumbs: 190px;
  }

  .project-viewer-stage {
    min-height: max(520px, calc(100svh - 225px));
  }

  .project-slide img {
    max-width: 66vw;
  }

  .project-slide--portrait img {
    max-width: 51vw;
  }

  .project-information-bar {
    grid-template-columns: minmax(180px, 1.4fr) repeat(2, minmax(100px, .6fr)) minmax(140px, .7fr);
  }

  .project-information-item--client { grid-column: 2; }
  .project-information-item--year { grid-column: 3; }
  .project-information-item--type { display: none; }
  .project-information-toggle { grid-column: 4; }

  .project-details-copy {
    grid-column: 1 / span 7;
  }

  .project-details-facts {
    grid-column: 9 / -1;
  }

  .project-detail-fact {
    grid-template-columns: 1fr;
    gap: 7px;
  }
}

@media (max-width: 720px) {
  .single-project .site-main {
    padding-top: 112px;
  }

  .project-viewer-stage {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 0;
    padding: 28px 0 20px;
  }

  .project-viewer-canvas {
    order: 1;
    width: 100%;
    height: min(62svh, 620px);
    min-height: 380px;
  }

  .project-slide img,
  .project-slide--portrait img {
    max-width: 92vw;
    max-height: min(62svh, 620px);
  }

  .project-viewer-counter {
    position: absolute;
    z-index: 7;
    left: 0;
    top: 18px;
  }

  .project-viewer-thumbnails {
    order: 2;
    width: 100%;
    justify-content: flex-start;
    padding: 20px 0 0;
  }

  .project-thumbnail {
    width: auto;
    height: auto;
  }

  .project-thumbnail img {
    width: auto;
    height: 58px;
  }

  .project-viewer-arrow {
    top: calc(50% - 20px);
  }

  .project-viewer-arrow--previous {
    left: -8px;
  }

  .project-viewer-arrow--next {
    right: -8px;
  }

  .project-information-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px 18px;
    min-height: 0;
    padding: 18px 0 22px;
  }

  .project-information-title {
    grid-column: 1 / -1;
    font-size: 21px;
  }

  .project-information-item--client,
  .project-information-item--year,
  .project-information-item--type,
  .project-information-toggle {
    grid-column: auto;
  }

  .project-information-item--type {
    display: block;
  }

  .project-information-toggle {
    justify-self: start;
    align-self: end;
    text-align: left;
  }

  .project-details {
    grid-template-columns: 1fr;
    min-height: 0;
    padding: 54px 0 82px;
  }

  .project-details-copy,
  .project-details-facts {
    grid-column: 1;
  }

  .project-details-content {
    margin-top: 28px;
  }

  .project-details-facts {
    margin-top: 46px;
  }

  .project-detail-fact {
    grid-template-columns: 92px minmax(0, 1fr);
  }
}

@media (prefers-reduced-motion: reduce) {
  .project-slide {
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   Project pages — dual slider / masonry view and directional cursor
   -------------------------------------------------------------------------- */

.project-view-switcher {
  position: absolute;
  z-index: 12;
  top: 18px;
  right: 0;
  display: flex;
  gap: 15px;
  font-family: var(--fwm-sans);
}

.project-view-switcher button {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--fwm-muted);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .055em;
  line-height: 1.2;
  text-transform: uppercase;
  text-decoration: none;
  text-underline-offset: 4px;
}

.project-view-switcher button:hover,
.project-view-switcher button:focus-visible,
.project-view-switcher button[aria-pressed="true"] {
  color: var(--fwm-text);
  text-decoration: underline;
}

.project-viewer-canvas {
  isolation: isolate;
}

.project-viewer-arrow {
  top: 0;
  bottom: 0;
  width: 50%;
  height: 100%;
  padding: 0;
  opacity: 1;
  transform: none;
  background: transparent;
}

.project-viewer-arrow--previous {
  left: 0;
  right: auto;
}

.project-viewer-arrow--next {
  left: auto;
  right: 0;
}

.project-viewer-arrow:hover,
.project-viewer-arrow:focus-visible,
.project-viewer-arrow--previous:hover,
.project-viewer-arrow--previous:focus-visible,
.project-viewer-arrow--next:hover,
.project-viewer-arrow--next:focus-visible {
  opacity: 1;
  transform: none;
}

.project-viewer-arrow span {
  position: absolute;
  top: 50%;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border: 1px solid rgba(17, 17, 17, .28);
  border-radius: 50%;
  background: rgba(251, 250, 242, .82);
  color: var(--fwm-text);
  font-size: 18px;
  line-height: 1;
  transform: translateY(-50%);
  -webkit-backdrop-filter: blur(7px);
  backdrop-filter: blur(7px);
  transition: transform 220ms var(--fwm-ease), border-color 180ms ease, background-color 180ms ease;
}

.project-viewer-arrow--previous span {
  left: clamp(6px, 1.35vw, 24px);
}

.project-viewer-arrow--next span {
  right: clamp(6px, 1.35vw, 24px);
}

.project-viewer-arrow--previous:hover span,
.project-viewer-arrow--previous:focus-visible span {
  border-color: rgba(17, 17, 17, .62);
  background: rgba(251, 250, 242, .96);
  transform: translate(-4px, -50%);
}

.project-viewer-arrow--next:hover span,
.project-viewer-arrow--next:focus-visible span {
  border-color: rgba(17, 17, 17, .62);
  background: rgba(251, 250, 242, .96);
  transform: translate(4px, -50%);
}

.fwm-cursor::after {
  content: "";
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  font-family: var(--fwm-sans);
  font-size: 19px;
  font-weight: 400;
  line-height: 1;
}

.fwm-cursor.is-directional {
  width: 44px;
  height: 44px;
  margin: -22px 0 0 -22px;
  border: 1px solid #fff;
  background: transparent;
  filter: blur(0);
}

.fwm-cursor.is-directional.is-previous::after {
  content: "←";
}

.fwm-cursor.is-directional.is-next::after {
  content: "→";
}

.project-viewer .project-grid[hidden] {
  display: none;
}

.project-viewer .project-grid {
  --fwm-masonry-gap: clamp(12px, 1.15vw, 22px);
  --fwm-masonry-row-gap: clamp(16px, 1.45vw, 28px);
  column-gap: var(--fwm-masonry-gap);
  row-gap: var(--fwm-masonry-row-gap);
  position: relative;
  grid-column: 1 / -1;
  width: 100%;
  min-height: 240px;
  margin: clamp(82px, 9vw, 145px) 0 clamp(68px, 7vw, 118px);
  opacity: 0;
  transition: opacity 280ms ease;
}

.project-viewer .project-grid.is-laid-out {
  opacity: 1;
}

.project-viewer .project-grid-item {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  margin: 0;
  outline: none;
  cursor: pointer;
  transition: transform 520ms var(--fwm-ease), opacity 220ms ease;
}

.project-viewer .project-grid-item img {
  width: 100%;
  height: auto;
}

.project-viewer .project-grid-item figcaption {
  margin-top: 8px;
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: 10px;
  letter-spacing: .02em;
  line-height: 1.35;
}

.project-viewer .project-grid-item:hover,
.project-viewer .project-grid-item:focus-visible {
  opacity: .78;
}

.project-viewer[data-view="grid"] .project-viewer-stage {
  display: block;
  min-height: 0;
  padding-top: 1px;
}

.project-viewer[data-view="grid"] .project-viewer-counter,
.project-viewer[data-view="grid"] .project-viewer-canvas,
.project-viewer[data-view="grid"] .project-viewer-thumbnails {
  display: none;
}

@media (max-width: 720px) {
  .project-view-switcher {
    top: 16px;
  }

  .project-viewer-arrow span {
    width: 40px;
    height: 40px;
    font-size: 16px;
  }

  .project-viewer-arrow--previous span {
    left: 2px;
  }

  .project-viewer-arrow--next span {
    right: 2px;
  }

  .project-viewer .project-grid {
    --fwm-masonry-gap: 0px;
    --fwm-masonry-row-gap: clamp(18px, 5vw, 30px);
    margin-top: 68px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .project-viewer .project-grid,
  .project-viewer .project-grid-item,
  .project-viewer-arrow span,
  .fwm-cursor {
    transition: none;
  }
}


/* --------------------------------------------------------------------------
   0.7.1 — desktop gallery navigation: cursor only, no duplicated arrows
   -------------------------------------------------------------------------- */

/* The half-canvas buttons remain fully clickable and keyboard-accessible. */
@media (pointer: fine) and (min-width: 721px) {
  .project-viewer-arrow span {
    opacity: 0;
    visibility: hidden;
    border: 0;
    background: transparent;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    transition: opacity 140ms ease, visibility 140ms ease;
  }

  /* Keyboard users still receive a visible, unframed navigation cue. */
  .project-viewer-arrow:focus-visible span {
    opacity: 1;
    visibility: visible;
    width: 34px;
    height: 34px;
    border: 0;
    background: transparent;
    font-size: 22px;
  }
}

.fwm-cursor.is-directional {
  width: 38px;
  height: 38px;
  margin: -19px 0 0 -19px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: #fff;
  filter: none;
}

.fwm-cursor.is-directional::after {
  font-size: 27px;
  font-weight: 400;
  opacity: .78;
  filter: blur(2.2px);
  transform: scale(.94);
  transition: filter 110ms ease, opacity 110ms ease, transform 110ms ease;
}

.fwm-cursor.is-directional.is-pressed::after {
  opacity: 1;
  filter: blur(0);
  transform: scale(1);
}

@media (prefers-reduced-motion: reduce) {
  .fwm-cursor.is-directional::after {
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   0.9.4 — Work index preview: stable, delayed and stationary
   -------------------------------------------------------------------------- */

.project-index-row {
  position: relative;
  transition: opacity 180ms ease;
}

.project-index-title {
  display: inline-block;
  transition: transform 260ms var(--fwm-ease);
}

.project-index-row:hover .project-index-title,
.project-index-row:focus-visible .project-index-title {
  transform: translateX(8px);
}

.project-index-preview {
  position: fixed;
  z-index: 45;
  left: clamp(110px, 14vw, 280px);
  top: clamp(132px, 16vh, 180px);
  width: 0;
  height: 0;
  margin: 0;
  overflow: hidden;
  background: var(--fwm-surface);
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transform: translate3d(0, 0, 0) scale(.985);
  transform-origin: center;
  will-change: opacity, transform;
  transition: opacity 220ms ease, transform 420ms var(--fwm-ease), visibility 0s linear 260ms;
}

.project-index-preview.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translate3d(0, 0, 0) scale(1);
  transition-delay: 0s;
}

.project-index-preview.is-navigating {
  opacity: 0 !important;
  visibility: hidden !important;
  transition: none !important;
}

.project-index-preview img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  opacity: .9;
  filter: blur(5px);
  transform: scale(1.012);
  will-change: filter, transform, opacity;
  transition: opacity 260ms ease, filter 560ms var(--fwm-ease), transform 560ms var(--fwm-ease);
}

.project-index-preview.is-focused img {
  opacity: 1;
  filter: blur(1px);
  transform: scale(1);
}

.work-archive:not([data-view="index"]) .project-index-preview {
  display: none;
}

@media (hover: none), (pointer: coarse), (max-width: 980px) {
  .project-index-preview {
    display: none !important;
  }

  .project-index-row:hover .project-index-title,
  .project-index-row:focus-visible .project-index-title {
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .project-index-preview,
  .project-index-preview img,
  .project-index-title,
  .project-index-row {
    transition: none;
  }

  .project-index-preview img,
  .project-index-preview.is-focused img {
    opacity: 1;
    filter: blur(1px);
    transform: none;
  }
}


/* --------------------------------------------------------------------------
   0.9.0 — FWM colour system: paper, graphite and restrained oxide accents
   -------------------------------------------------------------------------- */

:where(a, button, input, textarea, select):focus-visible {
  outline: 1px solid var(--fwm-accent);
  outline-offset: 4px;
}

body:not(.home) .primary-navigation .current-menu-item > a,
body:not(.home) .primary-navigation .current_page_item > a,
body:not(.home) .primary-navigation a:hover,
body:not(.home) .primary-navigation a:focus-visible {
  text-decoration-color: var(--fwm-accent);
}

.view-switcher button:hover,
.view-switcher button:focus-visible,
.view-switcher button[aria-pressed="true"],
.project-view-switcher button:hover,
.project-view-switcher button:focus-visible,
.project-view-switcher button[aria-pressed="true"] {
  color: var(--fwm-accent);
  text-decoration-color: var(--fwm-accent);
}

.work-count,
.project-viewer-counter,
.project-information-item dt,

.project-card-link:hover .project-card-title,
.project-card-link:focus-visible .project-card-title,
.project-index-row:hover .project-index-title,
.project-index-row:focus-visible .project-index-title,
.project-information-toggle:hover,
.project-information-toggle:focus-visible,
.footer-navigation a:hover,
.footer-navigation a:focus-visible {
  color: var(--fwm-accent);
}

.project-index-row:hover,
.project-index-row:focus-visible {
  border-bottom-color: var(--fwm-accent);
}

.project-index-row:hover span:nth-child(3),
.project-index-row:focus-visible span:nth-child(3) {
  color: var(--fwm-accent-2);
}

.project-thumbnail {
  position: relative;
}

.project-thumbnail::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -8px;
  height: 1px;
  background: var(--fwm-accent);
  opacity: 0;
  transform: scaleX(.35);
  transform-origin: center;
  transition: opacity 180ms ease, transform 260ms var(--fwm-ease);
}

.project-thumbnail[aria-current="true"]::after {
  opacity: 1;
  transform: scaleX(1);
}

.project-detail-fact dt {
  color: var(--fwm-accent);
}

.project-card-media,
.project-index-preview {
  background: var(--fwm-surface);
}

@media (prefers-reduced-motion: reduce) {
  .project-thumbnail::after {
    transition: none;
  }
}


/* --------------------------------------------------------------------------
   0.9.4 — Work archive: quiet intro
   -------------------------------------------------------------------------- */

.screen-reader-text {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.work-archive .page-header .screen-reader-text + .page-intro {
  grid-column: 7 / span 5;
}

@media (max-width: 820px) {
  .work-archive .page-header .screen-reader-text + .page-intro {
    grid-column: 2;
  }
}

@media (max-width: 620px) {
  .work-archive .page-header .screen-reader-text + .page-intro {
    grid-column: 1;
  }
}


/* --------------------------------------------------------------------------
   0.10.0 — Info page: editorial register and horizontal BTS contact sheet
   -------------------------------------------------------------------------- */

.info-page.site-main {
  width: min(var(--fwm-max), 100%);
  max-width: none;
  padding-top: clamp(142px, 15vw, 230px);
  padding-bottom: clamp(72px, 8vw, 122px);
}

.info-hero {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(18px, 2.4vw, 40px);
  align-items: start;
  margin-bottom: clamp(72px, 10vw, 158px);
}

.info-title {
  grid-column: 1 / span 2;
  margin: .35em 0 0;
  color: var(--fwm-accent);
  font-family: var(--fwm-sans);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .07em;
  line-height: 1.2;
  text-transform: uppercase;
}

.info-intro {
  grid-column: 6 / -1;
  max-width: 920px;
  font-family: var(--fwm-serif);
  font-size: clamp(27px, 3.15vw, 54px);
  letter-spacing: -.03em;
  line-height: .94;
  text-wrap: balance;
}

.info-intro > * {
  margin: 0;
}

.info-section-label {
  color: var(--fwm-accent);
  font-family: var(--fwm-sans);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .075em;
  line-height: 1.2;
  text-transform: uppercase;
}

.info-bts {
  margin-bottom: clamp(86px, 11vw, 170px);
}

.info-bts-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 20px;
  margin-bottom: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--fwm-line);
}

.info-bts-hint {
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: 10px;
  letter-spacing: .045em;
  text-transform: uppercase;
}

.info-bts-track {
  display: flex;
  align-items: stretch;
  gap: clamp(12px, 1.35vw, 24px);
  width: 100%;
  padding: 0 0 14px;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scroll-snap-type: inline proximity;
  scrollbar-width: thin;
  scrollbar-color: var(--fwm-line) transparent;
  cursor: grab;
  touch-action: pan-x;
}

.info-bts-track.is-dragging {
  cursor: grabbing;
  scroll-snap-type: none;
  user-select: none;
}

.info-bts-track:focus-visible {
  outline-offset: 8px;
}

.info-bts-image {
  flex: 0 0 auto;
  height: clamp(220px, 29vw, 470px);
  margin: 0;
  scroll-snap-align: start;
  background: var(--fwm-surface);
}

.info-bts-image img {
  width: auto;
  height: 100%;
  max-width: none;
  object-fit: contain;
}

.info-register {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(54px, 7vw, 120px) clamp(18px, 2.4vw, 40px);
  margin-bottom: clamp(90px, 12vw, 180px);
}

.info-register-block {
  padding-top: 15px;
  border-top: 1px solid var(--fwm-line);
}

.info-register-block--practice {
  grid-column: 1 / span 4;
}

.info-register-block--contact {
  grid-column: 8 / -1;
}

.info-register-block--awards {
  grid-column: 1 / span 7;
}

.info-register-block--exhibitions {
  grid-column: 8 / -1;
}

.info-register-block--memberships {
  grid-column: 8 / -1;
}

.info-register-heading {
  margin: 0 0 clamp(24px, 3vw, 46px);
  color: var(--fwm-accent);
  font-family: var(--fwm-sans);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .075em;
  line-height: 1.2;
  text-transform: uppercase;
}

.info-practice-list,
.info-contact-list,
.info-membership-list,
.info-register-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.info-practice-list {
  font-family: var(--fwm-serif);
  font-size: clamp(20px, 1.8vw, 31px);
  letter-spacing: -.02em;
  line-height: 1.25;
}

.info-practice-list li + li {
  margin-top: .12em;
}

.info-contact-list {
  display: grid;
  gap: 14px;
}

.info-contact-item {
  display: grid;
  grid-template-columns: minmax(84px, .7fr) minmax(0, 1.6fr);
  gap: 18px;
  align-items: baseline;
}

.info-contact-label {
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: 10px;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.info-contact-value {
  font-family: var(--fwm-serif);
  font-size: clamp(16px, 1.05vw, 20px);
  line-height: 1.35;
}

.info-contact-value a {
  text-decoration: none;
}

.info-contact-value a:hover,
.info-contact-value a:focus-visible {
  color: var(--fwm-accent);
}

.info-register-list {
  border-top: 1px solid var(--fwm-line);
}

.info-register-row {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(140px, .8fr);
  gap: 20px;
  padding: 13px 0 14px;
  border-bottom: 1px solid var(--fwm-line);
}

.info-register-row-title,
.info-membership-list {
  font-family: var(--fwm-serif);
  font-size: clamp(16px, 1.08vw, 20px);
  letter-spacing: -.008em;
  line-height: 1.35;
}

.info-register-row-detail {
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: 12px;
  line-height: 1.45;
  text-align: right;
}

.info-membership-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px 20px;
}

.info-closing {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(18px, 2.4vw, 40px);
  padding-top: 16px;
  border-top: 1px solid var(--fwm-line);
}

.info-closing .info-section-label {
  grid-column: 1 / span 2;
}

.info-closing-copy {
  grid-column: 4 / span 6;
  max-width: 58ch;
  font-family: var(--fwm-serif);
  font-size: clamp(18px, 1.25vw, 23px);
  letter-spacing: -.012em;
  line-height: 1.5;
}

.info-closing-copy > *:first-child {
  margin-top: 0;
}

.info-closing-copy > *:last-child {
  margin-bottom: 0;
}

@media (max-width: 900px) {
  .info-intro {
    grid-column: 5 / -1;
  }

  .info-register-block--practice,
  .info-register-block--awards {
    grid-column: 1 / span 6;
  }

  .info-register-block--contact,
  .info-register-block--exhibitions,
  .info-register-block--memberships {
    grid-column: 7 / -1;
  }

  .info-closing-copy {
    grid-column: 4 / -1;
  }
}

@media (max-width: 620px) {
  .info-page.site-main {
    padding-top: 132px;
  }

  .info-hero {
    grid-template-columns: 1fr;
    gap: 28px;
    margin-bottom: 74px;
  }

  .info-title,
  .info-intro {
    grid-column: 1;
  }

  .info-intro {
    font-size: clamp(28px, 9vw, 42px);
  }

  .info-bts {
    margin-bottom: 88px;
  }

  .info-bts-hint {
    display: none;
  }

  .info-bts-image {
    height: min(64vw, 330px);
  }

  .info-register {
    grid-template-columns: 1fr;
    gap: 58px;
    margin-bottom: 92px;
  }

  .info-register-block--practice,
  .info-register-block--contact,
  .info-register-block--awards,
  .info-register-block--exhibitions,
  .info-register-block--memberships {
    grid-column: 1;
  }

  .info-register-row {
    grid-template-columns: 1fr;
    gap: 5px;
  }

  .info-register-row-detail {
    text-align: left;
  }

  .info-membership-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .info-closing {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .info-closing .info-section-label,
  .info-closing-copy {
    grid-column: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .info-bts-track {
    scroll-behavior: auto;
  }
}


/* --------------------------------------------------------------------------
   0.10.1 — breathing room in project grid
   -------------------------------------------------------------------------- */

.project-viewer[data-view="grid"] .project-grid-item {
  background: transparent;
}


/* --------------------------------------------------------------------------
   0.10.2 — quieter Info page: smaller type and BTS at the end
   -------------------------------------------------------------------------- */

.info-page {
  --fwm-info-copy-size: clamp(18px, 1.28vw, 23px);
}

.info-hero {
  margin-bottom: clamp(64px, 8vw, 118px);
}

.info-intro {
  grid-column: 6 / span 5;
  max-width: 58ch;
  font-size: var(--fwm-info-copy-size);
  letter-spacing: -.012em;
  line-height: 1.48;
  text-wrap: pretty;
}

.info-register {
  margin-bottom: clamp(72px, 9vw, 132px);
}

.info-practice-list,
.info-contact-value,
.info-register-row-title,
.info-register-row-detail,
.info-membership-list,
.info-closing-copy {
  font-size: var(--fwm-info-copy-size);
  letter-spacing: -.01em;
  line-height: 1.45;
}

.info-register-row-detail {
  font-family: var(--fwm-serif);
  color: var(--fwm-muted);
}

.info-bts {
  margin-top: clamp(72px, 9vw, 132px);
  margin-bottom: 0;
}

.info-bts-image {
  height: clamp(160px, 20vw, 310px);
}

@media (max-width: 900px) {
  .info-intro {
    grid-column: 5 / -1;
  }
}

@media (max-width: 620px) {
  .info-page {
    --fwm-info-copy-size: clamp(17px, 4.8vw, 20px);
  }

  .info-intro {
    font-size: var(--fwm-info-copy-size);
    line-height: 1.48;
  }

  .info-bts {
    margin-top: 72px;
    margin-bottom: 0;
  }

  .info-bts-image {
    height: min(48vw, 240px);
  }
}


/* --------------------------------------------------------------------------
   0.10.3 — Safe links in project facts
   0.10.4 — Editorial arrow links
   -------------------------------------------------------------------------- */

:is(
  .project-detail-fact,
  .project-details-copy,
  .info-contact-value,
  .info-register-row,
  .info-closing-copy
) a {
  color: inherit;
  text-decoration: none;
}

:is(
  .project-detail-fact,
  .project-details-copy,
  .info-contact-value,
  .info-register-row,
  .info-closing-copy
) a::after {
  content: "↗";
  display: inline-block;
  margin-inline-start: .24em;
  color: currentColor;
  font-family: var(--fwm-sans);
  font-size: .72em;
  font-style: normal;
  font-weight: 500;
  line-height: 1;
  vertical-align: .16em;
  opacity: .82;
  transform: translate3d(0, 0, 0);
  transition:
    transform 180ms cubic-bezier(.22, .61, .36, 1),
    opacity 180ms ease;
}

:is(
  .project-detail-fact,
  .project-details-copy,
  .info-contact-value,
  .info-register-row,
  .info-closing-copy
) a:hover,
:is(
  .project-detail-fact,
  .project-details-copy,
  .info-contact-value,
  .info-register-row,
  .info-closing-copy
) a:focus-visible {
  color: inherit;
  text-decoration: none;
}

:is(
  .project-detail-fact,
  .project-details-copy,
  .info-contact-value,
  .info-register-row,
  .info-closing-copy
) a:hover::after,
:is(
  .project-detail-fact,
  .project-details-copy,
  .info-contact-value,
  .info-register-row,
  .info-closing-copy
) a:focus-visible::after {
  opacity: 1;
  transform: translate3d(.13em, -.13em, 0);
}

@media (prefers-reduced-motion: reduce) {
  :is(
    .project-detail-fact,
    .project-details-copy,
    .info-contact-value,
    .info-register-row,
    .info-closing-copy
  ) a::after {
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   0.10.6 — Work grid: deeper blur, slower return to focus
   -------------------------------------------------------------------------- */

/*
 * The project image slips noticeably out of focus on hover, then returns
 * very slowly after the pointer leaves. A tiny scale increase only prevents
 * softened image edges from becoming visible inside the clipped frame.
 */
.work-archive .project-card-media img {
  transform: scale(1.012);
  filter: blur(0);
  transition:
    filter 1900ms var(--fwm-ease),
    transform 1900ms var(--fwm-ease);
  will-change: filter;
}

.work-archive .project-card-link:hover .project-card-media img,
.work-archive .project-card-link:focus-visible .project-card-media img {
  transform: scale(1.012);
  filter: blur(8px);
  transition-duration: 390ms;
}

@media (prefers-reduced-motion: reduce) {
  .work-archive .project-card-media img,
  .work-archive .project-card-link:hover .project-card-media img,
  .work-archive .project-card-link:focus-visible .project-card-media img {
    transition: none;
  }
}


/* --------------------------------------------------------------------------
   0.10.7 — quieter Info / Contact and a small closing thank-you note
   -------------------------------------------------------------------------- */

.info-page {
  --fwm-info-copy-size: clamp(15px, .96vw, 18px);
}

.info-page.site-main {
  padding-top: clamp(126px, 13vw, 196px);
  padding-bottom: clamp(54px, 6vw, 92px);
}

.info-hero {
  margin-bottom: clamp(46px, 6vw, 82px);
}

.info-intro {
  grid-column: 6 / span 5;
  max-width: 62ch;
  font-size: var(--fwm-info-copy-size);
  line-height: 1.55;
}

.info-register {
  gap: clamp(38px, 5vw, 72px) clamp(18px, 2.4vw, 40px);
  margin-bottom: clamp(52px, 6.5vw, 92px);
}

.info-register-heading {
  margin-bottom: clamp(17px, 2vw, 28px);
}

.info-practice-list,
.info-contact-value,
.info-register-row-title,
.info-register-row-detail,
.info-membership-list,
.info-closing-copy {
  font-size: var(--fwm-info-copy-size);
  line-height: 1.5;
}

.info-contact-list {
  gap: 10px;
}

.info-register-row {
  padding: 9px 0 10px;
}

.info-closing {
  padding-top: 12px;
}

.info-bts {
  margin-top: clamp(54px, 6.5vw, 92px);
}

.info-bts-image {
  height: clamp(130px, 16vw, 245px);
}

.info-thanks {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(18px, 2.4vw, 40px);
  margin-top: clamp(56px, 7vw, 105px);
  padding-top: 14px;
  border-top: 1px solid var(--fwm-line);
}

.info-thanks-title {
  grid-column: 1 / span 2;
  margin: 0;
  color: var(--fwm-text);
  font-family: var(--fwm-serif);
  font-size: var(--fwm-info-copy-size);
  font-style: italic;
  font-weight: 400;
  letter-spacing: -.01em;
  line-height: 1.45;
}

.info-thanks-copy {
  grid-column: 4 / span 4;
  max-width: 46ch;
  color: var(--fwm-text);
  font-family: var(--fwm-serif);
  font-size: var(--fwm-info-copy-size);
  line-height: 1.5;
}

.info-thanks-karma {
  grid-column: 9 / -1;
  max-width: 44ch;
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: clamp(12px, .78vw, 14px);
  line-height: 1.55;
}

.info-thanks :is(p:first-child) {
  margin-top: 0;
}

.info-thanks :is(p:last-child) {
  margin-bottom: 0;
}

#contact {
  scroll-margin-top: 110px;
}

@media (max-width: 900px) {
  .info-thanks-copy {
    grid-column: 4 / span 5;
  }

  .info-thanks-karma {
    grid-column: 9 / -1;
  }
}

@media (max-width: 620px) {
  .info-page {
    --fwm-info-copy-size: clamp(15px, 4.05vw, 17px);
  }

  .info-page.site-main {
    padding-top: 116px;
  }

  .info-hero {
    margin-bottom: 54px;
  }

  .info-register {
    gap: 44px;
    margin-bottom: 64px;
  }

  .info-bts {
    margin-top: 60px;
  }

  .info-bts-image {
    height: min(42vw, 205px);
  }

  .info-thanks {
    grid-template-columns: 1fr;
    gap: 20px;
    margin-top: 62px;
  }

  .info-thanks-title,
  .info-thanks-copy,
  .info-thanks-karma {
    grid-column: 1;
  }

  .info-thanks-karma {
    font-size: 12px;
  }
}

/* --------------------------------------------------------------------------
   0.10.8 — auto-moving BTS strip, working principles and linked memberships
   -------------------------------------------------------------------------- */

.info-register-block--practice {
  grid-column: 1 / span 5;
}

.info-register-block--contact {
  grid-column: 8 / -1;
}

.info-register-block--principles {
  grid-column: 1 / span 7;
}

.info-register-block--memberships {
  grid-column: 8 / -1;
}

.info-register-block--awards {
  grid-column: 1 / span 7;
}

.info-register-block--exhibitions {
  grid-column: 8 / -1;
}

.info-principles-list {
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: fwm-principle;
  border-top: 1px solid var(--fwm-line);
}

.info-principles-list li {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr);
  gap: 14px;
  padding: 9px 0 10px;
  border-bottom: 1px solid var(--fwm-line);
  color: var(--fwm-text);
  font-family: var(--fwm-serif);
  font-size: var(--fwm-info-copy-size);
  letter-spacing: -.01em;
  line-height: 1.5;
  counter-increment: fwm-principle;
}

.info-principles-list li::before {
  content: counter(fwm-principle, decimal-leading-zero);
  color: var(--fwm-accent);
  font-family: var(--fwm-sans);
  font-size: 10px;
  font-style: normal;
  font-weight: 500;
  letter-spacing: .055em;
  line-height: 2.25;
}

.info-membership-list a {
  color: inherit;
  text-decoration: none;
}

:is(
  .project-detail-fact,
  .project-details-copy,
  .info-contact-value,
  .info-register-row,
  .info-membership-list,
  .info-closing-copy
) a::after {
  content: "↗";
  display: inline-block;
  margin-inline-start: .24em;
  color: currentColor;
  font-family: var(--fwm-sans);
  font-size: .72em;
  font-style: normal;
  font-weight: 500;
  line-height: 1;
  vertical-align: .16em;
  opacity: .82;
  transform: translate3d(0, 0, 0);
  transition:
    transform 180ms cubic-bezier(.22, .61, .36, 1),
    opacity 180ms ease;
}

:is(
  .project-detail-fact,
  .project-details-copy,
  .info-contact-value,
  .info-register-row,
  .info-membership-list,
  .info-closing-copy
) a:hover::after,
:is(
  .project-detail-fact,
  .project-details-copy,
  .info-contact-value,
  .info-register-row,
  .info-membership-list,
  .info-closing-copy
) a:focus-visible::after {
  opacity: 1;
  transform: translate3d(.13em, -.13em, 0);
}

.info-bts-track.is-auto-scrolling {
  scroll-snap-type: none;
  scrollbar-width: none;
}

.info-bts-track.is-auto-scrolling::-webkit-scrollbar {
  display: none;
}

.info-bts-track.is-auto-scrolling .info-bts-image {
  scroll-snap-align: none;
}

.info-bts-track.is-paused {
  cursor: grab;
}

@media (max-width: 900px) {
  .info-register-block--practice,
  .info-register-block--principles,
  .info-register-block--awards {
    grid-column: 1 / span 6;
  }

  .info-register-block--contact,
  .info-register-block--memberships,
  .info-register-block--exhibitions {
    grid-column: 7 / -1;
  }
}

@media (max-width: 620px) {
  .info-register-block--practice,
  .info-register-block--contact,
  .info-register-block--principles,
  .info-register-block--memberships,
  .info-register-block--awards,
  .info-register-block--exhibitions {
    grid-column: 1;
  }

  .info-principles-list li {
    grid-template-columns: 28px minmax(0, 1fr);
    gap: 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .info-bts-track.is-auto-scrolling {
    scroll-snap-type: inline proximity;
    scrollbar-width: thin;
  }

  .info-bts-track.is-auto-scrolling::-webkit-scrollbar {
    display: initial;
  }

  :is(
    .project-detail-fact,
    .project-details-copy,
    .info-contact-value,
    .info-register-row,
    .info-membership-list,
    .info-closing-copy
  ) a::after {
    transition: none;
  }
}



/* --------------------------------------------------------------------------
   0.10.9 — exact Info order and a reliable CSS-driven BTS marquee
   -------------------------------------------------------------------------- */

/* Row 1: Areas of Expertise / Contact
   Row 2: Selected Awards / Selected Exhibitions
   Row 3: Memberships / Working Principles */
.info-register-block--practice,
.info-register-block--awards,
.info-register-block--memberships {
  grid-column: 1 / span 5;
}

.info-register-block--contact,
.info-register-block--exhibitions,
.info-register-block--principles {
  grid-column: 8 / -1;
}

/* Principles should read like a compact list, not a ruled table. */
.info-principles-list {
  border-top: 0;
}

.info-principles-list li {
  padding: 3px 0 5px;
  border-bottom: 0;
}

/* CSS marquee: two identical image sets create a seamless loop. */
.info-bts-viewport {
  width: 100%;
  overflow: hidden;
  outline: 0;
}

.info-bts-viewport:focus-visible {
  outline: 1px solid var(--fwm-accent);
  outline-offset: 8px;
}

.info-bts-marquee {
  --fwm-bts-set-gap: clamp(12px, 1.35vw, 24px);
  display: flex;
  align-items: stretch;
  gap: var(--fwm-bts-set-gap);
  width: max-content;
  will-change: transform;
  animation: fwm-bts-marquee 118s linear infinite;
}

.info-bts-set {
  display: flex;
  flex: 0 0 auto;
  align-items: stretch;
  gap: var(--fwm-bts-set-gap);
}

.info-bts-viewport:hover .info-bts-marquee,
.info-bts-viewport:focus-within .info-bts-marquee {
  animation-play-state: paused;
}

@keyframes fwm-bts-marquee {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    transform: translate3d(calc(-50% - (var(--fwm-bts-set-gap) / 2)), 0, 0);
  }
}

@media (max-width: 900px) {
  .info-register-block--practice,
  .info-register-block--awards,
  .info-register-block--memberships {
    grid-column: 1 / span 6;
  }

  .info-register-block--contact,
  .info-register-block--exhibitions,
  .info-register-block--principles {
    grid-column: 7 / -1;
  }
}

@media (max-width: 620px) {
  .info-register-block--practice,
  .info-register-block--contact,
  .info-register-block--awards,
  .info-register-block--exhibitions,
  .info-register-block--memberships,
  .info-register-block--principles {
    grid-column: 1;
  }

  .info-bts-marquee {
    animation-duration: 94s;
  }
}

@media (prefers-reduced-motion: reduce) {
  .info-bts-viewport {
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scrollbar-width: thin;
  }

  .info-bts-marquee {
    animation: none;
  }

  .info-bts-set[aria-hidden="true"] {
    display: none;
  }
}


/* --------------------------------------------------------------------------
   0.11.1 — BTS caption follows the pointer
   -------------------------------------------------------------------------- */

.info-bts-image {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.info-bts-image::after {
  display: none;
}

.info-bts-image img {
  transition:
    filter 620ms cubic-bezier(.22, .61, .36, 1),
    transform 820ms cubic-bezier(.22, .61, .36, 1);
}

.info-bts-image:hover img,
.info-bts-image:focus-visible img {
  filter: brightness(.86) blur(.85px);
  transform: scale(1.006);
}

.info-bts-image:focus-visible {
  outline: 1px solid var(--fwm-accent);
  outline-offset: -1px;
}

.info-bts-caption.screen-reader-text {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
  opacity: 1 !important;
  transform: none !important;
  pointer-events: none !important;
}

.info-bts-cursor-caption {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9998;
  max-width: min(34ch, calc(100vw - 32px));
  padding: 7px 9px 8px;
  border: 1px solid rgba(27, 27, 24, .18);
  background: rgba(251, 250, 242, .94);
  color: var(--fwm-text);
  font-family: var(--fwm-sans);
  font-size: clamp(11px, .68vw, 13px);
  font-weight: 400;
  letter-spacing: .003em;
  line-height: 1.38;
  opacity: 0;
  pointer-events: none;
  transform: translate3d(-999px, -999px, 0);
  filter: blur(2px);
  backdrop-filter: blur(7px);
  -webkit-backdrop-filter: blur(7px);
  transition:
    opacity 180ms ease,
    filter 360ms cubic-bezier(.22, .61, .36, 1);
  will-change: transform, opacity;
}

.info-bts-cursor-caption.is-visible {
  opacity: 1;
  filter: blur(0);
}

@media (hover: none), (pointer: coarse) {
  .info-bts-cursor-caption {
    display: none;
  }

  .info-bts-image:hover img {
    filter: none;
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .info-bts-image img,
  .info-bts-cursor-caption {
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   0.11.2 — deeper BTS blur and unboxed cursor caption
   -------------------------------------------------------------------------- */

/* Match the deliberate focus loss used in the Work grid. The image slips
   quickly out of focus and returns much more slowly after the pointer leaves. */
.info-bts-image img {
  transform: scale(1.012);
  filter: brightness(1) blur(0);
  transition:
    filter 1900ms var(--fwm-ease),
    transform 1900ms var(--fwm-ease);
  will-change: filter;
}

.info-bts-image:hover img,
.info-bts-image:focus-visible img {
  transform: scale(1.012);
  filter: brightness(.72) blur(8px);
  transition-duration: 390ms;
}

/* The information becomes the sharp layer: larger, editorial, and entirely
   free of boxes, borders, colour panels, or frosted-glass backgrounds. */
.info-bts-cursor-caption {
  max-width: min(39ch, calc(100vw - 36px));
  padding: 0;
  border: 0;
  background: transparent;
  color: #fff;
  font-family: var(--fwm-serif);
  font-size: clamp(17px, 1.18vw, 23px);
  font-style: italic;
  font-weight: 400;
  letter-spacing: -.012em;
  line-height: 1.28;
  filter: blur(2px);
  text-shadow:
    0 1px 8px rgba(0, 0, 0, .42),
    0 5px 24px rgba(0, 0, 0, .28);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  transition:
    opacity 180ms ease,
    filter 360ms cubic-bezier(.22, .61, .36, 1);
}

.info-bts-cursor-caption.is-visible {
  opacity: 1;
  filter: blur(0);
}

@media (hover: none), (pointer: coarse) {
  .info-bts-image:hover img {
    filter: brightness(1) blur(0);
    transform: scale(1.012);
  }
}

@media (prefers-reduced-motion: reduce) {
  .info-bts-image img,
  .info-bts-cursor-caption {
    transition: none;
  }
}



/* --------------------------------------------------------------------------
   0.11.3 — narrower BTS notes, exact home-to-header landing and coral palette
   -------------------------------------------------------------------------- */

/* Keep the cursor note compact enough to read like a small production note,
   rather than a subtitle spanning the full image. */
.info-bts-cursor-caption {
  width: min(27ch, calc(100vw - 36px));
  max-width: min(27ch, calc(100vw - 36px));
  white-space: normal;
  overflow-wrap: normal;
  text-wrap: pretty;
}

/* The clicked homepage navigation now assumes the exact geometry used on
   inner pages before the new document loads. JavaScript applies a FLIP
   animation to the logo and links, so there is no final positional jump. */
.home.is-leaving .custom-logo {
  width: clamp(34px, 2.5vw, 44px);
}

.home.is-leaving .primary-navigation ul {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: .35em 1.65em;
}

.home.is-leaving .primary-navigation li,
.home.is-leaving .primary-navigation li:last-child {
  min-width: 0;
  text-align: initial;
}

.home.is-flip-prep .site-branding,
.home.is-flip-prep .nav-stage,
.home.is-flip-prep .custom-logo {
  transition: none !important;
}

@media (max-width: 620px) {
  .home.is-leaving .custom-logo {
    width: 34px;
  }

  .home.is-leaving .primary-navigation ul {
    justify-content: flex-end;
    gap: .35em 1.05em;
  }
}


/* --------------------------------------------------------------------------
   0.11.4 — active thumbnail stays readable; Work grid titles follow pointer
   -------------------------------------------------------------------------- */

/*
 * Give the thumbnail rail enough trailing scroll range for the final images
 * to occupy the second visible position rather than getting trapped at the
 * far right edge. The first image naturally remains in position one.
 */
.project-viewer-thumbnails::after {
  content: "";
  flex: 0 0 max(0px, calc(100% - 92px));
  height: 1px;
  pointer-events: none;
}

/* The project identity is revealed at the pointer, not repeated below. */
.work-archive .project-card-media {
  margin-bottom: 0;
}

.work-archive .project-card-caption {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.project-grid-cursor-title {
  position: fixed;
  z-index: 120;
  top: 0;
  left: 0;
  max-width: min(18ch, calc(100vw - 48px));
  color: var(--fwm-accent);
  font-family: var(--fwm-serif);
  font-size: clamp(38px, 4.5vw, 82px);
  font-style: italic;
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -.035em;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate3d(-999px, -999px, 0);
  filter: blur(3px);
  text-shadow: none;
  transition:
    opacity 160ms ease,
    filter 360ms var(--fwm-ease),
    visibility 0s linear 180ms;
  will-change: transform, opacity, filter;
}

.project-grid-cursor-title.is-visible {
  opacity: 1;
  visibility: visible;
  filter: blur(0);
  transition-delay: 0s;
}

@media (pointer: coarse), (hover: none) {
  .work-archive .project-card-caption {
    position: static !important;
    width: auto !important;
    height: auto !important;
    margin: 11px 0 0 !important;
    overflow: visible !important;
    clip: auto !important;
    white-space: normal !important;
  }

  .work-archive .project-card-year {
    display: none;
  }

  .project-grid-cursor-title {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .project-grid-cursor-title {
    transition: none;
    filter: none;
  }
}


/* --------------------------------------------------------------------------
   0.11.6 — Work grid titles: no halo, unapologetically large
   -------------------------------------------------------------------------- */

.project-grid-cursor-title {
  text-shadow: none;
}


/* --------------------------------------------------------------------------
   0.11.7 — Work grid: title only, custom cursor disappears on hover
   -------------------------------------------------------------------------- */

.fwm-cursor.is-suppressed {
  opacity: 0 !important;
}
/* Legal pages use their own wide editorial measure instead of the default
   760px reading column used by ordinary pages. */
body:has(.fwm-legal) .site-main {
  padding-top: clamp(148px, 13vw, 206px);
}

body:has(.fwm-legal) .entry-content {
  max-width: none;
}

.fwm-legal {
  --legal-measure: 85rem;
  --legal-label-column: clamp(10rem, 16vw, 17rem);
  --legal-copy-column: minmax(0, 52rem);
  width: min(100%, var(--legal-measure));
  margin-inline: auto;
  padding-block: 0 clamp(4rem, 8vw, 8rem);
  color: var(--fwm-text, #171716);
}

.fwm-legal__intro {
  display: grid;
  grid-template-columns: var(--legal-label-column) var(--legal-copy-column);
  justify-content: space-between;
  column-gap: clamp(3rem, 7vw, 9rem);
  margin-bottom: clamp(4rem, 8vw, 8rem);
}

.fwm-legal__eyebrow,
.fwm-legal__section h2 {
  color: var(--fwm-accent, #fe6f61);
  font-family: "General Sans", sans-serif;
  font-size: .72rem;
  font-weight: 500;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.fwm-legal__intro h1 {
  margin: 0;
  font-family: "Gambetta", serif;
  font-size: clamp(2.2rem, 6vw, 5.5rem);
  font-style: italic;
  font-weight: 400;
  line-height: .95;
}

.fwm-legal__intro > p:last-child {
  grid-column: 2;
  max-width: 46rem;
  margin: 1.5rem 0 0;
}

.fwm-legal__section {
  display: grid;
  grid-template-columns: var(--legal-label-column) var(--legal-copy-column);
  justify-content: space-between;
  column-gap: clamp(3rem, 7vw, 9rem);
  padding-block: clamp(1.5rem, 3vw, 2.5rem);
  border-top: 1px solid var(--fwm-line, #dedad1);
}

.fwm-legal__section h2 { margin: .2rem 0 0; }
.fwm-legal__section > :not(h2) { grid-column: 2; }
.fwm-legal__section p { max-width: 52rem; margin: 0 0 1rem; line-height: 1.55; }
.fwm-legal__section a { color: inherit; }
.fwm-legal__updated { margin: 4rem 0 0; color: var(--fwm-muted, #66635f); font-size: .75rem; }

@media (max-width: 820px) {
  body:has(.fwm-legal) .site-main {
    padding-top: 124px;
  }

  .fwm-legal__intro,
  .fwm-legal__section { grid-template-columns: 1fr; }
  .fwm-legal__intro > p:last-child,
  .fwm-legal__section > :not(h2) { grid-column: 1; }
  .fwm-legal__eyebrow,
  .fwm-legal__section h2 { margin-bottom: 1.25rem; }
}
/* Standard-Seitentitel auf FWM-Legal-Seiten ausblenden */
body:has(.fwm-legal) .entry-header,
body:has(.fwm-legal) > main > header,
body:has(.fwm-legal) .page-header {
  display: none;
}

/* --------------------------------------------------------------------------
   0.12.1 — Full-height reveal footer
   -------------------------------------------------------------------------- */

body:not(.home) {
  background: var(--fwm-accent);
}

body:not(.home) .site-main {
  position: relative;
  z-index: 2;
  isolation: isolate;
}

body:not(.home) .site-main::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0 50%;
  margin-inline: -50vw;
  background: var(--fwm-bg);
}

.site-footer {
  position: sticky;
  z-index: 1;
  bottom: 0;
  display: flex;
  min-height: min(86svh, 920px);
  flex-direction: column;
  align-items: stretch;
  justify-content: space-between;
  gap: clamp(42px, 6vw, 90px);
  padding: clamp(34px, 4vw, 64px) var(--fwm-gutter) 28px;
  border: 0;
  background: var(--fwm-accent);
  color: var(--fwm-text);
  overflow: hidden;
  text-transform: none;
}

.site-footer-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: clamp(32px, 6vw, 100px);
}

.site-footer-cta {
  display: flex;
  width: fit-content;
  max-width: 10ch;
  flex-direction: column;
  color: inherit;
  font-family: var(--fwm-sans);
  font-size: clamp(70px, 10.8vw, 210px);
  font-weight: 400;
  letter-spacing: -.075em;
  line-height: .73;
  text-decoration: none;
}

.site-footer-cta em {
  margin-inline-start: .34em;
  font-family: var(--fwm-serif);
  font-size: .72em;
  font-style: italic;
  letter-spacing: -.055em;
  line-height: .95;
}

.site-footer-cta span,
.site-footer-cta em {
  transition: transform 700ms var(--fwm-ease);
}

.site-footer-cta:hover span,
.site-footer-cta:focus-visible span {
  transform: translateX(.04em);
}

.site-footer-cta:hover em,
.site-footer-cta:focus-visible em {
  transform: translateX(-.04em);
}

.site-footer-mark {
  padding-top: .35vw;
}

.site-footer-mark .custom-logo-link {
  display: block;
}

.site-footer-mark .custom-logo {
  width: clamp(70px, 8vw, 150px);
  max-height: none;
  filter: none;
}

.site-footer-mark > span {
  display: block;
  max-width: 12ch;
  font-size: 12px;
  letter-spacing: .06em;
  line-height: 1.2;
  text-align: right;
  text-transform: uppercase;
}

.site-footer-directory {
  display: grid;
  grid-template-columns: 1fr 1.6fr 1fr;
  gap: clamp(28px, 4vw, 72px);
  padding-top: clamp(18px, 2.4vw, 34px);
  border-top: 1px solid color-mix(in srgb, var(--fwm-text) 28%, transparent);
  font-size: clamp(13px, .82vw, 16px);
  letter-spacing: .01em;
  line-height: 1.45;
}

.footer-primary-navigation ul,
.footer-navigation ul,
.footer-social-navigation ul,
.footer-legal-navigation ul {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.footer-primary-navigation a,
.footer-navigation a,
.footer-social-navigation a,
.site-footer-contact a {
  color: inherit;
  text-decoration: none;
}

.footer-primary-navigation a {
  font-weight: 600;
  letter-spacing: .025em;
}

.site-footer-contact,
.footer-social-navigation {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.site-footer-contact > span:first-child,
.footer-social-navigation > span:first-child {
  margin-bottom: 5px;
  font-size: .72em;
  font-weight: 500;
  letter-spacing: .075em;
  text-transform: uppercase;
}

.site-footer-contact a::after,
.footer-navigation a::after,
.footer-social-navigation a::after {
  content: "↗";
  display: inline-block;
  margin-inline-start: .24em;
  font-size: .72em;
  line-height: 1;
  vertical-align: .16em;
  opacity: .82;
  transform: translate3d(0, 0, 0);
  transition: transform 180ms var(--fwm-ease), opacity 180ms ease;
}

.site-footer-contact a:hover::after,
.site-footer-contact a:focus-visible::after,
.footer-navigation a:hover::after,
.footer-navigation a:focus-visible::after,
.footer-social-navigation a:hover::after,
.footer-social-navigation a:focus-visible::after {
  opacity: 1;
  transform: translate3d(.13em, -.13em, 0);
}

.site-footer-thanks {
  display: grid;
  grid-template-columns: minmax(120px, .55fr) minmax(0, 1.35fr) minmax(0, 1fr);
  align-items: start;
  gap: clamp(28px, 5vw, 86px);
  padding-top: clamp(18px, 2.4vw, 34px);
  border-top: 1px solid color-mix(in srgb, var(--fwm-text) 28%, transparent);
}

.site-footer-thanks h2 {
  margin: 0;
  font-family: var(--fwm-serif);
  font-size: clamp(28px, 3vw, 56px);
  font-style: italic;
  font-weight: 400;
  letter-spacing: -.035em;
  line-height: .95;
}

.site-footer-thanks-copy,
.site-footer-karma {
  max-width: 42ch;
  font-family: var(--fwm-serif);
  font-size: clamp(15px, 1vw, 19px);
  line-height: 1.42;
}

.site-footer-karma {
  font-style: italic;
}

.site-footer-thanks p {
  margin: 0;
}

.site-footer-base {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 30px;
  padding-top: 18px;
  border-top: 1px solid color-mix(in srgb, var(--fwm-text) 28%, transparent);
  font-size: 11px;
  letter-spacing: .045em;
  text-transform: uppercase;
}

.site-footer-links {
  display: block;
}

.footer-legal-navigation ul {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 10px 18px;
}

@media (max-width: 900px) {
  body:not(.home) {
    background: var(--fwm-bg);
  }

  .site-footer {
    position: relative;
    min-height: 700px;
  }

  .site-footer-directory {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .site-footer-thanks {
    grid-template-columns: minmax(120px, .55fr) minmax(0, 1.45fr);
  }

  .site-footer-karma {
    grid-column: 2;
  }
}

@media (max-width: 620px) {
  .site-footer {
    min-height: 100svh;
    gap: 54px;
    padding-top: 34px;
  }

  .site-footer-hero {
    grid-template-columns: 1fr;
  }

  .site-footer-cta {
    font-size: clamp(58px, 20vw, 96px);
  }

  .site-footer-mark {
    position: absolute;
    top: 32px;
    right: var(--fwm-gutter);
  }

  .site-footer-mark .custom-logo {
    width: 54px;
  }

  .site-footer-directory {
    grid-template-columns: 1fr;
    gap: 30px;
  }

  .site-footer-thanks {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .site-footer-karma {
    grid-column: auto;
  }

  .site-footer-base {
    align-items: flex-start;
    flex-direction: column;
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-footer-cta span,
  .site-footer-cta em,
  .site-footer-contact a::after,
  .footer-navigation a::after,
  .footer-social-navigation a::after {
    transition: none;
  }
}

/* Keep the two-column closing section authoritative over the earlier
   single-column Info-page defaults. */
.info-closing-column .info-section-label,
.info-closing-column .info-closing-copy {
  grid-column: auto;
}

.info-closing-column .info-closing-copy {
  max-width: 52ch;
  font-size: var(--fwm-info-copy-size);
  line-height: 1.48;
}

/* --------------------------------------------------------------------------
   0.12.5 — Oversized interactive Ensō in the reveal footer
   -------------------------------------------------------------------------- */

.site-footer {
  --fwm-enso-x: 0px;
  --fwm-enso-y: 0px;
  --fwm-enso-rotate: 0deg;
}

.site-footer-hero,
.site-footer-directory,
.site-footer-thanks,
.site-footer-base {
  position: relative;
  z-index: 2;
}

.site-footer-mark {
  position: absolute;
  z-index: 1;
  top: 48%;
  right: -9vw;
  width: clamp(430px, 52vw, 980px);
  padding: 0;
  pointer-events: none;
  opacity: .82;
  filter: blur(1.8px);
  transform:
    translate3d(var(--fwm-enso-x), calc(-50% + var(--fwm-enso-y)), 0)
    rotate(var(--fwm-enso-rotate));
  transform-origin: center;
  will-change: transform, filter, opacity;
  transition:
    transform 900ms cubic-bezier(.18, .75, .22, 1),
    filter 700ms ease,
    opacity 700ms ease;
}

.site-footer-mark .custom-logo {
  width: 100%;
  height: auto;
  max-height: none;
  filter: none;
}

.site-footer.is-enso-engaged .site-footer-mark {
  opacity: .96;
  filter: blur(0);
  transition-duration: 180ms, 360ms, 360ms;
}

@media (max-width: 900px) {
  .site-footer-mark {
    top: 38%;
    right: -18vw;
    width: min(72vw, 720px);
    opacity: .58;
  }
}

@media (max-width: 620px) {
  .site-footer-mark {
    top: 34%;
    right: -38vw;
    width: 104vw;
    opacity: .32;
    filter: blur(1px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-footer-mark {
    transform: translate3d(0, -50%, 0);
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   0.12.6 — Static Ensō with a soft, local cursor blur
   -------------------------------------------------------------------------- */

.site-footer {
  --fwm-enso-pointer-x: -500px;
  --fwm-enso-pointer-y: -500px;
}

.site-footer-mark,
.site-footer.is-enso-engaged .site-footer-mark {
  top: 46%;
  right: auto;
  left: 31%;
  width: clamp(420px, 46vw, 880px);
  opacity: 1;
  filter: none;
  transform: translate3d(-50%, -50%, 0);
  transition: none;
}

.site-footer-mark .custom-logo {
  display: block;
  width: 100%;
  height: auto;
}

.site-footer-enso-base {
  opacity: .27;
}

.site-footer-enso-blur {
  position: absolute;
  inset: 0;
  opacity: 0;
  filter: blur(17px);
  transform: scale(1.025);
  -webkit-mask-image: radial-gradient(
    circle 170px at var(--fwm-enso-pointer-x) var(--fwm-enso-pointer-y),
    #000 0,
    rgba(0, 0, 0, .78) 42%,
    rgba(0, 0, 0, .28) 72%,
    transparent 100%
  );
  mask-image: radial-gradient(
    circle 170px at var(--fwm-enso-pointer-x) var(--fwm-enso-pointer-y),
    #000 0,
    rgba(0, 0, 0, .78) 42%,
    rgba(0, 0, 0, .28) 72%,
    transparent 100%
  );
  transition: opacity 360ms ease;
}

.site-footer.is-enso-engaged .site-footer-enso-blur {
  opacity: .76;
}

@media (max-width: 900px) {
  .site-footer-mark,
  .site-footer.is-enso-engaged .site-footer-mark {
    top: 38%;
    left: 34%;
    width: min(68vw, 680px);
  }

  .site-footer-enso-base {
    opacity: .2;
  }
}

@media (max-width: 620px) {
  .site-footer-mark,
  .site-footer.is-enso-engaged .site-footer-mark {
    top: 34%;
    left: 31%;
    width: 94vw;
  }

  .site-footer-enso-base {
    opacity: .14;
  }

  .site-footer-enso-blur {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-footer-mark,
  .site-footer.is-enso-engaged .site-footer-mark {
    transform: translate3d(-50%, -50%, 0);
  }

  .site-footer-enso-blur {
    display: none;
  }
}

/* --------------------------------------------------------------------------
   0.13.4 — Centre BTS production notes beneath the pointer
   -------------------------------------------------------------------------- */

.info-bts-cursor-caption {
  text-align: center;
  transform-origin: 50% 0;
}

/* --------------------------------------------------------------------------
   0.12.7 — Ensō as the quiet counterpart to the footer invitation
   -------------------------------------------------------------------------- */

.site-footer-hero {
  grid-template-columns: minmax(0, 1fr) clamp(260px, 30vw, 560px);
  align-items: center;
  column-gap: clamp(32px, 6vw, 120px);
}

.site-footer-mark,
.site-footer.is-enso-engaged .site-footer-mark {
  position: relative;
  z-index: 2;
  top: auto;
  right: auto;
  bottom: auto;
  left: auto;
  width: 100%;
  padding: 0;
  justify-self: end;
  align-self: center;
  pointer-events: none;
  opacity: 1;
  filter: none;
  transform: none;
  transition: none;
}

.site-footer-mark .site-footer-enso-base {
  display: block;
  width: 100%;
  height: auto;
  opacity: .82;
  filter: none;
  transform: none;
  transition: opacity 320ms ease;
}

.site-footer.is-enso-engaged .site-footer-enso-base {
  -webkit-mask-image: radial-gradient(
    circle 180px at var(--fwm-enso-pointer-x) var(--fwm-enso-pointer-y),
    transparent 0,
    rgba(0, 0, 0, .12) 28%,
    rgba(0, 0, 0, .58) 66%,
    #000 100%
  );
  mask-image: radial-gradient(
    circle 180px at var(--fwm-enso-pointer-x) var(--fwm-enso-pointer-y),
    transparent 0,
    rgba(0, 0, 0, .12) 28%,
    rgba(0, 0, 0, .58) 66%,
    #000 100%
  );
}

.site-footer-enso-blur {
  display: none;
}

@media (max-width: 900px) {
  .site-footer-hero {
    grid-template-columns: minmax(0, 1fr) min(31vw, 320px);
    column-gap: clamp(20px, 4vw, 56px);
  }
}

@media (max-width: 620px) {
  .site-footer-hero {
    grid-template-columns: minmax(0, 1fr) 88px;
    align-items: start;
    column-gap: 14px;
  }

  .site-footer-mark,
  .site-footer.is-enso-engaged .site-footer-mark {
    width: 88px;
    margin-top: 8px;
  }

  .site-footer-mark .site-footer-enso-base {
    opacity: .76;
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-footer.is-enso-engaged .site-footer-enso-base {
    -webkit-mask-image: none;
    mask-image: none;
  }
}

/* --------------------------------------------------------------------------
   0.12.8 — Cursor-controlled focus reveal for the footer Ensō
   -------------------------------------------------------------------------- */

.site-footer-mark .site-footer-enso-base,
.site-footer.is-enso-engaged .site-footer-enso-base {
  opacity: .3;
  filter: blur(15px);
  transform: scale(.985);
  -webkit-mask-image: none;
  mask-image: none;
}

.site-footer-mark .site-footer-enso-blur {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: auto;
  opacity: 0;
  filter: none;
  transform: none;
  -webkit-mask-image: radial-gradient(
    circle 165px at var(--fwm-enso-pointer-x) var(--fwm-enso-pointer-y),
    #000 0,
    rgba(0, 0, 0, .98) 18%,
    rgba(0, 0, 0, .72) 46%,
    rgba(0, 0, 0, .24) 76%,
    transparent 100%
  );
  mask-image: radial-gradient(
    circle 165px at var(--fwm-enso-pointer-x) var(--fwm-enso-pointer-y),
    #000 0,
    rgba(0, 0, 0, .98) 18%,
    rgba(0, 0, 0, .72) 46%,
    rgba(0, 0, 0, .24) 76%,
    transparent 100%
  );
  will-change: opacity, mask-image;
  transition: opacity 260ms ease;
}

.site-footer.is-enso-engaged .site-footer-enso-blur {
  opacity: .92;
}

@media (max-width: 900px) {
  .site-footer-mark .site-footer-enso-base,
  .site-footer.is-enso-engaged .site-footer-enso-base {
    opacity: .34;
    filter: blur(10px);
  }
}

@media (max-width: 620px) {
  .site-footer-mark .site-footer-enso-base,
  .site-footer.is-enso-engaged .site-footer-enso-base {
    opacity: .72;
    filter: blur(2px);
    transform: none;
  }

  .site-footer-mark .site-footer-enso-blur {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-footer-mark .site-footer-enso-base,
  .site-footer.is-enso-engaged .site-footer-enso-base {
    opacity: .72;
    filter: none;
    transform: none;
  }

  .site-footer-mark .site-footer-enso-blur {
    display: none;
  }
}

/* --------------------------------------------------------------------------
   0.12.9 — Keep the Ensō diffuse before, during and after interaction
   -------------------------------------------------------------------------- */

html body .site-footer .site-footer-mark .site-footer-enso-base,
html body .site-footer.is-enso-engaged .site-footer-mark .site-footer-enso-base {
  opacity: .48;
  filter: blur(20px);
  transform: scale(.965);
  -webkit-mask-image: none;
  mask-image: none;
}

html body .site-footer .site-footer-mark .site-footer-enso-blur {
  opacity: 0;
  filter: none;
  transform: none;
}

html body .site-footer.is-enso-engaged .site-footer-mark .site-footer-enso-blur {
  opacity: .94;
}

@media (max-width: 900px) {
  html body .site-footer .site-footer-mark .site-footer-enso-base,
  html body .site-footer.is-enso-engaged .site-footer-mark .site-footer-enso-base {
    opacity: .44;
    filter: blur(13px);
  }
}

@media (max-width: 620px) {
  html body .site-footer .site-footer-mark .site-footer-enso-base,
  html body .site-footer.is-enso-engaged .site-footer-mark .site-footer-enso-base {
    opacity: .7;
    filter: blur(2px);
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  html body .site-footer .site-footer-mark .site-footer-enso-base,
  html body .site-footer.is-enso-engaged .site-footer-mark .site-footer-enso-base {
    opacity: .72;
    filter: none;
    transform: none;
  }
}

/* --------------------------------------------------------------------------
   0.13.0 — Footer takeover, smooth return and animated back-to-top control
   -------------------------------------------------------------------------- */

.site-header {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  visibility: visible;
  transition:
    opacity 420ms ease,
    transform 620ms var(--fwm-ease),
    visibility 0s linear 0s;
  will-change: opacity, transform;
}

body.is-footer-active .site-header {
  opacity: 0;
  transform: translate3d(0, -24px, 0);
  visibility: hidden;
  transition:
    opacity 420ms ease,
    transform 620ms var(--fwm-ease),
    visibility 0s linear 620ms;
}

.site-footer-base {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: end;
}

.footer-to-top {
  display: inline-flex;
  justify-self: center;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  color: inherit;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .075em;
  line-height: 1;
  text-decoration: none;
  text-transform: uppercase;
}

.footer-to-top__arrow-window {
  display: block;
  width: 1.25em;
  height: 1.25em;
  overflow: hidden;
}

.footer-to-top__arrows {
  display: flex;
  flex-direction: column;
  width: 100%;
  transform: translate3d(0, 0, 0);
  transition: transform 420ms var(--fwm-ease);
}

.footer-to-top__arrows span {
  display: grid;
  width: 1.25em;
  height: 1.25em;
  flex: 0 0 1.25em;
  place-items: center;
  font-size: 16px;
  font-weight: 400;
  line-height: 1;
}

.footer-to-top:hover .footer-to-top__arrows,
.footer-to-top:focus-visible .footer-to-top__arrows {
  transform: translate3d(0, -50%, 0);
}

.site-footer-links {
  justify-self: end;
}

@media (max-width: 620px) {
  .site-footer-base {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: 22px;
  }

  .footer-to-top {
    grid-column: 2;
    grid-row: 1;
    align-self: start;
  }

  .site-footer-links {
    grid-column: 1 / -1;
    justify-self: start;
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-header,
  body.is-footer-active .site-header,
  .footer-to-top__arrows {
    transition: none;
  }

  .footer-to-top:hover .footer-to-top__arrows,
  .footer-to-top:focus-visible .footer-to-top__arrows {
    transform: none;
  }
}

/* --------------------------------------------------------------------------
   0.13.3 — Almost imperceptible rotation for the footer Ensō
   -------------------------------------------------------------------------- */

.site-footer-mark,
.site-footer.is-enso-engaged .site-footer-mark {
  transform-origin: 50% 50%;
  animation: fwm-footer-enso-rotation 120s linear infinite;
  will-change: transform;
}

@keyframes fwm-footer-enso-rotation {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
  .site-footer-mark,
  .site-footer.is-enso-engaged .site-footer-mark {
    animation: none;
    transform: none;
  }
}

/* --------------------------------------------------------------------------
   0.13.5 — Professional association logos on the Info page
   -------------------------------------------------------------------------- */

.info-membership-list:has(.has-membership-logo) {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: center;
  gap: clamp(22px, 3vw, 52px);
}

.info-membership-list .has-membership-logo {
  display: flex;
  min-width: 0;
  align-items: center;
}

.info-membership-list .has-membership-logo a,
.info-membership-list .has-membership-logo > img {
  display: flex;
  width: 100%;
  max-width: 112px;
  align-items: center;
  justify-content: center;
}

.info-membership-list .has-membership-logo a::after {
  content: none;
}

.info-membership-list .has-membership-logo img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 82px;
  object-fit: contain;
  object-position: center;
  opacity: .78;
  transform: translate3d(0, 0, 0);
  transition:
    opacity 260ms ease,
    filter 420ms ease,
    transform 420ms cubic-bezier(.22, .61, .36, 1);
}

.info-membership-list .has-membership-logo a:hover img,
.info-membership-list .has-membership-logo a:focus-visible img {
  opacity: 1;
  filter: blur(.25px);
  transform: translate3d(0, -3px, 0);
}

.info-membership-list .has-membership-logo a:focus-visible {
  outline: 1px solid var(--fwm-accent);
  outline-offset: 8px;
}

@media (max-width: 620px) {
  .info-membership-list:has(.has-membership-logo) {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
  }

  .info-membership-list .has-membership-logo a,
  .info-membership-list .has-membership-logo > img {
    max-width: 92px;
  }

  .info-membership-list .has-membership-logo img {
    max-height: 68px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .info-membership-list .has-membership-logo img {
    transition: none;
  }

  .info-membership-list .has-membership-logo a:hover img,
  .info-membership-list .has-membership-logo a:focus-visible img {
    transform: none;
  }
}
