/*
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.25.08
Requires at least: 6.6
Requires PHP: 8.1
Text Domain: fwm26
*/

/* 0.25.08 — One guarded, gently decelerating arrival for both menu items. */

/* 0.25.07 — Play the two arriving menu items exactly once. */

/* 0.25.06 — Hide the native hand over the Teaching accordion. */

/* 0.25.05 — Animate the two inner-page-only menu items after leaving home. */

/* 0.25.04 — Keep dark homepage typography crisp with a wider, quieter aura. */

/* 0.25.03 — Soft, tone-aware contrast aura for the homepage header. */

/* 0.25.02 — Control the upper homepage typography and lower links independently. */

/* 0.25.01 — Per-image top, centre or bottom focus for homepage heroes. */

/* 0.25.00 — Opt-in Journal hero images share the curated homepage pool. */

/* 0.24.99 — Slightly larger home logo/navigation with a smooth FLIP shrink. */

/* 0.24.98 — Centre the footer metal hand precisely on the hidden pointer. */

/* 0.24.97 — Restore the newsletter note when stale cached footer markup is served. */

/* 0.24.96 — Quiet anti-spam note below the newsletter form. */

/* 0.24.95 — Newsletter input uses only the native text cursor. */

/* 0.24.94 — Centre Work-grid titles precisely on the hidden pointer. */

/* 0.24.93 — Apply the home tone directly to both legal anchors. */

/* 0.24.92 — Home reference and legal links follow the selected menu tone. */

/* 0.24.91 — Keep the newsletter placeholder reliably visible. */

/* 0.24.90 — Minimal Mailchimp signup in the reveal footer. */

/* 0.24.89 — Home navigation lands directly in the complete inner-page menu. */

/* 0.24.88 — Match standalone project-detail links to the larger intro copy. */

/* 0.24.87 — Match italic project-detail links to the surrounding copy size. */

/* 0.24.86 — Editorial text links use Fraunces Italic for clearer recognition. */

/* 0.24.85 — Typography pairing: Strawford + variable Fraunces. */

/* 0.24.53 — Optional Media Library titles in the project Single view. */

/* 0.24.52 — Typography pairing: Strawford + Erode. */


/* 0.24.50 — Work index: keep projects timeless. */
body.post-type-archive-project .project-index-row > span:last-child {
  display: none !important;
}

/* 0.24.49 — Teaching single image: align toward copy; quiet caption. */
@media (min-width: 821px) {
  body.page-id-16 .teaching-experience > .teaching-visual {
    justify-content: flex-end !important;
  }

  body.page-id-16 .teaching-experience > .teaching-visual > .wp-block-image {
    width: min(100%, 620px);
    max-width: 100%;
    margin: 0 0 0 auto !important;
  }
}

body.page-id-16 .teaching-experience > .teaching-visual > .wp-block-image img {
  display: block;
  width: 100% !important;
  height: auto !important;
  max-width: 100% !important;
  object-fit: contain !important;
}

body.page-id-16 .teaching-experience > .teaching-visual > .wp-block-image figcaption {
  position: static !important;
  width: 100%;
  margin: 8px 0 0 !important;
  padding: 0 !important;
  color: var(--fwm-muted) !important;
  background: transparent !important;
  box-shadow: none !important;
  text-shadow: none !important;
  font-family: var(--fwm-font-sans) !important;
  font-size: 10px !important;
  font-style: normal !important;
  font-weight: 400 !important;
  line-height: 1.35 !important;
  letter-spacing: .02em !important;
  text-align: right !important;
}

@media (max-width: 820px) {
  body.page-id-16 .teaching-experience > .teaching-visual > .wp-block-image {
    width: 100%;
    margin: 0 !important;
  }
}


/* 0.24.48 — Reliable sticky Teaching image column. */
@media (min-width: 821px) {
  body.page-id-16 .teaching-experience.wp-block-columns {
    overflow: visible !important;
  }

  body.page-id-16 .teaching-experience > .teaching-visual {
    position: sticky !important;
    top: clamp(112px, 14vh, 168px) !important;
    align-self: start !important;
    height: fit-content !important;
    min-height: 0 !important;
  }
}

@media (max-width: 820px) {
  body.page-id-16 .teaching-experience > .teaching-visual {
    position: relative !important;
    top: auto !important;
    height: auto !important;
  }
}


/* 0.24.47 — Teaching copy uses the full width of its Gutenberg column. */
body.page-id-16 .teaching-copy-block:not(.teaching-faq) p {
  width: 100%;
  max-width: none;
}


/* ==========================================================================
   0.24.46 — Teaching FAQ mirrors the Info-page accordion
   ========================================================================== */
body.page-id-16 .teaching-faq-item summary::after {
  content: "↘" !important;
  font-size: 13px !important;
  transform: rotate(0deg) !important;
}
body.page-id-16 .teaching-faq-item[open] summary::after {
  transform: rotate(-90deg) !important;
}

/* Journal archive pagination. */
.journal-main .navigation.pagination {
margin-top: clamp(120px, 14vw, 220px);
  padding-top: 18px;
  border-top: 1px solid var(--fwm-line);
  font-family: var(--fwm-sans);
  font-size: 10px;
  letter-spacing: .075em;
  line-height: 1.35;
  text-transform: uppercase;
}

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

.journal-main .navigation.pagination .nav-links {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 14px;
  min-height: 1.35em;
}

.journal-main .navigation.pagination .page-numbers {
  color: var(--fwm-text);
  text-decoration: none;
}

.journal-main .navigation.pagination .page-numbers:not(.prev):not(.next) {
  padding-inline: 5px;
}

.journal-main .navigation.pagination .page-numbers.current,
.journal-main .navigation.pagination a:hover,
.journal-main .navigation.pagination a:focus-visible {
  color: var(--fwm-accent);
}

.journal-main .navigation.pagination .prev {
  position: absolute;
  left: 0;
}

.journal-main .navigation.pagination .next {
  position: absolute;
  right: 0;
}

@media (max-width: 620px) {
  .journal-main .navigation.pagination {
    margin-top: 72px;
    font-size: 9px;
  }

  .journal-main .navigation.pagination .nav-links {
    gap: 8px;
  }
}


/* 0.24.46b — Final Teaching FAQ alignment. */
body.page-id-16 .teaching-faq-item summary {
  grid-template-columns: 34px minmax(0, 1fr) 20px !important;
}
body.page-id-16 .teaching-faq-item summary::before { grid-column: 1 !important; }
body.page-id-16 .teaching-faq-item .teaching-faq-question { grid-column: 2 !important; min-width: 0; }
body.page-id-16 .teaching-faq-item summary::after { grid-column: 3 !important; }


/* 0.24.46a — Keep Gutenberg's anonymous summary text in the middle column. */
body.page-id-16 .teaching-faq-item summary::before { grid-column: 1; }
body.page-id-16 .teaching-faq-item summary::after { grid-column: 3; }

body.page-id-16 .teaching-faq {
  counter-reset: fwm-teaching-faq;
}

body.page-id-16 .teaching-faq-item {
  counter-increment: fwm-teaching-faq;
  border-top: 0;
  border-bottom: 1px solid var(--fwm-line);
}

body.page-id-16 .teaching-faq-item summary {
  grid-template-columns: 34px minmax(0, 1fr) 20px;
  align-items: baseline;
  gap: 14px;
  padding: 16px 0 17px;
  font-size: clamp(14px, .92vw, 17px);
  font-weight: 400;
  letter-spacing: -.006em;
  line-height: 1.35;
}

body.page-id-16 .teaching-faq-item summary::before {
  content: counter(fwm-teaching-faq, decimal-leading-zero);
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: 10px;
  font-weight: 400;
  letter-spacing: .055em;
  line-height: 1;
}

body.page-id-16 .teaching-faq-item summary::after {
  content: "↘";
  color: var(--fwm-accent);
  font-family: var(--fwm-sans);
  font-size: 13px;
  font-weight: 400;
  line-height: 1;
  text-align: right;
  transform: rotate(0deg);
  transform-origin: center;
  transition: transform 320ms var(--fwm-ease);
}

body.page-id-16 .teaching-faq-item[open] summary::after {
  transform: rotate(-90deg);
}

body.page-id-16 .teaching-faq-item > p {
  max-width: 58ch;
  padding: 0 34px clamp(24px, 3vw, 42px) 48px;
  color: var(--fwm-muted);
  font-family: var(--fwm-serif);
  font-size: clamp(15px, .96vw, 17px);
  letter-spacing: -.006em;
  line-height: 1.5;
}

body.page-id-16 .teaching-faq-item summary:hover,
body.page-id-16 .teaching-faq-item summary:focus-visible {
  color: var(--fwm-accent);
}

body.page-id-16 .teaching-faq-item summary:focus-visible {
  outline: 1px solid var(--fwm-accent);
  outline-offset: 4px;
}

@media (max-width: 620px) {
  body.page-id-16 .teaching-faq-item > p {
    padding-right: 0;
  }
}

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

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

@font-face {
  font-family: "Strawford";
  src: url("assets/fonts/strawford-medium-webfont.woff2") format("woff2");
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}

@font-face {
  font-family: "Strawford";
  src: url("assets/fonts/strawford-medium-webfont.woff2") format("woff2");
  font-style: normal;
  font-weight: 600;
  font-display: swap;
}

@font-face {
  font-family: "Strawford";
  src: url("assets/fonts/strawford-bold-webfont.woff2") format("woff2");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}

@font-face {
  font-family: "Fraunces";
  src: url("assets/fonts/Fraunces-Variable.woff2") format("woff2-variations");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

@font-face {
  font-family: "Fraunces";
  src: url("assets/fonts/Fraunces-Italic-Variable.woff2") format("woff2-variations");
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
}

@font-face {
  font-family: "Nothing You Could Do";
  src: url("assets/fonts/NothingYouCouldDo-Regular.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

:root {
  --fwm-sans: "Strawford", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --fwm-serif: "Fraunces", Georgia, "Times New Roman", serif;
  --fwm-font-sans: var(--fwm-sans);
  --fwm-font-serif: var(--fwm-serif);
  --fwm-serif-soft: 14;
  --fwm-serif-wonk: 0;
  --fwm-serif-italic-soft: 42;
  --fwm-serif-italic-wonk: 1;
  --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;
  font-optical-sizing: auto;
  font-variation-settings:
    "SOFT" var(--fwm-serif-soft),
    "WONK" var(--fwm-serif-wonk);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

/* Fraunces stays quiet in copy; genuine italics carry the playful accent. */
:where(
  em,
  i,
  .home-intro,
  .entry-content blockquote,
  .project-content blockquote,
  .project-slide figcaption.project-image-title,
  .project-information-title,
  .info-thanks-title,
  .info-bts-cursor-caption,
  .project-grid-cursor-title,
  .fwm-legal__intro h1,
  .site-footer-cta em,
  .site-footer-thanks h2,
  .site-footer-karma,
  .site-footer-local-time__value,
  .info-principles-intro,
  .info-bts-lightbox__caption,
  .info-testimonial blockquote p,
  .journal-entry__title,
  body.page-id-16 .teaching-cta a,
  .project-grid-lightbox-caption
),
.fwm-cursor.is-video-toggle::after {
  font-variation-settings:
    "SOFT" var(--fwm-serif-italic-soft),
    "WONK" var(--fwm-serif-italic-wonk);
}

body.is-leaving {
  overflow: hidden;
}

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

/* Distinguish links inside editorial copy without changing navigation,
   buttons, image links or other interface elements. */
:where(.entry-content, .project-content, .project-details-copy) :where(p, li, blockquote) a:not(.wp-block-button__link) {
  font-style: italic;
  font-variation-settings:
    "SOFT" var(--fwm-serif-italic-soft),
    "WONK" var(--fwm-serif-italic-wonk);
}

/* Gutenberg may mark a standalone project link as small text. Keep the link
   itself aligned with the regular project-detail copy. */
.project-details-content :where(p, li, blockquote) a:not(.wp-block-button__link) {
  font-size: clamp(18px, 1.2vw, 22px);
}

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: normal;
}

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

.home .custom-logo {
  width: clamp(64px, 5.7vw, 94px);
  filter: brightness(0) invert(1) drop-shadow(0 1px 7px rgba(0, 0, 0, .78));
}

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

.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 2px rgba(0, 0, 0, .9), 0 0 15px rgba(0, 0, 0, .68);
}

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

.home.is-leaving .primary-navigation a {
  font-size: 13px;
}

.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-style: italic;
  font-weight: 400;
  letter-spacing: -.016em;
  line-height: 1.28;
  text-wrap: pretty;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .92), 0 0 18px rgba(0, 0, 0, .72);
  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-legal-navigation {
  position: absolute;
  z-index: 3;
  right: var(--fwm-gutter);
  bottom: clamp(15px, 1.8vw, 26px);
  display: flex;
  align-items: center;
  gap: .52em;
  pointer-events: auto;
  font-family: var(--fwm-sans);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .045em;
  line-height: 1.2;
  text-transform: uppercase;
  opacity: .62;
  text-shadow: 0 1px 10px rgba(0, 0, 0, .3);
  transition: opacity 180ms ease, transform 620ms var(--fwm-ease);
}

.home-legal-navigation a {
  text-decoration: none;
}

.home-legal-navigation a:hover,
.home-legal-navigation a:focus-visible {
  color: var(--fwm-accent);
}

.home-legal-navigation:has(a:hover),
.home-legal-navigation:focus-within {
  opacity: 1;
}

.home.is-leaving .home-legal-navigation {
  opacity: 0;
  transform: translateY(8px);
}

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

.home-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(
    ellipse 100% 30% at 50% 52%,
    rgba(0, 0, 0, .22),
    rgba(0, 0, 0, .08) 54%,
    transparent 78%
  );
}

.home-hero img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% var(--fwm-home-focus-y, 50%);
  transform: scale(1.003);
}

/* 0.24.76 — Never expose the cached PHP hero before the client-side
   random choice has finished loading. This prevents a visible image swap. */
html.fwm-random-image-js body.home .home-hero img {
  transition: opacity 180ms ease;
}

html.fwm-random-image-js body.home .home-hero:not([data-home-ready="true"]) img {
  opacity: 0;
}

html.fwm-random-image-js body.home .home-hero[data-home-ready="true"] img {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  html.fwm-random-image-js body.home .home-hero img {
    transition: none;
  }
}

.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: 1em;
  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 {
  font-size: var(--fwm-info-copy-size);
  line-height: 1.48;
}

.info-closing-copy {
  font-family: "Nothing You Could Do", cursive;
  font-size: clamp(22px, 1.6vw, 29px);
  font-style: normal;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: .01em;
  font-synthesis: none;
}

.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: 78ch;
  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;
  }

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

  .home.is-leaving .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: 62px;
  }

  .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);
  }

  .home-legal-navigation {
    right: var(--fwm-gutter);
    bottom: 14px;
    gap: .45em;
    font-size: 9px;
  }

  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-slide figcaption.project-image-title {
  font-family: var(--fwm-serif);
  font-size: 11px;
  font-style: italic;
  font-weight: 400;
  letter-spacing: 0;
  text-align: center;
}

.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);
}

.project-viewer .project-grid-item img {
  width: 100%;
  height: auto;
  transition: filter 240ms ease;
}

.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 img,
.project-viewer .project-grid-item:focus-visible img {
  filter: invert(1);
}

.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;
  font-family: "Nothing You Could Do", cursive;
  font-size: clamp(22px, 1.6vw, 29px);
  font-weight: 400;
  letter-spacing: .01em;
  line-height: 1.5;
  font-synthesis: none;
}

.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;
  text-align: center;
  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;
}

.fwm-cursor.is-native-text {
  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: var(--fwm-sans);
  font-size: .72rem;
  font-weight: 500;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.fwm-legal__intro h1 {
  margin: 0;
  font-family: var(--fwm-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: 700;
  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: .9fr 1.35fr .85fr minmax(230px, 1.2fr);
  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,
.site-footer-newsletter {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

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

.site-footer-newsletter h2 {
  margin-top: 0;
  font-family: var(--fwm-sans);
  line-height: 1.45;
}

.site-footer-newsletter__form {
  position: relative;
  display: flex;
  width: 100%;
  max-width: 420px;
  align-items: center;
  padding-bottom: 8px;
}

.site-footer-newsletter__input {
  width: 100%;
  min-width: 0;
  margin: 0;
  padding: 5px 48px 5px 0;
  border: 0;
  border-radius: 0;
  outline: 0;
  background: transparent;
  box-shadow: none;
  color: inherit;
  font-family: var(--fwm-sans);
  font-size: clamp(25px, 2.15vw, 40px);
  font-weight: 600;
  letter-spacing: -.035em;
  line-height: 1.05;
}

.site-footer-newsletter__input::placeholder {
  color: inherit !important;
  opacity: .48 !important;
  transition: opacity 120ms ease;
}

.site-footer-newsletter__input:focus::placeholder {
  opacity: 0 !important;
}

.site-footer-newsletter__submit {
  position: absolute;
  z-index: 1;
  top: 50%;
  right: 0;
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  transform: translate3d(-8px, -50%, 0);
  transition: opacity 180ms ease, transform 180ms var(--fwm-ease);
}

.site-footer-newsletter__submit svg {
  width: 26px;
  height: 26px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.6;
}

.site-footer-newsletter__form.is-filled .site-footer-newsletter__submit {
  opacity: 1;
  pointer-events: auto;
  transform: translate3d(0, -50%, 0);
}

.site-footer-newsletter__honeypot {
  position: absolute;
  left: -5000px;
}

.site-footer-newsletter__note {
  display: block;
  visibility: visible;
  max-width: 36ch;
  margin: 2px 0 0;
  font-family: var(--fwm-serif);
  font-size: clamp(11px, .7vw, 13px);
  font-style: italic;
  letter-spacing: 0;
  line-height: 1.35;
  opacity: .58;
}

.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;
  }
}

/* Keep the reveal footer fully visible on wide screens with little height. */
@media (min-width: 901px) and (max-height: 1100px) {
  .site-footer {
    gap: clamp(24px, 3.2vh, 42px);
    padding-top: clamp(22px, 3vh, 34px);
  }

  .site-footer-cta {
    font-size: clamp(70px, 13vh, 140px);
  }

  .site-footer-directory,
  .site-footer-thanks {
    padding-top: 16px;
  }
}

@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,
  .site-footer-newsletter__submit,
  .site-footer-newsletter__input::placeholder {
    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 {
  font-family: "Nothing You Could Do", cursive;
 font-size: clamp(18px, 1.1vw, 21px);
  font-style: normal;
  font-weight: 400;
  letter-spacing: .01em;
  line-height: 1.5;
  font-synthesis: none;
}
.info-closing-column .info-closing-copy p {
  font-family: inherit;
}

/* --------------------------------------------------------------------------
   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.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;
  }
}

/* --------------------------------------------------------------------------
   0.13.6 — Static, sharp footer Ensō
   -------------------------------------------------------------------------- */

.site-footer-hero {
  grid-template-columns: minmax(0, 1fr) clamp(180px, 21vw, 350px);
  align-items: center;
  column-gap: clamp(28px, 5vw, 88px);
}

html body .site-footer .site-footer-mark {
  position: relative;
  inset: auto;
  width: 100%;
  margin: 0;
  padding: 0;
  justify-self: end;
  align-self: center;
  opacity: 1;
  filter: none;
  transform: none;
  animation: none;
  transition: none;
  will-change: auto;
}

html body .site-footer .site-footer-mark .custom-logo {
  display: block;
  width: 100%;
  height: auto;
  max-height: none;
  opacity: .86;
  filter: none;
  transform: none;
  animation: none;
  transition: none;
  -webkit-mask-image: none;
  mask-image: none;
}

@media (max-width: 900px) {
  .site-footer {
    gap: clamp(36px, 5vw, 64px);
  }

  .site-footer-hero {
    grid-template-columns: minmax(0, 1fr) clamp(140px, 22vw, 210px);
    column-gap: clamp(20px, 4vw, 48px);
  }
}

@media (max-width: 620px) {
  .site-footer {
    gap: 34px;
    padding-top: 30px;
  }

  .site-footer-hero {
    grid-template-columns: minmax(0, 1fr) clamp(82px, 23vw, 110px);
    align-items: start;
    column-gap: 16px;
  }

  html body .site-footer .site-footer-mark {
    width: 100%;
    margin-top: 6px;
  }

  html body .site-footer .site-footer-mark .custom-logo {
    opacity: .8;
  }
}


/* --------------------------------------------------------------------------
   0.13.8 — Footer menu interaction and Berlin contact status
   -------------------------------------------------------------------------- */

.footer-primary-navigation a {
  position: relative;
  display: inline-flex;
  align-items: baseline;
  overflow: visible;
  padding-block: .08em;
  transition: letter-spacing 420ms var(--fwm-ease);
}
.footer-primary-navigation a::before {
  content: "";
  box-sizing: border-box;
  width: 0;
  height: 6px;
  flex: 0 0 auto;
  align-self: center;
  overflow: hidden;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  opacity: 0;
  transform: rotate(45deg);
  transform-origin: 50% 50%;
  transition:
    width 420ms var(--fwm-ease),
    margin 420ms var(--fwm-ease),
    opacity 260ms ease;
}

.footer-primary-navigation a:hover::before,
.footer-primary-navigation a:focus-visible::before {
  width: 6px;
  margin-inline-end: .45em;
  opacity: 1;
  transform: rotate(45deg);
}

.site-footer-contact {
  gap: 2px;
}

.site-footer-local-time {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0 .28em;
  margin-bottom: 6px;
  font-family: var(--fwm-serif);
  font-size: 1em;
  font-style: normal;
  letter-spacing: .01em;
  line-height: 1.25;
}

.site-footer-local-time__value {
  font-family: var(--fwm-serif);
  font-size: clamp(20px, 1.5vw, 28px);
  font-style: italic;
  letter-spacing: -.045em;
  line-height: .9;
}

.site-footer-contact-note {
  max-width: 29ch;
  margin: 0 0 8px;
  font-size: .82em;
  line-height: 1.35;
  opacity: .72;
}

.site-footer-contact-links {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
}

.site-footer-contact.is-after-hours .site-footer-phone {
  opacity: .48;
  text-decoration-line: line-through;
  text-decoration-thickness: 1px;
  pointer-events: none;
}

@media (max-width: 620px) {
  .site-footer-local-time {
    font-size: 1em;
  }

  .site-footer-local-time__value {
    font-size: 34px;
  }

  .site-footer-contact-note {
    max-width: 34ch;
  }
}

@media (prefers-reduced-motion: reduce) {
  .footer-primary-navigation a,
  .footer-primary-navigation a::before {
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   0.14.0 — Heavy round-tipped portfolio gallery arrows
   -------------------------------------------------------------------------- */

.fwm-cursor.is-directional {
  width: clamp(68px, 6.4vw, 104px);
  height: clamp(68px, 6.4vw, 104px);
  margin: clamp(-52px, -3.2vw, -34px) 0 0 clamp(-52px, -3.2vw, -34px);
  border: 0;
  background: transparent;
}

.fwm-cursor.is-directional::after {
  color: #fff;
  font-family: system-ui, sans-serif;
  font-size: clamp(58px, 5.8vw, 94px);
  font-weight: 900;
  line-height: 1;
  text-shadow: 0 1px 12px rgba(0, 0, 0, .24);
}

.fwm-cursor.is-directional.is-previous::after,
.fwm-cursor.is-directional.is-next::after {
  content: "➜";
}

.fwm-cursor.is-directional.is-previous::after {
  transform: rotate(180deg);
}

.project-viewer-arrow span {
  width: clamp(58px, 7vw, 86px);
  height: clamp(58px, 7vw, 86px);
  border: 0;
  background: transparent;
  color: #fff;
  font-family: system-ui, sans-serif;
  font-size: clamp(52px, 6.4vw, 78px);
  font-weight: 900;
  text-shadow: 0 1px 12px rgba(0, 0, 0, .24);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

.project-viewer-arrow--previous span {
  transform: translateY(-50%) rotate(180deg);
}

.project-viewer-arrow--previous:hover span,
.project-viewer-arrow--previous:focus-visible span {
  border-color: transparent;
  background: transparent;
  transform: translate(-6px, -50%) rotate(180deg);
}

.project-viewer-arrow--next:hover span,
.project-viewer-arrow--next:focus-visible span {
  border-color: transparent;
  background: transparent;
  transform: translate(6px, -50%);
}

@media (pointer: fine) and (min-width: 721px) {
  .project-viewer-arrow:focus-visible span {
    width: 74px;
    height: 74px;
    font-size: 68px;
  }
}

@media (max-width: 720px) {
  .project-viewer-arrow span {
    width: 58px;
    height: 58px;
    font-size: 52px;
  }
}

/* --------------------------------------------------------------------------
   0.15.0 — Compact Info register and near-black reveal footer
   -------------------------------------------------------------------------- */

.info-page.site-main {
  padding-bottom: clamp(70px, 9vw, 140px);
}

.info-hero {
  margin-bottom: clamp(48px, 7vw, 100px);
}

.info-intro {
  max-width: 48ch;
}

.info-register {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(48px, 6vw, 92px) clamp(28px, 4vw, 64px);
  margin-top: clamp(48px, 7vw, 104px);
}

.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: auto;
  grid-row: auto;
  min-width: 0;
}

.info-register-heading {
  margin-bottom: 14px;
}

.info-practice-list,
.info-contact-list,
.info-principles-list {
  font-size: var(--fwm-info-copy-size);
  line-height: 1.45;
}

.info-register-block--awards .info-register-list,
.info-register-block--exhibitions .info-register-list {
  display: block;
  font-size: clamp(13px, .82vw, 15px);
  line-height: 1.65;
}

.info-register-block--awards .info-register-row,
.info-register-block--exhibitions .info-register-row {
  display: inline;
  padding: 0;
  border: 0;
}

.info-register-block--awards .info-register-row:not(:last-child)::after,
.info-register-block--exhibitions .info-register-row:not(:last-child)::after {
  content: " / ";
  padding-inline: .24em;
  color: var(--fwm-accent);
  font-weight: 600;
}

.info-register-block--awards .info-register-row-title,
.info-register-block--awards .info-register-row-detail,
.info-register-block--exhibitions .info-register-row-title,
.info-register-block--exhibitions .info-register-row-detail {
  display: inline;
  font: inherit;
}

.info-register-block--awards
  .info-register-row:has(.info-register-row-detail)
  .info-register-row-title::after,
.info-register-block--exhibitions
  .info-register-row:has(.info-register-row-detail)
  .info-register-row-title::after {
  content: ",";
}

.info-register-block--awards .info-register-row-detail::before,
.info-register-block--exhibitions .info-register-row-detail::before {
  content: none;
}

.info-register-block--awards .info-register-row-detail,
.info-register-block--exhibitions .info-register-row-detail {
  color: var(--fwm-muted);
}

.info-principles-intro {
  margin: 0 0 18px;
  font-family: var(--fwm-serif);
  font-size: clamp(15px, 1.05vw, 18px);
  font-style: italic;
  letter-spacing: -.015em;
  line-height: 1.38;
}

.info-principles-list {
  gap: 0;
}

.info-principles-list li {
  grid-template-columns: 25px minmax(0, 1fr);
  padding-block: 8px;
}

.info-membership-list:has(.has-membership-logo) {
  grid-template-columns: repeat(3, minmax(0, 76px));
  justify-content: start;
  gap: 14px;
}

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

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

.info-closing,
.info-bts {
  margin-top: clamp(76px, 10vw, 150px);
}

.site-footer {
  background: var(--fwm-text);
  color: var(--fwm-bg);
}

html body .site-footer .site-footer-mark .custom-logo {
  filter: brightness(0) invert(1);
  opacity: .78;
}

.site-footer-directory,
.site-footer-thanks {
  border-color: color-mix(in srgb, var(--fwm-bg) 26%, transparent);
}

.site-footer-contact-note,
.site-footer-karma {
  color: color-mix(in srgb, var(--fwm-bg) 72%, transparent);
}

@media (min-width: 1021px) {
  .info-register-block--practice {
    grid-column: 1;
    grid-row: 1;
  }

  .info-register-block--contact {
    grid-column: 2;
    grid-row: 1;
  }

  .info-register-block--memberships {
    grid-column: 3;
    grid-row: 1;
  }

  .info-register-block--awards {
    grid-column: 1;
    grid-row: 2;
  }

  .info-register-block--exhibitions {
    grid-column: 2;
    grid-row: 2;
  }

  .info-register-block--principles {
    grid-column: 3;
    grid-row: 2;
  }
}

@media (max-width: 1020px) {
  .info-register {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .info-hero {
    margin-bottom: 44px;
  }

  .info-register {
    grid-template-columns: 1fr;
    gap: 42px;
    margin-top: 44px;
  }

  .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-membership-list:has(.has-membership-logo) {
    grid-template-columns: repeat(3, minmax(0, 68px));
    gap: 12px;
  }

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

/* --------------------------------------------------------------------------
   0.15.1 — Consistent Info heading rhythm
   -------------------------------------------------------------------------- */

.info-page {
  --fwm-info-heading-gap: 14px;
}

.info-register-heading,
.info-closing-column .info-section-label,
.info-faq .info-section-label {
  margin-top: 0;
  margin-bottom: var(--fwm-info-heading-gap);
}

.info-register-block--awards .info-register-list,
.info-register-block--exhibitions .info-register-list {
  border-top: 0;
}

/* The FAQ rows retain their separators; only the extra rule directly below
   the section heading is removed. */
.info-faq-list {
  border-top: 0;
}

/* --------------------------------------------------------------------------
   0.16.0 — Info portrait: soft until approached
   -------------------------------------------------------------------------- */

.info-hero:has(.info-portrait) .info-title {
  grid-column: 1 / span 2;
  grid-row: 1;
}

.info-hero:has(.info-portrait) .info-portrait {
  grid-column: 9 / span 3;
  grid-row: 1;
}

.info-hero:has(.info-portrait) .info-intro {
  grid-column: 3 / span 6;
  grid-row: 1;
  align-self: start;
  max-width: 56ch;
}

.info-portrait {
  align-self: start;
  width: 100%;
  max-width: 320px;
  margin: 0;
  overflow: hidden;
  aspect-ratio: 4 / 5;
  background: var(--fwm-surface);
  animation: fwm-info-portrait-breathe 9s ease-in-out infinite;
}

@keyframes fwm-info-portrait-breathe {
  0%, 100% { opacity: 1; }
  50% { opacity: .5; }
}

.info-portrait img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: blur(12px);
  transform: scale(1.055);
  transform-origin: center;
  transition:
    filter 1500ms cubic-bezier(.22, .61, .36, 1),
    transform 1500ms cubic-bezier(.22, .61, .36, 1);
}

.info-portrait:hover img,
.info-portrait:focus-visible img {
  filter: blur(0);
  transform: scale(1);
  transition-duration: 380ms, 620ms;
}

.info-portrait:hover,
.info-portrait:focus-visible {
  opacity: 1;
  animation: none;
}

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

@media (max-width: 900px) {
  .info-hero:has(.info-portrait) .info-title {
    grid-column: 1 / span 2;
    grid-row: 1;
  }

  .info-hero:has(.info-portrait) .info-portrait {
    grid-column: 9 / -1;
    grid-row: 1;
  }

  .info-hero:has(.info-portrait) .info-intro {
    grid-column: 3 / span 6;
    grid-row: 1;
  }
}

@media (max-width: 620px) {
  .info-hero:has(.info-portrait) {
    row-gap: 28px;
  }

  .info-hero:has(.info-portrait) .info-title,
  .info-hero:has(.info-portrait) .info-intro,
  .info-hero:has(.info-portrait) .info-portrait {
    grid-column: 1 / -1;
  }

  .info-hero:has(.info-portrait) .info-title {
    grid-row: 1;
  }

  .info-hero:has(.info-portrait) .info-intro {
    grid-row: 2;
  }

  .info-hero:has(.info-portrait) .info-portrait {
    grid-row: 3;
    width: min(68vw, 300px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .info-portrait {
    opacity: 1;
    animation: none;
  }

  .info-portrait img {
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   0.16.3 — Tighter Working Principles list
   -------------------------------------------------------------------------- */

.info-principles-list li {
  align-items: baseline;
  padding-block: 4px;
  line-height: 1.4;
}

.info-principles-list li::before {
  line-height: 1.4;
}

/* --------------------------------------------------------------------------
   0.17.0 — Quieter FAQ questions
   -------------------------------------------------------------------------- */

.info-faq-question {
  font-weight: 400;
}

/* --------------------------------------------------------------------------
   0.17.1 — More prominent vacation note
   -------------------------------------------------------------------------- */

.site-footer-contact[data-vacation-mode="true"] .site-footer-contact-note {
  max-width: 34ch;
  margin-bottom: 12px;
  font-size: 1em;
  line-height: 1.32;
  opacity: .88;
}

@media (max-width: 620px) {
  .site-footer-contact[data-vacation-mode="true"] .site-footer-contact-note {
    max-width: 30ch;
    font-size: 1em;
  }
}

/* --------------------------------------------------------------------------
   0.18.0 — Behind-the-scenes lightbox
   -------------------------------------------------------------------------- */

.info-bts-image {
  cursor: zoom-in;
}

body.is-bts-lightbox-open {
  overflow: hidden;
}

body.is-bts-lightbox-open .info-bts-marquee {
  animation-play-state: paused;
}

.info-bts-lightbox[hidden] {
  display: none;
}

.info-bts-lightbox {
  position: fixed;
  z-index: 10020;
  inset: 0;
  display: grid;
  place-items: center;
  padding: clamp(64px, 7vw, 112px) clamp(20px, 4vw, 72px) clamp(28px, 4vw, 64px);
  background: rgba(12, 12, 11, .965);
  cursor: zoom-out;
  opacity: 0;
  visibility: hidden;
  transition: opacity 280ms ease, visibility 280ms step-end;
}

.info-bts-lightbox.is-open {
  opacity: 1;
  visibility: visible;
  transition: opacity 280ms ease, visibility 0ms step-start;
}

.info-bts-lightbox__close {
  position: absolute;
  top: clamp(18px, 2.4vw, 34px);
  right: clamp(18px, 2.4vw, 38px);
  display: inline-flex;
  align-items: center;
  gap: .45em;
  padding: 8px;
  border: 0;
  background: transparent;
  color: var(--fwm-bg);
  font-family: var(--fwm-sans);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .07em;
  line-height: 1;
  text-transform: uppercase;
  cursor: pointer;
  opacity: .78;
  transition: opacity 180ms ease;
}

.info-bts-lightbox__close span[aria-hidden="true"] {
  font-size: 22px;
  font-weight: 300;
  line-height: .5;
}

.info-bts-lightbox__close:hover,
.info-bts-lightbox__close:focus-visible {
  opacity: 1;
}

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

.info-bts-lightbox__figure {
  display: grid;
  max-width: 100%;
  max-height: 100%;
  justify-items: center;
  margin: 0;
  cursor: default;
}

.info-bts-lightbox__image {
  display: block;
  width: auto;
  max-width: min(92vw, 1800px);
  height: auto;
  max-height: calc(100dvh - 190px);
  object-fit: contain;
  opacity: 0;
  transform: scale(.985);
  transition: opacity 300ms ease, transform 500ms var(--fwm-ease);
}

.info-bts-lightbox.is-open .info-bts-lightbox__image {
  opacity: 1;
  transform: scale(1);
}

.info-bts-lightbox__caption {
  max-width: min(62ch, 88vw);
  margin-top: clamp(14px, 1.8vw, 24px);
  color: var(--fwm-bg);
  font-family: var(--fwm-serif);
  font-size: clamp(17px, 1.25vw, 24px);
  font-style: italic;
  letter-spacing: -.01em;
  line-height: 1.35;
  text-align: center;
  text-wrap: balance;
}

@media (max-width: 620px) {
  .info-bts-lightbox {
    padding: 62px 14px 24px;
  }

  .info-bts-lightbox__image {
    max-width: calc(100vw - 28px);
    max-height: calc(100dvh - 150px);
  }

  .info-bts-lightbox__caption {
    max-width: calc(100vw - 36px);
    font-size: 17px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .info-bts-lightbox,
  .info-bts-lightbox__image {
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   0.19.0 — Testimonials below “A little more”
   -------------------------------------------------------------------------- */

.info-testimonials {
  margin-top: clamp(54px, 6vw, 92px);
  padding-top: 15px;
  border-top: 1px solid var(--fwm-line);
}

.info-testimonials__slides {
  display: grid;
}

.info-testimonial {
  grid-area: 1 / 1;
  align-self: start;
  opacity: 0;
  visibility: hidden;
  transform: translate3d(12px, 0, 0);
  transition:
    opacity 360ms ease,
    transform 520ms var(--fwm-ease),
    visibility 360ms step-end;
}

.info-testimonial.is-active {
  opacity: 1;
  visibility: visible;
  transform: translate3d(0, 0, 0);
  transition:
    opacity 420ms ease 80ms,
    transform 560ms var(--fwm-ease) 40ms,
    visibility 0ms step-start;
}

.info-testimonial blockquote {
  margin: 0;
}

.info-testimonial blockquote p {
  margin: 0;
  font-family: var(--fwm-serif);
  font-size: clamp(15px, 1.05vw, 18px);
  font-style: italic;
  letter-spacing: -.015em;
  line-height: 1.38;
  text-wrap: pretty;
}

.info-testimonial__source {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px .45em;
  margin-top: clamp(22px, 2.3vw, 34px);
  font-family: var(--fwm-sans);
  font-size: 12px;
  line-height: 1.4;
}

.info-testimonial__source cite {
  font-style: normal;
  font-weight: 500;
}

.info-testimonial__role {
  color: var(--fwm-muted);
}

.info-testimonial__role::before {
  content: "·";
  margin-inline-end: .45em;
  color: var(--fwm-accent);
}

.info-testimonials__controls {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: clamp(28px, 3vw, 44px);
  font-family: var(--fwm-sans);
}

.info-testimonials__status {
  margin-inline-end: auto;
  color: var(--fwm-muted);
  font-size: 10px;
  letter-spacing: .07em;
}

.info-testimonials__button {
  padding: 5px 0;
  border: 0;
  background: transparent;
  color: var(--fwm-text);
  font-family: inherit;
  font-size: 12px;
  line-height: 1.2;
  cursor: pointer;
  transition: color 180ms ease, transform 260ms var(--fwm-ease);
}

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

.info-testimonials__button--previous:hover,
.info-testimonials__button--previous:focus-visible {
  transform: translateX(-3px);
}

.info-testimonials__button--next:hover,
.info-testimonials__button--next:focus-visible {
  transform: translateX(3px);
}

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

@media (max-width: 700px) {
  .info-testimonials {
    margin-top: 48px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .info-testimonial,
  .info-testimonials__button {
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   0.20.0 — Fully diffused portrait edge and original comic-eye BTS cursor
   -------------------------------------------------------------------------- */

/* Let the filtered pixels breathe beyond the image box. The blur now fades
   into the page instead of being cut off by a perfectly sharp rectangle. */
.info-portrait {
  overflow: visible;
  background: transparent;
}

@media (pointer: fine) {
  html.fwm-custom-cursor .info-bts-image {
    cursor: none;
  }
}

.fwm-cursor.is-bts-view {
  z-index: 10010;
  width: 76px;
  height: 71px;
  margin: -35px 0 0 -38px;
  border: 0;
  border-radius: 0;
  background-color: transparent;
  background-image: url("assets/images/bts-cartoon-cursor.svg");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  mix-blend-mode: normal;
  filter: drop-shadow(0 2px 1px rgba(27, 27, 24, .18));
}

.fwm-cursor.is-bts-view::before,
.fwm-cursor.is-bts-view::after {
  display: none;
}

.fwm-cursor.is-bts-view.is-link {
  width: 76px;
  height: 71px;
  margin: -35px 0 0 -38px;
}

@media (prefers-reduced-motion: reduce) {
  .fwm-cursor.is-bts-view {
    display: none;
  }
}
/* --------------------------------------------------------------------------
   0.21.0 — edge utilities: DE/EN language pair and persistent colour mode
   -------------------------------------------------------------------------- */

.header-utilities {
  position: absolute;
  top: calc(var(--fwm-header-y) + .5em);
  right: var(--fwm-gutter);
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: .22em;
  pointer-events: auto;
  font-family: var(--fwm-sans);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .05em;
  line-height: 1.2;
  text-transform: uppercase;
  transition: top 620ms var(--fwm-ease), transform 620ms var(--fwm-ease);
}

.home .header-utilities {
  top: var(--fwm-home-utilities-top, calc(50% - 2.2em));
  transform: none;
  text-shadow: 0 1px 14px rgba(0, 0, 0, .22);
}

.home.is-leaving .header-utilities {
  top: calc(var(--fwm-header-y) + .5em);
  transform: none;
}

.fwm-language-switcher {
  white-space: nowrap;
}

.fwm-language-switcher a,
.fwm-language-switcher .is-current,
.fwm-language-switcher__separator {
  display: inline-block;
}

.fwm-language-switcher__separator {
  margin-inline: .3em;
}

.fwm-language-switcher a,
.fwm-color-toggle {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  text-transform: inherit;
  text-decoration: none;
  transition: color 180ms ease;
}

.fwm-language-switcher a,
.fwm-language-switcher__separator,
.fwm-color-toggle {
  opacity: .42;
}

.fwm-language-switcher .is-current {
  opacity: 1;
}

.fwm-language-switcher a:hover,
.fwm-language-switcher a:focus-visible,
.fwm-color-toggle:hover,
.fwm-color-toggle:focus-visible {
  color: var(--fwm-accent);
  opacity: 1;
}

.fwm-color-toggle {
  cursor: pointer;
}

.fwm-color-toggle__light,
html[data-fwm-color-scheme="dark"] .fwm-color-toggle__dark {
  display: none;
}

html[data-fwm-color-scheme="dark"] .fwm-color-toggle__light {
  display: inline;
}

html[data-fwm-color-scheme="dark"] {
  color-scheme: dark;
  --fwm-bg: #171716;
  --fwm-surface: #272724;
  --fwm-text: #fbfaf2;
  --fwm-muted: #aaa6a0;
  --fwm-line: #3d3b37;
  --fwm-inverse: #171716;
}

html[data-fwm-color-scheme="dark"] .project-viewer-arrow span {
  border-color: rgba(251, 250, 242, .28);
  background: rgba(23, 23, 22, .82);
}

html[data-fwm-color-scheme="dark"] .project-viewer-arrow:hover span,
html[data-fwm-color-scheme="dark"] .project-viewer-arrow:focus-visible span {
  border-color: rgba(251, 250, 242, .62);
  background: rgba(23, 23, 22, .96);
}

html[data-fwm-color-scheme="dark"] .info-bts-cursor-caption {
  border-color: rgba(251, 250, 242, .18);
  background: rgba(23, 23, 22, .94);
}

html[data-fwm-color-scheme="dark"] .info-membership-list .has-membership-logo img {
  filter: invert(1);
  opacity: .82;
}

html[data-fwm-color-scheme="dark"] .info-membership-list .has-membership-logo a:hover img,
html[data-fwm-color-scheme="dark"] .info-membership-list .has-membership-logo a:focus-visible img {
  filter: invert(1) blur(.25px);
  opacity: 1;
}

html[data-fwm-color-scheme="dark"] body:not(.home) .custom-logo,
html[data-fwm-color-scheme="dark"] body:not(.home) .site-branding .custom-logo {
  filter: brightness(0) invert(1);
}

html[data-fwm-color-scheme="dark"] body .site-footer .site-footer-mark .custom-logo {
  filter: brightness(0);
}

@media (max-width: 620px) {
  .header-utilities,
  .home .header-utilities,
  .home.is-leaving .header-utilities {
    top: 17px;
    right: var(--fwm-gutter);
    transform: none;
    font-size: 11px;
  }

  .header-utilities {
    gap: .15em;
  }
}

@media (prefers-reduced-motion: reduce) {
  .header-utilities,
  .fwm-language-switcher a,
  .fwm-color-toggle {
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   0.21.6 — compact, left-aligned Info introduction
   -------------------------------------------------------------------------- */

.info-page .info-intro {
  text-align: left;
  text-align-last: auto;
  hyphens: none;
  -webkit-hyphens: none;
  letter-spacing: -.006em;
  line-height: 1.58;
}

.info-page .info-intro > p + p {
  margin-top: clamp(.82em, 1.25vw, 1.08em);
}

@media (max-width: 620px) {
  .info-page .info-intro {
    letter-spacing: -.004em;
  }

  .info-page .info-intro > p + p {
    margin-top: .92em;
  }
}
html.lenis,
html.lenis body {
  height: auto;
}

.lenis:not(.lenis-autoToggle).lenis-stopped {
  overflow: clip;
}

.lenis [data-lenis-prevent],
.lenis [data-lenis-prevent-wheel],
.lenis [data-lenis-prevent-touch],
.lenis [data-lenis-prevent-vertical],
.lenis [data-lenis-prevent-horizontal] {
  overscroll-behavior: contain;
}

.lenis.lenis-smooth iframe {
  pointer-events: none;
}

.lenis.lenis-autoToggle {
  transition-property: overflow;
  transition-duration: 1ms;
  transition-behavior: allow-discrete;
}


/* --------------------------------------------------------------------------
   Recovery: components added after the last complete local theme stylesheet
   -------------------------------------------------------------------------- */

/* Info: late register and editable profile blocks. */
.info-clients-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  font-family: var(--fwm-sans);
  font-size: 13px;
  line-height: 1.65;
}

.info-clients-list li {
  display: inline;
}

.info-clients-list li:not(:last-child)::after {
  content: " / ";
  margin-inline: .38em;
  color: var(--fwm-accent);
}

.info-profile-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(44px, 7vw, 120px);
  margin-top: clamp(76px, 10vw, 150px);
}

.info-profile-pair > * {
  min-width: 0;
  margin-top: 0;
}

.info-profile-pair .info-register-block--principles,
.info-profile-pair .info-testimonials {
  grid-column: auto;
  grid-row: auto;
}

.info-profile-pair .info-testimonials {
  padding-top: 15px;
  border-top: 1px solid var(--fwm-line);
}

.info-availability-busy {
  display: none;
}

html[lang^="en"] .info-availability-busy--en,
html[lang^="de"] .info-availability-busy--de {
  display: block;
}

.info-availability-open {
  display: block;
  margin-top: .22em;
}

@media (max-width: 760px) {
  .info-profile-pair {
    grid-template-columns: 1fr;
    gap: 54px;
  }
}

/* Journal overview: two restrained image/text pairs per row. */
.home .menu-item-journal {
  display: none;
}

/* 0.24.46 — Contextual primary navigation. */
.site-header .primary-navigation .menu-item-journal {
  order: 3;
}

.site-header .primary-navigation li:has(> a[href*="/teaching/"]) {
  order: 4;
}

.site-header .primary-navigation .menu-item-fine-art-prints {
  order: 5;
}

.home .site-header .primary-navigation ul {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.home .site-header .primary-navigation .menu-item-journal {
  display: list-item;
  text-align: right;
}

.home .site-header .primary-navigation li:has(> a[href*="/teaching/"]),
.home .site-header .primary-navigation .menu-item-fine-art-prints {
  display: none;
}

/* During the home-to-inner-page FLIP measurement, the two inner-page-only
   entries must occupy their final space. They stay invisible until the new
   document loads, but the three visible home links can now travel directly
   to their positions in the complete five-item menu. */
.home.is-leaving .site-header .primary-navigation li:has(> a[href*="/teaching/"]),
.home.is-leaving .site-header .primary-navigation .menu-item-fine-art-prints {
  display: list-item;
  visibility: hidden;
  pointer-events: none;
}

/* Hold the two additional entries outside the frame until JavaScript starts
   their one-off arrival. The class is consumed immediately afterwards, so a
   later menu update cannot replay the entrance. */
html.fwm-arriving-from-home body:not(.home) .site-header .primary-navigation li:has(> a[href*="/teaching/"]),
html.fwm-arriving-from-home body:not(.home) .site-header .primary-navigation .menu-item-fine-art-prints {
  opacity: 0;
  transform: translate3d(24px, 0, 0);
  will-change: opacity, transform;
}

@media (prefers-reduced-motion: reduce) {
  html.fwm-arriving-from-home body:not(.home) .site-header .primary-navigation li:has(> a[href*="/teaching/"]),
  html.fwm-arriving-from-home body:not(.home) .site-header .primary-navigation .menu-item-fine-art-prints {
    opacity: 1;
    transform: none;
  }
}

.journal-main {
  width: min(var(--fwm-max), 100%);
  max-width: none;
  padding: clamp(150px, 15vw, 230px) var(--fwm-gutter) clamp(90px, 10vw, 160px);
}

.journal-main .journal-header {
  display: none;
}

.journal-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(90px, 11vw, 180px) clamp(50px, 7vw, 120px);
}

.journal-card {
  display: grid;
  grid-template-columns: minmax(0, 1.03fr) minmax(0, .97fr);
  align-items: center;
  gap: clamp(24px, 3vw, 54px);
  min-width: 0;
}

.journal-card__media {
  display: block;
  overflow: hidden;
  background: var(--fwm-surface);
}

.journal-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 700ms var(--fwm-ease), opacity 260ms ease;
}

.journal-card:hover .journal-card__media img,
.journal-card:focus-within .journal-card__media img {
  transform: scale(1.018);
}

.journal-card__copy {
  min-width: 0;
  text-align: center;
}

.journal-card__copy .journal-kicker {
  margin: 0 0 14px;
  color: var(--fwm-accent);
  font-family: var(--fwm-sans);
  font-size: 9px;
  font-weight: 500;
  letter-spacing: .13em;
  line-height: 1.2;
  text-transform: uppercase;
}

.journal-card__title {
  margin: 0 0 14px;
  font-family: var(--fwm-sans);
  font-size: clamp(11px, .86vw, 14px);
  font-weight: 600;
  letter-spacing: .105em;
  line-height: 1.35;
  text-transform: uppercase;
}

.journal-card__title a,
.journal-card__link {
  color: inherit;
  text-decoration: none;
}

.journal-card__excerpt {
  font-family: var(--fwm-sans);
  font-size: clamp(11px, .78vw, 13px);
  letter-spacing: .04em;
  line-height: 1.45;
}

.journal-card__excerpt > * {
  margin: 0;
}

.journal-card__link {
  display: inline-block;
  margin-top: 18px;
  color: var(--fwm-muted);
  font-family: var(--fwm-sans);
  font-size: 9px;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.journal-card__link:hover,
.journal-card__link:focus-visible {
  color: var(--fwm-accent);
}

@media (max-width: 980px) {
  .journal-list {
    grid-template-columns: 1fr;
    gap: 82px;
  }

  .journal-card {
    grid-template-columns: minmax(0, 1fr) minmax(220px, .82fr);
  }
}

@media (max-width: 620px) {
  .journal-main {
    padding-top: 126px;
  }

  .journal-card {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .journal-card__media {
    aspect-ratio: 4 / 5;
  }

  .journal-card__copy {
    padding-inline: 8vw;
  }
}

/* Journal entry: editorial serif headline, sans-serif body and balanced grid. */
.journal-entry {
  padding-top: 0;
}

.journal-entry__header {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 20px;
  margin-bottom: clamp(48px, 7vw, 100px);
}

.journal-entry__header .journal-kicker {
  grid-column: 1 / span 2;
  margin: .5em 0 0;
  color: var(--fwm-accent);
  font-family: var(--fwm-sans);
  font-size: 10px;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.journal-entry__title,
.journal-entry__intro {
  grid-column: 4 / span 7;
}

.journal-entry__title {
  margin: 0;
  font-family: var(--fwm-serif);
  font-size: clamp(42px, 5vw, 82px);
  font-style: italic;
  font-weight: 400;
  letter-spacing: -.035em;
  line-height: .98;
}

.journal-entry__intro {
  margin-top: 18px;
  font-family: var(--fwm-sans);
  font-size: clamp(14px, 1vw, 17px);
  line-height: 1.5;
}

.journal-entry__intro > * {
  margin: 0;
}

.journal-entry__content {
  font-family: var(--fwm-sans);
  font-size: clamp(14px, 1vw, 17px);
  line-height: 1.58;
}

.journal-entry__content > p,
.journal-entry__content > h2,
.journal-entry__content > h3,
.journal-entry__content > blockquote {
  width: min(720px, 100%);
  margin-inline: auto;
}

.journal-entry__content > p {
  margin-top: 0;
  margin-bottom: 1.25em;
}

.journal-entry__content .fwm-journal-hero {
  width: min(60vw, 1020px);
  margin: 0 auto clamp(36px, 4vw, 64px);
  aspect-ratio: auto !important;
  overflow: visible !important;
}

.journal-entry__content .fwm-journal-hero img,
.journal-entry__content > .wp-block-image img {
  display: block;
  width: auto;
  max-width: 100%;
  max-height: min(62svh, 720px);
  height: auto !important;
  margin-inline: auto;
  aspect-ratio: auto !important;
  object-fit: contain;
  object-position: center;
  clip-path: none;
}

.fwm-journal-gallery {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: clamp(20px, 2vw, 38px);
  width: min(70vw, 1240px);
  margin: clamp(64px, 8vw, 120px) auto 0;
}

.fwm-journal-gallery .wp-block-image {
  width: 100% !important;
  margin: 0 !important;
}

.fwm-journal-gallery img {
  display: block;
  width: auto;
  max-width: 100%;
  max-height: min(68svh, 760px);
  height: auto;
  margin-inline: auto;
  object-fit: contain;
}

.journal-entry .wp-element-caption,
.fwm-journal-gallery figcaption {
  display: none !important;
}

.journal-entry__footer {
  margin-top: clamp(76px, 10vw, 150px);
  padding-top: 15px;
  border-top: 1px solid var(--fwm-line);
  font-family: var(--fwm-sans);
  font-size: 11px;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.journal-entry__footer a {
  color: inherit;
  text-decoration: none;
}

@media (max-width: 760px) {
  .journal-entry__header {
    grid-template-columns: 1fr;
  }

  .journal-entry__header .journal-kicker,
  .journal-entry__title,
  .journal-entry__intro {
    grid-column: 1;
  }

  .journal-entry__content .fwm-journal-hero,
  .fwm-journal-gallery {
    width: 100%;
  }

  .fwm-journal-gallery {
    grid-template-columns: 1fr;
  }
}

.single-post .journal-entry__content .journal-gallery {
  margin-top: clamp(32px, 4vw, 56px);
}

/* Footer project-image Ensō and mail interaction. */
.site-footer-mark {
  width: clamp(180px, 17vw, 360px);
  aspect-ratio: 1;
  padding-top: 0;
  flex: none;
  pointer-events: auto;
  animation: none;
  transform: none;
}

.site-footer-enso-gallery {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none !important;
  max-height: none !important;
  overflow: hidden;
  -webkit-mask: url("https://florianwm.de/wp-content/uploads/2026/08/fwm26-footer-enso-mask-768.png") center / contain no-repeat;
  mask: url("https://florianwm.de/wp-content/uploads/2026/08/fwm26-footer-enso-mask-768.png") center / contain no-repeat;
}

.site-footer-enso-gallery__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.site-footer-contact-note {
  max-width: 26em;
  margin: .5em 0 .75em;
  font-size: clamp(15px, 1.05vw, 18px);
  line-height: 1.38;
}

.site-footer-mail-cursor {
  position: fixed;
  z-index: 10020;
  top: 0;
  left: 0;
  display: block;
  width: 132px;
  height: 168px;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transform: translate3d(-220px, -220px, 0);
  transition: opacity 120ms ease, visibility 0s linear 120ms;
}

.site-footer-mail-cursor.is-visible {
  opacity: 1;
  visibility: visible;
  transition-delay: 0s;
}

.site-footer-mail-cursor svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.site-footer-mail-cursor__ink {
  fill: none;
  stroke: var(--fwm-bg);
}

.site-footer-mail-cursor__paper {
  fill: var(--fwm-text);
  stroke: var(--fwm-bg);
}

.site-footer-mail-cursor__eye,
.site-footer-mail-cursor__hand {
  fill: var(--fwm-bg);
}

.site-footer-mail-cursor__eye-shine {
  fill: var(--fwm-text);
}

@media (max-width: 900px) {
  .site-footer-mark {
    width: clamp(150px, 22vw, 230px);
  }
}

/* Project viewer cursors added after the original arrow treatment. */
@media (pointer: fine) {
  html.fwm-custom-cursor [data-cursor-direction],
  html.fwm-custom-cursor .project-slide video {
    cursor: none;
  }
}

.fwm-cursor.is-bts-view,
.fwm-cursor.is-directional {
  width: 76px !important;
  height: 101px !important;
  margin: -50px 0 0 -38px !important;
  border: 0;
  border-radius: 0;
  background: transparent;
  mix-blend-mode: normal;
  filter: none;
  transition: none !important;
}

.fwm-cursor.is-bts-view::before,
.fwm-cursor.is-directional::before {
  display: none;
}

.fwm-cursor.is-bts-view::after,
.fwm-cursor.is-directional::after {
  content: "" !important;
  display: block;
  width: 100%;
  height: 100%;
  background: transparent url("assets/images/bts-cartoon-cursor.svg?ver=0.24.16") center / contain no-repeat;
  opacity: 1;
  filter: drop-shadow(0 2px 1px rgba(27, 27, 24, .18));
  transform: none;
}

.fwm-cursor.is-directional.is-previous::after,
.fwm-cursor.is-directional.is-next::after {
  content: "" !important;
}

/* Keep the full-canvas navigation targets, but never draw their legacy arrow. */
@media (pointer: fine) and (min-width: 721px) {
  .project-viewer-arrow span,
  .project-viewer-arrow:hover span,
  .project-viewer-arrow:focus-visible span {
    opacity: 0 !important;
    visibility: hidden !important;
  }
}

/* More presence on genuinely large desktop displays; laptop sizing stays intact. */
@media (min-width: 1900px) and (min-height: 1000px) {
  .project-viewer-canvas {
    height: min(78svh, 940px);
  }

  .project-slide img {
    max-width: min(72vw, 1440px);
    max-height: min(78svh, 940px);
  }

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

.fwm-cursor.is-video-toggle {
  width: auto;
  height: auto;
  min-width: 130px;
  margin: -34px 0 0 -65px;
  border: 0;
  border-radius: 0;
  background: transparent;
  mix-blend-mode: normal;
  filter: none;
}

.fwm-cursor.is-video-toggle::before {
  display: none;
}

.fwm-cursor.is-video-toggle::after {
  content: attr(data-video-cursor-label);
  display: block;
  width: auto;
  height: auto;
  color: var(--fwm-accent);
  font-family: var(--fwm-serif);
  font-size: clamp(42px, 5vw, 78px);
  font-style: italic;
  letter-spacing: -.04em;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  .site-footer-mail-cursor {
    display: none;
  }
}


/* 0.24.21 — restore the custom project film player */
.project-film-player {
  position: relative;
  display: flex;
  width: 100%;
  height: 100%;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: #000;
}

.project-film {
  display: block;
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: min(78svh, 940px);
  object-fit: contain;
  background: #000;
}

.project-film:focus {
  outline: 0;
}

.project-film:focus-visible {
  outline: 1px solid var(--fwm-accent);
  outline-offset: -1px;
}

.project-film-controls {
  position: absolute;
  z-index: 4;
  right: 0;
  bottom: 0;
  left: 0;
  display: grid;
  gap: 9px;
  padding: clamp(12px, 1.25vw, 20px);
  color: #fffdf6;
  background: linear-gradient(to top, rgba(0, 0, 0, .58), rgba(0, 0, 0, 0));
  font-family: var(--fwm-sans);
  font-size: clamp(9px, .72vw, 12px);
  font-weight: 500;
  letter-spacing: .045em;
  line-height: 1;
  opacity: .7;
  transition: opacity 180ms ease;
}

.project-film-player:hover .project-film-controls,
.project-film-player:focus-within .project-film-controls {
  opacity: 1;
}

.project-film-controls__meta {
  display: flex;
  align-items: center;
  gap: 1.1em;
}

.project-film-controls button {
  appearance: none;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  color: inherit;
  background: transparent;
  font: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  cursor: pointer;
}

.project-film-controls button:hover,
.project-film-controls button:focus-visible {
  color: var(--fwm-accent);
  outline: 0;
}

.project-film-time {
  margin-left: auto;
  font-variant-numeric: tabular-nums;
}

.project-film-progress {
  --fwm-film-progress: 0%;
  appearance: none;
  width: 100%;
  height: 9px;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
}

.project-film-progress::-webkit-slider-runnable-track {
  height: 1px;
  border: 0;
  background: linear-gradient(
    to right,
    var(--fwm-accent) 0,
    var(--fwm-accent) var(--fwm-film-progress),
    rgba(255, 255, 255, .46) var(--fwm-film-progress),
    rgba(255, 255, 255, .46) 100%
  );
}

.project-film-progress::-webkit-slider-thumb {
  appearance: none;
  width: 7px;
  height: 7px;
  margin-top: -3px;
  border: 0;
  border-radius: 50%;
  background: #fffdf6;
}

.project-film-progress::-moz-range-track {
  height: 1px;
  border: 0;
  background: rgba(255, 255, 255, .46);
}

.project-film-progress::-moz-range-progress {
  height: 1px;
  background: var(--fwm-accent);
}

.project-film-progress::-moz-range-thumb {
  width: 7px;
  height: 7px;
  border: 0;
  border-radius: 50%;
  background: #fffdf6;
}

.project-thumbnail--video {
  position: relative;
  overflow: hidden;
}

.project-media-film-label {
  position: absolute;
  z-index: 2;
  right: 5px;
  bottom: 5px;
  display: block;
  padding: 2px 3px;
  color: #fffdf6;
  background: rgba(0, 0, 0, .16);
  font-family: var(--fwm-sans);
  font-size: 8px;
  font-weight: 600;
  letter-spacing: .08em;
  line-height: 1;
  text-transform: uppercase;
  text-shadow: 0 1px 5px rgba(0, 0, 0, .72);
  pointer-events: none;
}

.project-film-player:fullscreen,
.project-film-player:-webkit-full-screen {
  width: 100vw;
  height: 100vh;
  background: #000;
}

.project-film-player:fullscreen .project-film,
.project-film-player:-webkit-full-screen .project-film {
  width: 100%;
  height: 100%;
  max-height: none;
  object-fit: contain;
}

@media (max-width: 720px) {
  .project-film-controls {
    gap: 7px;
    padding: 10px;
    font-size: 9px;
  }

  .project-film-controls__meta {
    gap: .85em;
  }

  .project-media-film-label {
    right: 3px;
    bottom: 3px;
    font-size: 7px;
  }
}


/* 0.24.23 — repair film sizing and the final custom-cursor states */
.project-slide--video .project-film-player {
  width: min(60vw, 1200px);
  height: auto;
  aspect-ratio: auto;
  overflow: hidden;
  background: transparent;
}

.project-slide--video .project-film {
  display: block;
  width: 100%;
  height: auto;
  max-width: 100%;
  max-height: min(72svh, 860px);
  object-fit: contain;
  background: transparent;
}

/* The film itself owns its pointer area; the two gallery halves remain behind
   it and therefore become the eye navigation only outside the film. */
.project-slide--video.is-active {
  z-index: 7;
  pointer-events: none;
}

.project-slide--video.is-active .project-film-player {
  position: relative;
  z-index: 7;
  pointer-events: auto;
}

@media (pointer: fine) and (min-width: 721px) {
  .project-viewer-canvas:has(.project-slide--video.is-active) .project-viewer-arrow {
    z-index: 6;
    width: 50%;
  }

  .project-viewer-canvas:has(.project-slide--video.is-active) .project-viewer-arrow--previous {
    left: 0;
    right: auto;
  }

  .project-viewer-canvas:has(.project-slide--video.is-active) .project-viewer-arrow--next {
    right: 0;
    left: auto;
  }
}

/* The source eyes look left. Keep that orientation for “previous” and mirror
   them horizontally — never rotate them — for “next”. */
.fwm-cursor.is-directional.is-previous::after {
  transform: scaleX(1) !important;
}

.fwm-cursor.is-directional.is-next::after {
  transform: scaleX(-1) !important;
}

/* The custom dot is the only pointer shown in a project's grid view. */
@media (pointer: fine) {
  html.fwm-custom-cursor .project-viewer .project-grid,
  html.fwm-custom-cursor .project-viewer .project-grid-item,
  html.fwm-custom-cursor .project-viewer .project-grid-item * {
    cursor: none !important;
  }
}

/* Project-preview films are decorative links, not standalone browser players. */
.project-card-media--video video {
  pointer-events: none;
}

.project-card-media--video video::-webkit-media-controls-picture-in-picture-button,
.project-card-media--video video::-webkit-media-controls-overlay-play-button {
  display: none !important;
}

/* Keep the normal custom dot in the open BTS lightbox. */
@media (pointer: fine) {
  html.fwm-custom-cursor body.is-bts-lightbox-open .info-bts-lightbox,
  html.fwm-custom-cursor body.is-bts-lightbox-open .info-bts-lightbox * {
    cursor: none !important;
  }

  body.is-bts-lightbox-open .fwm-cursor {
    z-index: 10030;
  }
}

@media (max-width: 720px) {
  .project-slide--video .project-film-player {
    width: 100%;
  }

  .project-slide--video .project-film {
    max-height: 70svh;
  }
}


/* ==========================================================================
   0.24.27 — Teaching split layout + full-viewport Work index hover
   ========================================================================== */

/* ==========================================================================
   Teaching page — editable 1/3–2/3 editorial layout
   ========================================================================== */

body.page-id-16 .site-main {
  width: 100%;
  max-width: none;
  padding-top: clamp(132px, 13vw, 210px);
  padding-inline: clamp(24px, 3vw, 64px);
}

body.page-id-16 .entry-header,
body.page-id-16 .entry-title,
body.page-id-16 .page-header,
body.page-id-16 .page-title {
  display: none;
  margin: 0;
}

body.page-id-16 .entry-content {
  width: 100%;
  max-width: none;
  margin: 0;
}

body.page-id-16 .teaching-experience.wp-block-columns {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  gap: clamp(58px, 6vw, 116px);
  align-items: start;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0 0 clamp(110px, 14vh, 180px);
  border-top: 0;
}

body.page-id-16 .teaching-experience > .teaching-visual,
body.page-id-16 .teaching-experience > .teaching-copy {
  min-width: 0;
  margin: 0;
}

body.page-id-16 .teaching-experience > .teaching-visual {
  position: sticky;
  top: clamp(112px, 14vh, 168px);
  display: flex;
  justify-content: center;
  height: auto;
  min-height: 0;
  padding-block: clamp(8px, 1.5vh, 22px);
}

body.page-id-16 .teaching-image-stage.wp-block-gallery {
  position: relative;
  display: block !important;
  width: min(100%, 300px);
  max-width: 300px;
  height: min(48svh, 490px);
  min-height: 350px;
  margin-inline: auto;
}

body.page-id-16 .teaching-image-stage > figure.wp-block-image {
  position: absolute !important;
  inset: 0 !important;
  display: flex !important;
  flex-direction: column;
  justify-content: center;
  width: 100% !important;
  max-width: none !important;
  height: 100%;
  margin: 0 !important;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

body.page-id-16 .teaching-experience:not(.is-ready) .teaching-image-stage > figure.wp-block-image:first-child,
body.page-id-16 .teaching-image-stage > figure.wp-block-image.is-active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

body.page-id-16 .teaching-image-stage > figure.wp-block-image::before {
  content: none !important;
  display: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  mask-image: none !important;
  -webkit-mask-image: none !important;
}

body.page-id-16 .teaching-image-stage > figure.wp-block-image > img {
  display: block;
  width: 100% !important;
  height: calc(100% - 28px) !important;
  max-height: none !important;
  flex: 0 0 calc(100% - 28px) !important;
  object-fit: contain !important;
  object-position: right bottom !important;
}

body.page-id-16 .teaching-image-stage figcaption {
  position: static !important;
  inset: auto !important;
  display: block !important;
  flex: 0 0 auto;
  width: 100%;
  max-width: 100% !important;
  margin: 8px 0 0 !important;
  padding: 0 !important;
  color: var(--fwm-muted) !important;
  background: none !important;
  background-image: none !important;
  box-shadow: none !important;
  text-shadow: none !important;
  font-family: var(--fwm-sans) !important;
  font-size: 10px !important;
  font-style: normal !important;
  font-weight: 400 !important;
  line-height: 1.35 !important;
  letter-spacing: .02em !important;
  text-align: right !important;
}

body.page-id-16 .teaching-experience > .teaching-copy {
  display: flex;
  flex-direction: column;
  gap: clamp(62px, 8vh, 94px);
  padding: 0;
}

body.page-id-16 .teaching-copy-block {
  max-width: none;
  margin: 0;
  padding-top: 18px;
  border-top: 1px solid var(--fwm-line);
}

body.page-id-16 .teaching-copy-block:first-child {
  padding-top: 0;
  border-top: 0;
}

body.page-id-16 .teaching-copy-block p {
  max-width: none;
  margin: 0;
  font-family: var(--fwm-font-serif);
  font-size: 15px;
  font-weight: 400;
  line-height: 1.48;
}

body.page-id-16 .teaching-copy-block p + p {
  margin-top: 1.15em;
}

body.page-id-16 .teaching-copy-block .teaching-label {
  margin: 0 0 14px;
  color: var(--fwm-accent);
  font-family: var(--fwm-sans) !important;
  font-size: 10px;
  font-style: normal;
  font-weight: 500;
  line-height: 12px;
  letter-spacing: .75px;
  text-transform: uppercase;
}

body.page-id-16 .teaching-copy-block em {
  font-style: italic;
}

body.page-id-16 .teaching-cta a {
  color: var(--fwm-accent);
  font-style: italic;
  text-decoration: none;
}

body.page-id-16 .teaching-cta a:hover,
body.page-id-16 .teaching-cta a:focus-visible {
  color: var(--fwm-accent);
  text-decoration: underline;
  text-underline-offset: .16em;
}

@media (min-width: 1600px) {
  body.page-id-16 .teaching-experience.wp-block-columns {
    gap: clamp(90px, 7vw, 150px);
  }

  body.page-id-16 .teaching-image-stage.wp-block-gallery {
    width: min(100%, 340px);
    max-width: 340px;
  }

  body.page-id-16 .teaching-copy-block p {
    font-size: 16px;
    line-height: 1.5;
  }
}

@media (max-width: 820px) {
  body.page-id-16 .site-main {
    padding-inline: var(--fwm-page-padding);
  }

  body.page-id-16 .teaching-experience.wp-block-columns {
    grid-template-columns: 1fr;
    gap: 58px;
    padding-bottom: 96px;
  }

  body.page-id-16 .teaching-experience > .teaching-visual {
    position: relative;
    top: auto;
    order: 0;
    padding: 0;
  }

  body.page-id-16 .teaching-image-stage.wp-block-gallery {
    width: min(100%, 360px);
    max-width: 360px;
    height: min(55svh, 520px);
    min-height: 330px;
  }

  body.page-id-16 .teaching-experience > .teaching-copy {
    order: 1;
    gap: 58px;
  }
}

/* The preview is a background layer, while the index itself stays fully legible. */
.work-archive[data-view="index"] {
  isolation: isolate;
}

.work-archive[data-view="index"] .work-toolbar,
.work-archive[data-view="index"] .project-index {
  position: relative;
  z-index: 2;
}

.work-archive[data-view="index"] .project-index-preview {
  position: fixed;
  z-index: 0;
  inset: 0;
  left: 0;
  top: 0;
  width: 100vw;
  height: 100svh;
  margin: 0;
  overflow: hidden;
  background: var(--fwm-bg);
  opacity: 0;
  visibility: hidden;
  transform: none;
  pointer-events: none;
  transition: opacity 180ms ease, visibility 0s linear 200ms;
}

.work-archive[data-view="index"] .project-index-preview::after {
  content: "";
  position: absolute;
  z-index: 1;
  inset: 0;
  background: rgba(250, 249, 241, .34);
  pointer-events: none;
}

html[data-fwm-color-scheme="dark"] .work-archive[data-view="index"] .project-index-preview::after {
  background: rgba(17, 17, 16, .30);
}

.work-archive[data-view="index"] .project-index-preview.is-visible {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition-delay: 0s;
}

.work-archive[data-view="index"] .project-index-preview img,
.work-archive[data-view="index"] .project-index-preview.is-focused img {
  position: absolute;
  z-index: 0;
  inset: -2.5%;
  display: block;
  width: 105%;
  height: 105%;
  object-fit: cover;
  opacity: .72;
  filter: blur(9px);
  transform: scale(1.025);
  transition: opacity 180ms ease;
}

html[data-fwm-color-scheme="dark"] .work-archive[data-view="index"] .project-index-preview img,
html[data-fwm-color-scheme="dark"] .work-archive[data-view="index"] .project-index-preview.is-focused img {
  opacity: .78;
}

@media (hover: none), (pointer: coarse), (max-width: 980px) {
  .work-archive[data-view="index"] .project-index-preview {
    display: none !important;
  }
}




/* ==========================================================================
   0.24.32 — Restore explicit dark home typography
   ========================================================================== */

body.home:has(.home-hero--dark) .site-header,
body.home:has(.home-hero--dark) .primary-navigation a,
body.home:has(.home-hero--dark) .home-intro {
color: #171716;
}

body.home:has(.home-hero--dark) .site-branding,
body.home:has(.home-hero--dark) .primary-navigation a,
body.home:has(.home-hero--dark) .home-intro {
  text-shadow: none;
}

body.home:has(.home-hero--dark) .custom-logo {
  filter: brightness(0);
}

/* The lower project/Journal reference and legal links can use their own tone. */
body.home:has(.home-hero[data-home-footer-tone="dark"]) .home-project-link,
body.home:has(.home-hero[data-home-footer-tone="dark"]) .home-legal-navigation,
body.home:has(.home-hero[data-home-footer-tone="dark"]) .home-legal-navigation a,
body.home:has(.home-hero--dark[data-home-footer-tone="inherit"]) .home-project-link,
body.home:has(.home-hero--dark[data-home-footer-tone="inherit"]) .home-legal-navigation,
body.home:has(.home-hero--dark[data-home-footer-tone="inherit"]) .home-legal-navigation a {
  color: #171716 !important;
  text-shadow: none !important;
}

/* The label changes with the selected source while the linked title remains
   independently translatable and safely escaped. This also overrides legacy
   Additional CSS that always labelled the item as a project. */
.home-project-link::before {
  content: attr(data-home-link-label) " · " !important;
}

body.home:has(.home-hero[data-home-footer-tone="light"]) .home-project-link,
body.home:has(.home-hero[data-home-footer-tone="light"]) .home-legal-navigation,
body.home:has(.home-hero[data-home-footer-tone="light"]) .home-legal-navigation a,
body.home:has(.home-hero--light[data-home-footer-tone="inherit"]) .home-project-link,
body.home:has(.home-hero--light[data-home-footer-tone="inherit"]) .home-legal-navigation,
body.home:has(.home-hero--light[data-home-footer-tone="inherit"]) .home-legal-navigation a,
body.home:has(.home-hero--auto[data-home-footer-tone="inherit"]) .home-project-link,
body.home:has(.home-hero--auto[data-home-footer-tone="inherit"]) .home-legal-navigation,
body.home:has(.home-hero--auto[data-home-footer-tone="inherit"]) .home-legal-navigation a {
  color: #f7f5ef !important;
}

body.home .home-legal-navigation a:hover,
body.home .home-legal-navigation a:focus-visible {
  color: var(--fwm-accent) !important;
}


/* 0.24.33 — No contrast veil when dark home typography is selected. */
body.home:has(.home-hero--dark) .home-hero::after {
  background: none;
}
/* ==========================================================================
   0.24.34 — Journal entries share the header's editorial content axis
   ========================================================================== */
.single-post .journal-entry__content.entry-content {
  width: 100%;
  max-width: none;
  margin-inline: 0;
}

/* From the kicker's left edge to the end of header grid column ten. */
.single-post .journal-entry__content > p,
.single-post .journal-entry__content > h2,
.single-post .journal-entry__content > h3,
.single-post .journal-entry__content > blockquote,
.single-post .journal-entry__content > .wp-block-image,
.single-post .journal-entry__content > .wp-block-gallery,
.single-post .journal-entry__content .fwm-journal-hero,
.single-post .journal-entry__content .fwm-journal-gallery {
  width: 83.333333%;
  max-width: none;
  margin-inline: 0 auto;
}

@media (max-width: 760px) {
  .single-post .journal-entry__content > p,
  .single-post .journal-entry__content > h2,
  .single-post .journal-entry__content > h3,
  .single-post .journal-entry__content > blockquote,
  .single-post .journal-entry__content > .wp-block-image,
  .single-post .journal-entry__content > .wp-block-gallery,
  .single-post .journal-entry__content .fwm-journal-hero,
  .single-post .journal-entry__content .fwm-journal-gallery {
    width: 100%;
  }
}

/* Let the Journal hero use its editorial column without cropping. */
.single-post .journal-entry__content .fwm-journal-hero img {
  width: 100%;
  max-height: none;
}

/* ========================================================================== 
   0.24.36 — Journal lightbox images use the established BTS eye cursor
   ========================================================================== */
@media (pointer: fine) {
  html.fwm-custom-cursor .single-post .wp-lightbox-container,
  html.fwm-custom-cursor .single-post .wp-lightbox-container * {
    cursor: none !important;
  }
}

/* Keep Gutenberg's full click target, but let the eyes be the visual cue. */
.single-post .wp-lightbox-container .lightbox-trigger {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  color: transparent !important;
}

.single-post .wp-lightbox-container .lightbox-trigger svg {
  opacity: 0 !important;
}

/* 0.24.38 — Per-project home shadows; colour and footer stay independent. */
body.home:has(.home-hero[data-home-shadow="on"]) .primary-navigation a,
body.home:has(.home-hero[data-home-shadow="on"]) .site-branding,
body.home:has(.home-hero[data-home-shadow="on"]) .home-intro {
  text-shadow:
    0 1px 2px rgba(0, 0, 0, .88),
    0 0 11px rgba(0, 0, 0, .62),
    0 0 28px rgba(0, 0, 0, .42);
}
body.home:has(.home-hero--dark[data-home-shadow="on"]) .primary-navigation a,
body.home:has(.home-hero--dark[data-home-shadow="on"]) .site-branding,
body.home:has(.home-hero--dark[data-home-shadow="on"]) .home-intro {
  text-shadow:
    0 0 14px rgba(255, 255, 255, .36),
    0 0 32px rgba(255, 255, 255, .20);
}
body.home:has(.home-hero[data-home-shadow="off"]) .primary-navigation a,
body.home:has(.home-hero[data-home-shadow="off"]) .site-branding,
body.home:has(.home-hero[data-home-shadow="off"]) .home-intro {
  text-shadow: none;
}
body.home:has(.home-hero[data-home-shadow="on"]) .custom-logo {
  filter:
    brightness(0)
    invert(1)
    drop-shadow(0 1px 5px rgba(0, 0, 0, .82))
    drop-shadow(0 0 15px rgba(0, 0, 0, .56));
}
body.home:has(.home-hero--dark[data-home-shadow="on"]) .custom-logo {
  filter:
    brightness(0)
    drop-shadow(0 0 12px rgba(255, 255, 255, .38))
    drop-shadow(0 0 24px rgba(255, 255, 255, .20));
}
body.home:has(.home-hero[data-home-shadow="off"]) .custom-logo {
  filter: brightness(0) invert(1);
}
body.home:has(.home-hero--dark[data-home-shadow="off"]) .custom-logo {
  filter: brightness(0);
}
body.home:has(.home-hero[data-home-shadow="off"]) .home-hero::after {
  background: none;
}


/* ==========================================================================
   0.24.39 — Edition inquiry button and isolated series-gallery controls
   ========================================================================== */
.project-detail-fact--editions dd {
  min-width: 0;
}

.project-edition-inquiry {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 46px;
  margin-top: 18px;
  padding: 12px 18px;
  border: 1px solid var(--fwm-text);
  color: var(--fwm-text);
  background: transparent;
  font-family: var(--fwm-sans);
  font-size: 10px;
  font-style: normal;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: .065em;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  transition: background-color 200ms ease, color 200ms ease;
}

.project-edition-inquiry:hover,
.project-edition-inquiry:focus-visible {
  color: var(--fwm-bg);
  background: var(--fwm-text);
  text-decoration: none;
}

/* Keep the eye navigation over the large series image only. */
.fwm-edition-series .fwm-series-thumbs {
  position: relative;
  z-index: 6;
}

.fwm-edition-series .fwm-series-thumb {
  position: relative;
  z-index: 7;
}

/* Den normalen Custom Cursor ausblenden, solange die Augen sichtbar sind. */
body:has(.fwm-edition-series .fwm-series-eye.is-visible) .fwm-cursor {
  opacity: 0 !important;
  visibility: hidden;
}

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


/* 0.24.65 — One clear, translatable inquiry button across projects and editions. */
.project-edition-inquiry,
.fwm-edition-series .fwm-series-inquire a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 50px;
  padding: 14px 20px;
  border: 1px solid var(--fwm-text);
  color: var(--fwm-text);
  background: transparent;
  font-family: var(--fwm-sans);
  font-size: 13px;
  font-style: normal;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .075em;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
}

.project-edition-inquiry::before,
.fwm-edition-series .fwm-series-inquire a::before {
  content: none;
  display: none;
}

.project-edition-inquiry:hover,
.project-edition-inquiry:focus-visible,
.fwm-edition-series .fwm-series-inquire a:hover,
.fwm-edition-series .fwm-series-inquire a:focus-visible {
  color: var(--fwm-bg);
  background: var(--fwm-text);
  text-decoration: none;
}

/* ==========================================================================
   0.24.43 — Reliable inquiry contrast and full-viewport Work preview
   ========================================================================== */

.project-edition-inquiry::after,
.fwm-edition-series .fwm-series-inquire a::after {
  content: none !important;
  display: none !important;
}

.work-archive[data-view="index"] .project-index-preview {
  inset: 0 !important;
  width: 100vw !important;
  height: 100svh !important;
  max-width: none !important;
  max-height: none !important;
}

.work-archive[data-view="index"] .project-index-preview img,
.work-archive[data-view="index"] .project-index-preview.is-focused img {
  inset: -2.5% !important;
  width: 105% !important;
  height: 105% !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: cover !important;
}


/* ==========================================================================
   0.24.44 — Timeless project header: year removed from the public view
   ========================================================================== */

.single-project .project-information-bar {
  grid-template-columns: minmax(180px, 1.45fr) repeat(2, minmax(110px, .65fr)) minmax(150px, .72fr);
}

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

@media (max-width: 980px) {
  .single-project .project-information-bar {
    grid-template-columns: minmax(180px, 1.4fr) minmax(100px, .6fr) minmax(140px, .7fr);
  }

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

@media (max-width: 720px) {
  .single-project .project-information-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

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

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


/* ==========================================================================
   0.24.45 — Teaching: larger visual stage, stronger copy, editable FAQ
   ========================================================================== */
body.page-id-16 .teaching-experience.wp-block-columns {
  grid-template-columns: minmax(0, 42fr) minmax(0, 58fr);
  gap: clamp(48px, 5vw, 96px);
}

body.page-id-16 .teaching-experience > .teaching-visual {
  justify-content: flex-start;
  padding-block: 0;
}

body.page-id-16 .teaching-image-stage.wp-block-gallery {
  width: min(100%, 580px);
  max-width: 580px;
  height: min(66svh, 720px);
  min-height: 480px;
  margin-inline: 0;
}

body.page-id-16 .teaching-copy-block p {
  max-width: 64ch;
  color: var(--fwm-text);
  font-family: var(--fwm-serif);
  font-size: clamp(16px, 1.04vw, 19px);
  font-weight: 400;
  line-height: 1.54;
}

body.page-id-16 .teaching-experience > .teaching-copy {
  gap: clamp(50px, 6vh, 76px);
}

body.page-id-16 .teaching-faq {
  padding-top: 18px;
}

body.page-id-16 .teaching-faq > .teaching-label {
  margin-bottom: 14px;
}

body.page-id-16 .teaching-faq-item {
  margin: 0;
  border-top: 1px solid var(--fwm-line);
}

body.page-id-16 .teaching-faq-item:last-child {
  border-bottom: 1px solid var(--fwm-line);
}

body.page-id-16 .teaching-faq-item summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 22px;
  align-items: baseline;
  gap: 20px;
  padding: 17px 0 18px;
  color: var(--fwm-text);
  font-family: var(--fwm-sans);
  font-size: clamp(14px, .94vw, 17px);
  font-weight: 400;
  letter-spacing: -.006em;
  line-height: 1.35;
  cursor: pointer;
  list-style: none;
}

@media (pointer: fine) {
  html.fwm-custom-cursor body.page-id-16 .teaching-faq-item summary,
  html.fwm-custom-cursor body.page-id-16 .teaching-faq-item summary * {
    cursor: none !important;
  }
}

body.page-id-16 .teaching-faq-item summary::-webkit-details-marker {
  display: none;
}

body.page-id-16 .teaching-faq-item summary::after {
  content: "+";
  color: var(--fwm-accent);
  font-family: var(--fwm-sans);
  font-size: 16px;
  font-weight: 400;
  line-height: 1;
  text-align: right;
  transform-origin: center;
  transition: transform 320ms var(--fwm-ease);
}

body.page-id-16 .teaching-faq-item[open] summary::after {
  transform: rotate(45deg);
}

body.page-id-16 .teaching-faq-item > p {
  max-width: 78ch;
  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;
}

body.page-id-16 .teaching-faq-item[open] > p {
  animation: fwm-teaching-faq-in 360ms var(--fwm-ease) both;
}

@keyframes fwm-teaching-faq-in {
  from { opacity: 0; transform: translateY(-7px); }
  to { opacity: 1; transform: translateY(0); }
}
/* 0.24.54 — Larger titles in the single-project information bar. */
.single-project .project-information-title {
  font-size: clamp(24px, 1.75vw, 34px);
  line-height: 1.12;
}

@media (max-width: 720px) {
  .single-project .project-information-title {
    font-size: clamp(23px, 6vw, 30px);
  }
}
.project-edition-inquiry.calendar-inquiry {
  font-size: 13px;
}

.project-edition-inquiry.calendar-inquiry::before {
  content: none;
}
/* Winkel für Textlinks in Journal-Beiträgen */
.single-post .journal-entry__content p a:not(.project-edition-inquiry) {
	color: inherit;
	text-decoration: none !important;
}

.single-post .journal-entry__content p a:not(.project-edition-inquiry)::after {
	content: "";
	display: inline-block;
	width: 7px;
	height: 7px;
	margin-inline-start: .24em;
    margin-inline-end: 6px;
	border-top: 2px solid currentColor;
	border-right: 2px solid currentColor;
	color: var(--fwm-accent);
	vertical-align: .08em;
	transform: rotate(45deg);
	transform-origin: center;
	transition: transform 180ms cubic-bezier(.22, .61, .36, 1);
}

.single-post .journal-entry__content p a:not(.project-edition-inquiry):focus-visible::after {
	transform: rotate(0deg);
}

@media (hover: hover) and (pointer: fine) {
	.single-post .journal-entry__content p a:not(.project-edition-inquiry):hover::after {
		transform: rotate(0deg);
	}
}

/* 0.24.49 — Optional motion preview in Journal cards. */
.journal-card__media .journal-card__video {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 700ms var(--fwm-ease), opacity 260ms ease;
}

.journal-card:hover .journal-card__video,
.journal-card:focus-within .journal-card__video {
	transform: scale(1.018);
}

@media (prefers-reduced-motion: reduce) {
	.journal-card__media .journal-card__video {
		transition: none;
	}
}


/* ==========================================================================
   0.24.50 — Shared 90-degree angle for Info and Teaching accordions
   ========================================================================== */
.info-faq-arrow,
body.page-id-16 .teaching-faq-item > summary::after {
	display: inline-block !important;
	box-sizing: border-box;
	width: 9px !important;
	height: 9px !important;
	margin: 0 2px 0 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-top: 2px solid currentColor !important;
	border-right: 2px solid currentColor !important;
	color: var(--fwm-accent, #fe6f61) !important;
	font-size: 0 !important;
	line-height: 0 !important;
	text-align: initial !important;
	justify-self: end;
	align-self: center;
	transform: rotate(135deg) !important;
	transform-origin: 50% 50% !important;
	transition: transform 320ms var(--fwm-ease, cubic-bezier(.22, .61, .36, 1)) !important;
}

body.page-id-16 .teaching-faq-item > summary::after {
	content: "" !important;
}

.info-faq-item[open] .info-faq-arrow,
body.page-id-16 .teaching-faq-item[open] > summary::after {
	transform: rotate(315deg) !important;
}

@media (prefers-reduced-motion: reduce) {
	.info-faq-arrow,
	body.page-id-16 .teaching-faq-item > summary::after {
		transition: none !important;
	}
}
.teaching-formats .teaching-format-dot {
	display: inline-block;
	margin-inline: .38em;
	color: inherit;
	font-family: var(--fwm-sans);
	font-size: .72em;
	font-style: normal;
	line-height: 1;
	vertical-align: .12em;
}
/* Kleine Abschnittsüberschriften in Journal-Beiträgen */
.single-post .journal-entry__content h2.journal-section-label {
  margin-top: 24px;
  margin-bottom: 0px;
  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;
}

.single-post .journal-entry__content h2.journal-section-label + p {
  margin-top: 6px;
}

/* Keine Link-Winkel bei Impressum und Datenschutz im Footer */
.footer-legal-navigation a::after {
  content: none !important;
  display: none !important;
}
.glightbox-clean .gdesc-inner {
  text-align: right !important;
}
/* GLightbox-Caption im Dark Mode */
html[data-fwm-color-scheme="dark"] .gslide-description .gslide-desc,
html[data-fwm-color-scheme="dark"] .gslide-description .gslide-desc * {
  color: #171716 !important;
}

/* 0.24.66 — Keep project image titles above the information divider. */
@media (min-width: 721px) {
  .project-slide:has(> figcaption) {
    grid-template-rows: minmax(0, 1fr) auto;
    row-gap: 8px;
    box-sizing: border-box;
    padding-bottom: 6px;
  }

  .project-slide:has(> figcaption) > img {
    grid-row: 1;
    min-height: 0;
    max-height: calc(min(68svh, 760px) - 30px);
  }

  .project-slide:has(> figcaption) > figcaption {
    position: static;
    grid-row: 2;
    align-self: end;
    margin: 0;
    transform: none;
  }
}

@media (min-width: 1900px) and (min-height: 1000px) {
  .project-slide:has(> figcaption) > img {
    max-height: calc(min(78svh, 940px) - 30px);
  }
}

/* 0.24.75 — Consistent Fine Art inquiry hover in both colour schemes. */
.project-edition-inquiry:hover,
.project-edition-inquiry:focus-visible,
.fwm-edition-series .fwm-series-inquire a:hover,
.fwm-edition-series .fwm-series-inquire a:focus-visible {
  color: #fbfaf2;
  background: var(--fwm-accent);
  border-color: var(--fwm-accent);
}


/* ==========================================================================
   0.24.78 — Project Grid lightbox
   ========================================================================== */

body.is-project-lightbox-open {
  overflow: hidden;
}

body.is-project-lightbox-open::before {
  opacity: 0 !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

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

.project-grid-lightbox {
  position: fixed;
  z-index: 10040;
  inset: 0;
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr) 54px;
  align-items: center;
  gap: clamp(12px, 2vw, 32px);
  box-sizing: border-box;
  padding: clamp(54px, 5vw, 82px) clamp(18px, 3.2vw, 64px) clamp(22px, 3vw, 48px);
  color: #fbfaf2;
  background: rgba(12, 12, 11, .965);
  opacity: 0;
  visibility: hidden;
  transition: opacity 260ms ease, visibility 260ms step-end;
}

.project-grid-lightbox.is-open {
  opacity: 1;
  visibility: visible;
  transition: opacity 260ms ease, visibility 0ms step-start;
}

.project-grid-lightbox-figure {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto auto;
  justify-items: center;
  align-self: stretch;
  min-width: 0;
  min-height: 0;
  margin: 0;
}

.project-grid-lightbox-image-wrap {
  display: grid;
  place-items: center;
  width: 100%;
  min-width: 0;
  min-height: 0;
}

.project-grid-lightbox-image-wrap img {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: calc(100svh - 190px);
  object-fit: contain;
  opacity: 1;
  transition: opacity 160ms ease;
}

.project-grid-lightbox.is-loading .project-grid-lightbox-image-wrap img {
  opacity: .82;
}

.project-grid-lightbox-caption {
  margin-top: clamp(14px, 1.2vw, 20px);
  color: #fbfaf2;
  font-family: var(--fwm-serif);
  font-size: clamp(12px, .85vw, 15px);
  font-style: italic;
  line-height: 1.35;
  text-align: center;
}

.project-grid-lightbox-count {
  margin-top: 5px;
  color: rgba(251, 250, 242, .58);
  font-family: var(--fwm-sans);
  font-size: 9px;
  letter-spacing: .08em;
  line-height: 1;
}

.project-grid-lightbox-close,
.project-grid-lightbox-nav {
  display: grid;
  place-items: center;
  padding: 0;
  color: #fbfaf2;
  border: 0;
  background: transparent;
  font: inherit;
  cursor: pointer;
  opacity: .78;
  transition: opacity 180ms ease;
}

.project-grid-lightbox-close:hover,
.project-grid-lightbox-close:focus-visible,
.project-grid-lightbox-nav:hover,
.project-grid-lightbox-nav:focus-visible {
  opacity: 1;
}

.project-grid-lightbox-close:focus-visible,
.project-grid-lightbox-nav:focus-visible {
  outline: 1px solid currentColor;
  outline-offset: 4px;
}

.project-grid-lightbox-close {
  position: fixed;
  z-index: 2;
  top: max(14px, env(safe-area-inset-top));
  right: max(16px, env(safe-area-inset-right));
  width: 44px;
  height: 44px;
  font-size: 28px;
  font-weight: 200;
  line-height: 1;
}

.project-grid-lightbox-nav {
  width: 54px;
  height: 54px;
}

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

.project-grid-lightbox-nav svg path {
  fill: none !important;
}

@media (pointer: fine) {
  html.fwm-custom-cursor .project-grid-lightbox,
  html.fwm-custom-cursor .project-grid-lightbox * {
    cursor: none !important;
  }

  body.is-project-lightbox-open .fwm-cursor {
    z-index: 10060;
  }
}

@media (max-width: 720px) {
  .project-grid-lightbox {
    grid-template-columns: 1fr;
    padding: max(58px, env(safe-area-inset-top)) 16px max(74px, env(safe-area-inset-bottom));
  }

  .project-grid-lightbox-image-wrap img {
    max-height: calc(100svh - 180px);
  }

  .project-grid-lightbox-nav {
    position: fixed;
    z-index: 2;
    bottom: max(12px, env(safe-area-inset-bottom));
  }

  .project-grid-lightbox-nav--previous {
    left: 16px;
  }

  .project-grid-lightbox-nav--next {
    right: 16px;
  }

  .project-grid-lightbox-caption {
    max-width: calc(100vw - 112px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .project-grid-lightbox,
  .project-grid-lightbox-image-wrap img,
  .project-grid-lightbox-close,
  .project-grid-lightbox-nav {
    transition: none;
  }
}


/* ========================================================================== 
   0.24.82 — Restore the intended Teaching sequence on phones and tablets
   Introduction -> image -> remaining content blocks.
   Kept at the end of the stylesheet so later desktop refinements cannot
   accidentally reinstate the two-column layout on small screens.
   ========================================================================== */
@media (max-width: 820px) {
  body.page-id-16 .site-main {
    padding-inline: clamp(18px, 5vw, 28px);
  }

  body.page-id-16 .teaching-experience.wp-block-columns {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 0 !important;
    padding-bottom: 88px;
  }

  body.page-id-16 .teaching-experience > .teaching-copy {
    display: contents;
  }

  body.page-id-16 .teaching-copy-block:first-child {
    order: 1;
    margin-top: 0;
  }

  body.page-id-16 .teaching-experience > .teaching-visual {
    position: relative !important;
    top: auto !important;
    order: 2;
    display: flex;
    width: 100%;
    height: auto !important;
    min-height: 0 !important;
    margin: clamp(26px, 7vw, 42px) 0 clamp(30px, 8vw, 48px) !important;
    padding: 0 !important;
    justify-content: center !important;
  }

  body.page-id-16 .teaching-copy-block:not(:first-child) {
    order: 3;
    margin-top: clamp(42px, 10vw, 64px);
  }

  body.page-id-16 .teaching-experience > .teaching-visual > .wp-block-image {
    width: 100% !important;
    max-width: 680px !important;
    margin: 0 auto !important;
  }

  body.page-id-16 .teaching-image-stage.wp-block-gallery {
    width: 100% !important;
    max-width: 680px !important;
    height: min(56svh, 520px);
    min-height: 320px;
    margin: 0 auto !important;
  }

  body.page-id-16 .teaching-image-stage > figure.wp-block-image > img {
    object-position: center center !important;
  }
}

@media (max-width: 480px) {
  body.page-id-16 .teaching-image-stage.wp-block-gallery {
    height: min(54svh, 460px);
    min-height: 280px;
  }
}

.project-details-intro blockquote {
  margin: 0;
}

.project-details-intro blockquote cite {
  display: block;
  margin-top: 1em;
  text-align: right;
  font-size: inherit;
  font-style: italic;
}
