.u-mt-2 {margin-top: var(--space-2);} .u-mt-4 {margin-top: var(--space-4);} .u-mt-6 {margin-top: var(--space-6);} .u-mt-8 {margin-top: var(--space-8);} .u-mt-10 {margin-top: var(--space-10);} .u-mt-12 {margin-top: var(--space-12);} .u-mb-4 {margin-bottom: var(--space-4);} .u-mb-10 {margin-bottom: var(--space-10);} .u-mb-12 {margin-bottom: var(--space-12);} .u-measure {max-width: var(--measure); margin-inline: auto;} .u-measure-text {max-width: var(--measure-text);} .u-text-accent {color: var(--color-accent-text);} .u-text-inverse {color: var(--color-text-inverse);} .u-text-muted {color: var(--color-text-muted);} .u-text-sm {font-size: var(--text-sm);} .u-text-5xl {font-size: var(--text-5xl);} .u-link-inherit {color: inherit; text-decoration: underline;} .u-w-full {width: 100%;} .u-inline-flex {display: inline-flex;} .u-justify-start {justify-content: flex-start;} .error-stage {min-height: 60vh; display: flex; align-items: center;} .rubric {display: flex; align-items: center; gap: var(--space-5); padding-block: var(--space-3); border-bottom: 2px solid var(--color-gray-200); animation: fadeInUp 0.5s ease-out;} .rubric__text {flex: 0 0 auto; min-width: 0;} .rubric__title {font-size: var(--text-2xl); font-weight: var(--font-weight-semibold); letter-spacing: var(--tracking-tight); color: var(--color-text); margin: 0 0 var(--space-1) 0;} .rubric__meta {font-size: 13px; font-weight: var(--font-weight-medium); color: var(--color-text-muted); margin: 0; text-transform: uppercase; letter-spacing: var(--tracking-snug);} .rubric__rule {flex: 1 1 auto; height: 1px; background: linear-gradient(90deg, var(--color-gray-200) 0%, var(--color-accent-light) 50%, var(--color-gray-200) 100%); opacity: 0.6; animation: shimmer 2s ease-in-out infinite;} @keyframes shimmer {0%, 100% {opacity: 0.6;} 50% {opacity: 1;}} @keyframes fadeInUp {from {opacity: 0; transform: translateY(12px);} to {opacity: 1; transform: translateY(0);}}
.gallery-grid {display: flex; flex-direction: column; gap: var(--space-12); margin-block: var(--space-8);} .gallery-category-section {display: flex; flex-direction: column; gap: var(--space-6);} .gallery-category-grid {display: grid; grid-template-columns: repeat(2, var(--grid-track-fluid)); gap: var(--space-4);} @media (min-width: 640px) {.gallery-category-grid {grid-template-columns: repeat(3, var(--grid-track-fluid)); gap: var(--space-5);}} @media (min-width: 1024px) {.gallery-category-grid {grid-template-columns: repeat(4, var(--grid-track-fluid)); gap: var(--space-6);}} .gallery-category-expand {display: flex; justify-content: center; padding: var(--space-4) 0; border-top: 1px solid var(--color-gray-100); margin-top: var(--space-2);} .gallery-expand-btn {display: inline-flex; align-items: center; gap: var(--space-2); padding: var(--space-3) var(--space-5); font-size: var(--text-sm); font-weight: var(--font-weight-medium); color: var(--color-accent-text); background: transparent; border: 1px solid var(--color-accent-light); border-radius: var(--radius-sm); cursor: pointer; transition: all 0.28s cubic-bezier(0.2, 0.8, 0.2, 1);} @media (hover: hover) and (pointer: fine) {.gallery-expand-btn:hover {background: var(--color-accent-light); color: white; box-shadow: 0 4px 16px rgb(var(--c-red-light) / 0.24);} .gallery-expand-btn:hover .gallery-expand-icon {transform: rotate(45deg);}} .gallery-expand-btn:active {transform: scale(0.98);} .gallery-expand-icon {transition: transform 0.28s ease; stroke-width: 2.5;} .gallery-item {margin: 0; isolation: isolate; border-radius: var(--gallery-tile-radius); background: var(--color-gray-100); position: relative; box-shadow: 0 2px 10px rgb(var(--c-black) / 0.08), 0 0 0 1px rgb(var(--c-black) / 0.04); transition: transform 0.28s var(--glow-ease), box-shadow 0.28s var(--glow-ease);} .gallery-item::after {content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit; box-shadow: var(--glow); opacity: 0; transition: opacity var(--glow-speed) var(--glow-ease); pointer-events: none;} @media (hover: hover) and (pointer: fine) {.gallery-item:hover {z-index: 1; transform: translateY(-2px);} .gallery-item:hover::after {opacity: 1;}} .gallery-item:has(.gallery-item-trigger:focus-visible:not([data-focus-quiet])) {z-index: 1;} .gallery-item:has(.gallery-item-trigger:focus-visible:not([data-focus-quiet]))::after {opacity: 1;} .gallery-item-trigger[data-focus-quiet]:focus-visible {outline: none;} .gallery-item:has(.gallery-item-trigger.is-lightbox-last-viewed) {box-shadow: 0 2px 10px rgb(var(--c-black) / 0.08), 0 0 0 2px var(--color-accent-light);} .gallery-item:has(.gallery-item-trigger.is-lightbox-last-viewed)::after {opacity: 1;} @media (prefers-reduced-motion: reduce) {.gallery-item {transition: none;} .gallery-item:hover {transform: none;}} .gallery-item-trigger {display: block; width: 100%; text-align: left; padding: 0; border: 0; background: transparent; color: inherit; cursor: zoom-in; position: relative;} .gallery-item-img {display: block; aspect-ratio: 4 / 3; overflow: hidden; position: relative; border-radius: var(--gallery-tile-radius);} .gallery-item-img picture {display: block; width: 100%; height: 100%;} .gallery-item-label {position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: var(--space-2) var(--space-3); background: var(--gallery-label-bg); backdrop-filter: blur(var(--gallery-label-blur)); box-shadow: var(--gallery-label-shadow); border-bottom-left-radius: var(--gallery-tile-radius); border-bottom-right-radius: var(--gallery-tile-radius); transform: translateY(101%); opacity: 0; transition: transform var(--glow-speed) var(--glow-ease), opacity var(--glow-speed) var(--glow-ease); pointer-events: none;} .gallery-item-label-text {font-size: var(--text-sm); font-weight: var(--font-weight-semibold); line-height: 1.35; color: var(--gallery-label-text); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere;} .gallery-item-zoom {--media-zoom-size: 2rem; --media-zoom-icon-size: 1rem;} .gallery-item-cat {position: absolute; left: var(--space-2); top: var(--space-2); z-index: 2; font-size: 0.6875rem; font-weight: var(--font-weight-semibold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--on-dark-text-high); padding: 0.18rem 0.48rem; border-radius: var(--badge-radius); background: var(--scrim-media-chip-strong); backdrop-filter: blur(var(--blur-sm)); border: 1px solid var(--on-dark-border-strong); pointer-events: none; opacity: 0; transition: opacity var(--glow-speed) ease;} @media (hover: hover) and (pointer: fine) {.gallery-item-trigger:hover .gallery-item-cat {opacity: 1;}} .gallery-item-trigger:focus-visible:not([data-focus-quiet]) .gallery-item-cat {opacity: 1;} .gallery-img {width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.32s ease, filter 0.32s ease;} .gallery-item-trigger:active {transform: scale(0.985);} @media (prefers-reduced-motion: reduce) {.gallery-item-trigger:active {transform: none;}} @media (hover: hover) and (pointer: fine) {.gallery-item-trigger:hover .gallery-img {transform: scale(1.05); filter: brightness(0.88);}} @media (hover: hover) {.gallery-item-trigger:hover .gallery-item-label {opacity: 1; transform: translateY(0);}} .gallery-item-trigger:focus-visible:not([data-focus-quiet]) .gallery-img {transform: scale(1.05); filter: brightness(0.88);} .gallery-item-trigger:focus-visible:not([data-focus-quiet]) .gallery-item-label {opacity: 1; transform: translateY(0);} @media (hover: none) {.gallery-item {display: flex;} .gallery-item-trigger {flex: 1 1 auto; display: flex; flex-direction: column; min-width: 0;} .gallery-item-img {border-bottom-left-radius: 0; border-bottom-right-radius: 0; flex: 0 0 auto;} .gallery-item-label {position: static; transform: none; opacity: 1; flex: 1 1 auto; background: var(--color-bg); box-shadow: none; backdrop-filter: none; border-radius: 0 0 var(--gallery-tile-radius) var(--gallery-tile-radius);} .gallery-item-label {padding: var(--space-2);} .gallery-item-label-text {font-size: var(--text-xs); line-height: 1.3; -webkit-line-clamp: 4;} .gallery-item-zoom {--media-zoom-size: 1.75rem; --media-zoom-icon-size: 0.875rem;}} @media (prefers-reduced-motion: reduce) and (hover: hover) {.gallery-item-label {transform: none; transition: opacity var(--glow-speed) ease;}} .gallery-item--hidden {display: none;} .gallery-item:not(.gallery-item--hidden) {animation: fadeInScale 0.38s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;} @keyframes fadeInScale {from {opacity: 0; transform: scale(0.96);} to {opacity: 1; transform: scale(1);}} .gallery-filter-wrap {display: flex; justify-content: center; margin-block: var(--space-8) 0; padding-inline: var(--space-4);} .gallery-filter-bar {display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.375rem; background: var(--color-gray-100); border: 1px solid var(--color-border); border-radius: var(--gallery-filter-bar-radius); padding: 0.375rem;} @media (max-width: 639px) {.gallery-filter-wrap {padding-inline: var(--space-3);} .gallery-filter-bar {display: grid; grid-template-columns: repeat(2, var(--grid-track-fluid)); gap: var(--space-2); width: 100%; background: transparent; border: none; padding: 0; border-radius: 0;} .gallery-filter-btn[data-filter="all"] {grid-column: 1 / -1;}} .gallery-filter-btn {position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 0.35em; padding: var(--space-2) var(--space-4); font-size: var(--text-sm); font-weight: var(--font-weight-medium); color: var(--color-text-muted); background: transparent; border: 0; border-radius: var(--gallery-filter-btn-radius); cursor: pointer; white-space: nowrap; transition: color 0.18s ease, background 0.18s ease, box-shadow 0.18s ease; line-height: 1.3; letter-spacing: var(--tracking-snug); text-align: center;} @media (max-width: 639px) {.gallery-filter-btn {white-space: normal; border: 1px solid var(--color-border); border-radius: var(--gallery-filter-btn-radius); background: var(--color-bg); padding: 0.6rem var(--space-3); font-size: var(--text-xs);}} @media (hover: hover) and (pointer: fine) {.gallery-filter-btn:hover:not([aria-selected="true"]) {background: rgb(var(--c-red-light) / 0.08); color: var(--color-accent-text);}} @media (hover: hover) and (pointer: fine) and (max-width: 639px) {.gallery-filter-btn:hover:not([aria-selected="true"]) {border-color: rgb(var(--c-red-light) / 0.35);}} .gallery-filter-btn[aria-selected="true"] {background: var(--color-accent); color: var(--color-text-inverse); box-shadow: 0 3px 14px rgb(var(--c-red-light) / 0.32);} @media (max-width: 639px) {.gallery-filter-btn[aria-selected="true"] {border-color: var(--color-accent-light);}} .gallery-filter-btn:focus-visible {outline: 2px solid var(--color-accent-text); outline-offset: 2px;} .gallery-filter-count {display: inline-flex; align-items: center; justify-content: center; min-width: 1.1rem; height: 1.1rem; padding: 0 0.2rem; font-size: 0.625rem; font-weight: var(--font-weight-semibold); border-radius: var(--gallery-filter-count-radius); background: var(--gallery-filter-count-bg); color: var(--color-text); line-height: 1; transition: background 0.18s ease; flex-shrink: 0;} .gallery-filter-btn[aria-selected="true"] .gallery-filter-count {background: var(--gallery-filter-count-active-bg); color: var(--gallery-filter-count-active-color);} .section--tight {padding-top: 0;}
.media-zoom-badge {position: absolute; top: var(--media-zoom-inset, var(--space-2)); right: var(--media-zoom-inset, var(--space-2)); z-index: var(--media-zoom-layer, 2); display: inline-flex; align-items: center; justify-content: center; width: var(--media-zoom-size, 2rem); height: var(--media-zoom-size, 2rem); padding: 0; border-radius: var(--badge-radius); color: var(--on-dark-text-high); background: var(--scrim-media-chip-strong); backdrop-filter: blur(var(--blur-sm)); border: 1px solid var(--on-dark-border-strong); pointer-events: none; opacity: 0; transform: translateY(-4px); transition: opacity var(--glow-speed) ease, transform var(--glow-speed) ease, background var(--glow-speed) ease, color var(--glow-speed) ease;} button.media-zoom-badge, a.media-zoom-badge {pointer-events: auto; cursor: zoom-in;} .media-zoom-badge svg {width: var(--media-zoom-icon-size, 1rem); height: var(--media-zoom-icon-size, 1rem);} @media (hover: hover) {[data-lightbox]:hover .media-zoom-badge, button.media-zoom-badge[data-lightbox]:hover {opacity: 1; transform: none;}} [data-lightbox]:focus-visible:not([data-focus-quiet]) .media-zoom-badge, button.media-zoom-badge[data-lightbox]:focus-visible:not([data-focus-quiet]) {opacity: 1; transform: none;} @media (hover: none) {.media-zoom-badge {opacity: 1; transform: none;}} @media (prefers-reduced-motion: reduce) {.media-zoom-badge {transform: none; transition: opacity var(--glow-speed) ease;}} @media print {.media-zoom-badge {display: none !important;}} body.bm-lightbox-open {overflow: hidden;} .bm-lightbox {position: fixed; inset: 0; z-index: var(--z-modal); display: none; --lightbox-stage-w: calc(var(--lightbox-stage-h) * var(--lightbox-aspect-w) / var(--lightbox-aspect-h));} .bm-lightbox.is-open {display: grid; place-items: center;} .bm-lightbox-backdrop {position: absolute; inset: 0; background: rgb(var(--c-scrim) / 0.7); backdrop-filter: blur(var(--blur-md)) saturate(0.9);} .bm-lightbox-panel {position: relative; z-index: 2; width: calc(var(--lightbox-stage-w) + 2 * var(--lightbox-frame-pad) + 2 * var(--lightbox-panel-pad)); max-width: min(97vw, var(--lightbox-max-w)); max-height: 96vh; padding: var(--lightbox-panel-pad);} .bm-lightbox-figure {margin: 0 auto; display: grid; gap: var(--space-3); width: 100%; max-width: 100%; background: linear-gradient(180deg, rgb(var(--c-scrim) / 0.84), rgb(var(--c-scrim) / 0.92)); border: 1px solid var(--lightbox-frame-border); border-radius: var(--lightbox-frame-radius); padding: var(--lightbox-frame-pad); box-shadow: var(--lightbox-frame-shadow);} .bm-lightbox-picture-wrap {width: 100%; aspect-ratio: var(--lightbox-aspect); position: relative; background: rgb(var(--c-scrim) / 0.94); border-radius: var(--lightbox-img-radius); overflow: hidden;} .bm-lightbox-picture-wrap::after {content: ""; position: absolute; inset: 0; display: none; align-items: center; justify-content: center; background: rgb(var(--c-scrim) / 0.4); backdrop-filter: blur(var(--blur-xs)); z-index: 2;} .bm-lightbox-picture-wrap.is-loading::after {display: flex; animation: bm-lightbox-spinner-pulse 1.8s ease-in-out infinite;} @keyframes bm-lightbox-spinner-pulse {0%, 100% {opacity: 0.4;} 50% {opacity: 1;}} .bm-lightbox-picture-wrap.is-loading::before {content: ""; position: absolute; inset: 0; margin: auto; width: 12px; height: 12px; border-radius: 50%; background: rgb(var(--c-red-light) / 0.8); z-index: 3; box-shadow: 0 0 24px rgb(var(--c-red-light) / 0.5); animation: bm-lightbox-spinner-bounce 0.8s ease-in-out infinite;} @keyframes bm-lightbox-spinner-bounce {0%, 100% {transform: scale(1); opacity: 0.8;} 50% {transform: scale(1.3); opacity: 1;}} .bm-lightbox-picture-wrap picture {display: contents;} .bm-lightbox-picture-wrap > img, .bm-lightbox-picture-wrap picture > img, .bm-lightbox-picture-wrap .bm-lightbox-monogram {position: absolute; inset: 0; width: 100%; height: 100%;} .bm-lightbox-picture-wrap img {display: block; object-fit: contain; border-radius: var(--lightbox-img-radius); opacity: 0; transition: opacity 320ms cubic-bezier(0.2, 0.8, 0.2, 1);} .bm-lightbox-picture-wrap.is-loaded img, .bm-lightbox-picture-wrap.is-loaded .bm-lightbox-img {opacity: 1;} .bm-lightbox-monogram {display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-weight: var(--font-weight-bold); font-size: clamp(4rem, 22vh, 10rem); letter-spacing: var(--tracking-snug); line-height: 1; color: var(--color-accent-text); background: radial-gradient(120% 120% at 30% 20%, rgb(var(--c-ember) / 0.18), transparent 60%), var(--color-bg-alt);} .bm-lightbox-meta {display: grid; gap: var(--space-2); color: var(--on-dark-text); min-width: 0;} .bm-lightbox-counter {justify-self: start; font-size: var(--text-xs); font-weight: var(--font-weight-semibold); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--on-dark-text-soft);} .bm-lightbox-body {display: grid; gap: var(--space-1);} .bm-lightbox-title, .bm-lightbox-caption {overflow-wrap: anywhere; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; -webkit-line-clamp: 2;} .bm-lightbox-badge {justify-self: start; font-size: var(--text-xs); font-weight: var(--font-weight-semibold); letter-spacing: var(--tracking-wider); text-transform: uppercase; padding: 0.28rem 0.58rem; border-radius: var(--badge-radius); border: 1px solid var(--on-dark-border-glass); background: var(--on-dark-surface-glass);} .bm-lightbox-title {font-size: var(--text-base); line-height: 1.35;} .bm-lightbox-caption {font-size: var(--text-sm); color: var(--on-dark-text-soft);} .bm-lightbox.is-rich-meta {--lightbox-stage-h: min(72vh, calc(96vh - 19rem), calc((97vw - 3rem) * var(--lightbox-aspect-h) / var(--lightbox-aspect-w)), calc(var(--lightbox-max-w) * var(--lightbox-aspect-h) / var(--lightbox-aspect-w)));} .bm-lightbox-contact {display: grid; gap: var(--space-2);} .bm-lightbox-contact .status-tag {justify-self: start;} .bm-lightbox-contact__name {font-size: var(--text-xl); font-weight: var(--font-weight-semibold); line-height: 1.2; color: var(--on-dark-text);} .bm-lightbox-contact__role {font-size: var(--text-sm); font-weight: var(--font-weight-medium); color: var(--on-dark-text-soft); margin-top: calc(-1 * var(--space-1));} .bm-lightbox-contact__teaser {display: flex; align-items: flex-start; gap: 0.55em; font-size: var(--text-sm); line-height: var(--leading-normal); color: var(--on-dark-text-high); max-width: 46ch;} .bm-lightbox-contact__teaser > span {display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 3em;} .bm-lightbox-contact__teaser-icon {width: 1.05rem; height: 1.05rem; flex-shrink: 0; margin-top: 0.14em; color: var(--color-success);} .bm-lightbox-contact__links {display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-1);} .bm-lightbox-contact__link {display: inline-flex; align-items: center; gap: 0.5em; font-size: var(--text-sm); font-weight: var(--font-weight-semibold); padding: 0.55rem 0.9rem; border-radius: var(--badge-pill-radius); text-decoration: none; transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);} .bm-lightbox-contact__link svg {width: 1rem; height: 1rem; flex-shrink: 0;} .bm-lightbox-contact__link--phone {color: var(--on-dark-text); background: var(--color-accent); border: 1px solid transparent;} .bm-lightbox-contact__link--phone:hover, .bm-lightbox-contact__link--phone:focus-visible {background: var(--color-accent-light);} .bm-lightbox-contact__link--email {color: var(--on-dark-text); background: var(--on-dark-surface-glass); border: 1px solid var(--on-dark-border-glass);} .bm-lightbox-contact__link--email:hover, .bm-lightbox-contact__link--email:focus-visible {background: rgb(var(--c-red-light) / 0.24); border-color: var(--on-dark-border-bright); color: var(--on-dark-text);} .bm-lightbox-close {position: absolute; top: -0.4rem; right: -0.4rem; width: 2.45rem; height: 2.45rem; z-index: 3; border-radius: var(--radius-full); background: rgb(var(--c-scrim) / 0.84); border: 1px solid var(--on-dark-border-glass); box-shadow: 0 8px 24px rgb(var(--c-black) / 0.4); color: var(--on-dark-text);} .bm-lightbox-close span, .bm-lightbox-close span::before {content: ""; position: absolute; left: 50%; top: 50%; width: 14px; height: 2px; background: currentColor; transform: translate(-50%, -50%) rotate(45deg); border-radius: 2px;} .bm-lightbox-close span::before {transform: translate(-50%, -50%) rotate(-90deg);} .bm-lightbox-close:hover, .bm-lightbox-close:focus-visible {background: rgb(var(--c-red-light) / 0.26); border-color: var(--on-dark-border-bright);} .bm-lightbox-close:focus-visible {outline-offset: -3px;} .bm-lightbox-close[data-focus-quiet]:focus-visible {outline: none;} .bm-lightbox-nav {position: absolute; top: 50%; transform: translateY(-50%); width: 2.7rem; height: 2.7rem; z-index: 3; border-radius: var(--radius-full); border: 1px solid var(--on-dark-border-glass); background: rgb(var(--c-scrim) / 0.78); color: var(--on-dark-text); display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 10px 24px rgb(var(--c-black) / 0.35); transition: transform var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);} .bm-lightbox-nav--prev {left: -0.25rem;} .bm-lightbox-nav--next {right: -0.25rem;} .bm-lightbox-nav:hover, .bm-lightbox-nav:focus-visible {background: rgb(var(--c-red-light) / 0.3); border-color: var(--on-dark-border-bright);} @media (hover: hover) {.bm-lightbox-nav:hover {transform: translateY(calc(-50% - 1px));}} .bm-lightbox-nav:focus-visible {transform: translateY(calc(-50% - 1px));} .bm-lightbox-nav:disabled {opacity: 0.45; cursor: not-allowed;} @media (max-width: 767px) {.bm-lightbox {--lightbox-panel-pad: var(--space-2);} .bm-lightbox-panel {max-width: 96vw;} .bm-lightbox-nav {width: 2.35rem; height: 2.35rem;} .bm-lightbox-nav--prev {left: -0.15rem;} .bm-lightbox-nav--next {right: -0.15rem;} .bm-lightbox-title {font-size: var(--text-sm);}}