/* Reusable public patterns. Existing page classes remain valid. */
.dmf-p-hero { isolation: isolate; }
.dmf-p-hero__media { overflow: hidden; }
.dmf-p-section-header { min-width: 0; }
.dmf-p-section-header__description { max-width: 64ch; color: var(--dmf-color-muted); }

.dmf-p-card {
    min-width: 0;
    border-radius: var(--dmf-radius-md);
}
.dmf-p-card__media { display: block; overflow: hidden; }
.dmf-p-card__media img { width: 100%; height: 100%; object-fit: cover; }
.dmf-p-card__body { min-width: 0; }
.dmf-p-card__meta { color: var(--dmf-color-muted); font-size: var(--dmf-text-sm); }
.dmf-p-card__excerpt { text-wrap: pretty; }
.dmf-p-news-card, .dmf-p-activity-card, .dmf-p-gallery-card { position: relative; }
.dmf-p-activity-card { overflow: hidden; background: var(--dmf-color-surface); border: 1px solid var(--dmf-color-border); }
.dmf-p-activity-card .dmf-p-card__body { padding: var(--dmf-space-6); }
.dmf-p-gallery-card__count { position: absolute; top: var(--dmf-space-3); right: var(--dmf-space-3); z-index: 1; }

.dmf-p-stats { margin: 0; }
.dmf-p-stats__item { min-width: 0; }
.dmf-p-stats__value { font-variant-numeric: tabular-nums; }
.dmf-p-feature-grid, .dmf-p-quick-links { display: grid; gap: var(--dmf-space-4); }
.dmf-p-quick-links a { display: flex; align-items: center; min-height: 44px; padding: var(--dmf-space-3) var(--dmf-space-4); background: var(--dmf-color-surface); border: 1px solid var(--dmf-color-border); border-radius: var(--dmf-radius-md); font-weight: 700; }
.dmf-p-feature { min-width: 0; padding: var(--dmf-space-6); border-radius: var(--dmf-radius-md); }
.dmf-p-feature-grid .dmf-p-feature { background: var(--dmf-color-surface); border: 1px solid var(--dmf-color-border); }
.dmf-p-announcement { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--dmf-space-2) var(--dmf-space-4); min-width: 0; padding: var(--dmf-space-4) var(--dmf-space-6); background: var(--dmf-color-surface); border: 1px solid var(--dmf-color-border); border-radius: var(--dmf-radius-md); }
.dmf-p-timeline { list-style: none; padding: 0; margin: 0; border-left: 2px solid var(--dmf-color-border); }
.dmf-p-timeline__item { position: relative; padding: 0 0 var(--dmf-space-8) var(--dmf-space-6); }
.dmf-p-timeline__item::before { content: ""; position: absolute; left: -6px; top: .5em; width: 10px; height: 10px; border-radius: 50%; background: var(--dmf-color-primary); }
.dmf-p-people-card { overflow: hidden; padding-bottom: var(--dmf-space-6); text-align: center; background: var(--dmf-color-surface); border: 1px solid var(--dmf-color-border); border-radius: var(--dmf-radius-md); }
.dmf-p-people-card__image { width: 100%; aspect-ratio: 1; object-fit: cover; }
.dmf-p-people-card h3, .dmf-p-people-card p { margin-inline: var(--dmf-space-4); }
.dmf-p-cta { padding: clamp(var(--dmf-space-6), 5vw, var(--dmf-space-12)); border-radius: var(--dmf-radius-lg); background: var(--dmf-color-primary); color: var(--on-brand, #fff); }
.dmf-p-cta a { color: inherit; }
.dmf-p-breadcrumb { display: flex; flex-wrap: wrap; gap: var(--dmf-space-2); }
.dmf-p-pagination { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--dmf-space-2); }
.dmf-p-footer { background: var(--dmf-color-primary); color: var(--on-brand, #fff); }
.home-contact-cta { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--dmf-space-6); margin-block: var(--dmf-space-12); }
.home-contact-cta p { margin: 0; opacity: .8; }
.home-contact-cta h2 { margin: var(--dmf-space-2) 0 0; color: inherit; }
.home-contact-cta .button { border: 1px solid currentColor; background: transparent; text-decoration: none; }
.home-contact-cta .button:hover, .home-contact-cta .button:focus-visible { background: var(--dmf-color-surface); color: var(--dmf-color-primary); }
.dmf-back-to-top { color: inherit; }
.site-footer .footer-note { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--dmf-space-2) var(--dmf-space-4); }

@media (min-width: 761px) {
    .dmf-p-feature-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .dmf-p-quick-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
