.catalog-filters { position: sticky; top: .5rem; z-index: 20; margin: 1.4rem 0; padding: .85rem 1rem; background: #fff; border: 1px solid #c3d1c5; border-radius: 12px; box-shadow: 0 3px 12px #24413116; }
.catalog-filters label { display: flex; flex-direction: column; gap: .3rem; max-width: 100%; }
.catalog-filters input, .catalog-filters select { max-width: 100%; min-height: 2.6rem; }
.catalog-search-row { display: grid; grid-template-columns: minmax(180px, 2fr) minmax(135px, 1fr) minmax(145px, 1fr) auto; gap: .65rem; align-items: end; }
.catalog-search-row label { font-size: .82rem; font-weight: 600; min-width: 0; }
.catalog-search-row input, .catalog-search-row select { width: 100%; box-sizing: border-box; border: 1px solid #b7c9be; border-radius: 6px; font: inherit; color: #243d34; background: #fff; padding: .5rem; }
.catalog-search-row button { min-height: 2.6rem; font-size: .85rem; white-space: nowrap; }
.catalog-search-footer { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin-top: .6rem; font-size: .82rem; }
.catalog-advanced { flex: 1 1 100%; order: 3; }
.catalog-advanced:not([open]) { flex: 0 0 auto; order: 0; }
.catalog-advanced summary { cursor: pointer; font-weight: 600; }
.catalog-advanced[open] .catalog-filter-grid { margin-top: .8rem; max-height: 32vh; overflow-y: auto; padding: .2rem .3rem .7rem; }
.catalog-region-range { grid-column: span 2; min-width: 0; margin: 0; padding: .6rem .8rem; border: 1px solid #cedbce; border-radius: 8px; }
.catalog-region-range legend { padding: 0 .25rem; font-size: .87rem; font-weight: 600; }
.catalog-region-range p { margin: 0 0 .5rem; font-size: .8rem; line-height: 1.4; color: #536b5d; }
.catalog-range-labels { display: flex; justify-content: space-between; gap: .5rem; }
.catalog-range-labels label { display: block; font-weight: 400; }
.catalog-range-labels output { font-weight: 700; }
.catalog-range-track { position: relative; height: 2.4rem; margin: .2rem .4rem 0; }
.catalog-range-track::before { content: ''; position: absolute; left: 0; right: 0; top: calc(50% - 3px); height: 6px; border-radius: 4px; background: linear-gradient(to right, #dce5db var(--range-from, 0%), #507851 var(--range-from, 0%), #507851 var(--range-to, 100%), #dce5db var(--range-to, 100%)); }
.catalog-filters .catalog-filter-grid .catalog-range-track input { position: absolute; inset: 0; width: 100%; height: 100%; min-height: 0; margin: 0; padding: 0; border: 0; background: transparent; appearance: none; pointer-events: none; }
.catalog-range-track input::-webkit-slider-thumb { appearance: none; height: 21px; width: 21px; background: #fff; border: 3px solid #507851; border-radius: 50%; cursor: ew-resize; pointer-events: auto; }
.catalog-range-track input::-moz-range-thumb { height: 16px; width: 16px; background: #fff; border: 3px solid #507851; border-radius: 50%; cursor: ew-resize; pointer-events: auto; }
.catalog-filters .catalog-active-filters { margin: .6rem 0 0; flex-wrap: nowrap; overflow-x: auto; }
.catalog-filter-tag { white-space: nowrap; }
.catalog-page .template-row { flex-wrap: wrap; align-items: start; }
.catalog-page .template-info { flex: 1 1 12rem; overflow-wrap: anywhere; }
.catalog-page .template-row > .party-actions { flex-basis: 100%; }
.catalog-page details, .catalog-cards details { max-width: 100%; padding: .5rem 0; }
.catalog-page details form, .catalog-cards details form { display: flex; flex-direction: column; align-items: start; gap: .6rem; max-width: 36rem; }
.catalog-page textarea, .catalog-cards textarea { display: block; width: 100%; max-width: 100%; }
.catalog-page details label, .catalog-cards details label { max-width: 100%; }
.catalog-page summary, .catalog-cards summary { cursor: pointer; font-weight: 600; }
.catalog-cards .setup-card { overflow-wrap: anywhere; }
@media (max-width: 600px) {
    .catalog-cards { grid-template-columns: minmax(0, 1fr); }
    .catalog-page .template-mark { display: none; }
    .catalog-filters { align-items: stretch; }
    .catalog-filters > label { flex: 1 1 10rem; }
}

.catalog-filter-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(165px, 1fr)); gap: .8rem 1rem; align-items: end; }
.catalog-filter-grid label { font-size: .85rem; font-weight: 600; min-width: 0; }
.catalog-filter-grid input:not([type=checkbox]), .catalog-filter-grid select { font: inherit; width: 100%; box-sizing: border-box; background: #fff; color: #243d34; border: 1px solid #b7c9be; border-radius: 6px; padding: .5rem; }
.catalog-filter-grid .catalog-filter-check { flex-direction: row; align-items: center; gap: .5rem; min-height: 2.6rem; }
.catalog-filter-check input { width: 1rem; min-height: auto; margin: 0; }
.catalog-filter-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin-top: 1rem; }
.catalog-result-count { margin-left: auto; font-size: .86rem; font-weight: 600; color: #4c6558; }
.catalog-active-filters { display: flex; gap: .4rem; flex-wrap: wrap; align-items: center; margin: 0 0 1rem; color: #536b5d; font-size: .82rem; }
.catalog-filter-tag { background: #e9efe8; border: 1px solid #d8e2d7; border-radius: 5px; padding: .25rem .45rem; }
.catalog-popular { margin: 1.6rem 0 2.2rem; padding-bottom: 1.5rem; border-bottom: 1px solid #d8e1d8; }
.catalog-section, #party-drafts { margin: 2rem 0 2.8rem; scroll-margin-top: var(--catalog-search-height, 12rem); }
.catalog-section-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin: 0 0 1rem; }
.catalog-section-heading h2 { margin: 0 0 .35rem; font-size: 1.35rem; }
.catalog-section-heading p { color: #5a6c60; margin: .3rem 0; font-size: .86rem; }
.catalog-section-count { display: inline-block; font: 600 .8rem system-ui,sans-serif; color: #496353; background: #e8eee5; border-radius: 20px; padding: .2rem .5rem; vertical-align: middle; }
.catalog-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 1rem; }
.catalog-grid-compact { grid-template-columns: repeat(auto-fill, minmax(min(100%, 170px), 1fr)); gap: .75rem; }
.catalog-card { min-width: 0; border: 1px solid #d6e1d8; background: #fff; border-radius: 11px; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 1px 2px #24413108; }
.catalog-preview { position: relative; height: 150px; padding: 12px; background: #eaf0e8; border-bottom: 1px solid #dce5d9; box-sizing: border-box; }
.catalog-preview svg { display: block; width: 100%; height: 100%; background: #f8faf6; }
.catalog-party-preview .party-map-preview { margin: 0; height: 100%; }
.catalog-party-preview .party-map-preview svg { height: 100%; min-height: 0; }
.catalog-preview-borders { stroke: #5f6e5f; stroke-width: .8; vector-effect: non-scaling-stroke; }
.catalog-preview-region.terrain-blocked { fill: #a9afa6; }
.catalog-preview-sc { stroke: #253b30; stroke-width: .6; vector-effect: non-scaling-stroke; }
.catalog-preview-unavailable { height: 100%; display: grid; place-items: center; margin: 0; text-align: center; font-size: .85rem; color: #5d6f61; }
.catalog-card-status { position: absolute; right: .6rem; top: .55rem; padding: .2rem .45rem; background: #fffffff2; border-radius: 5px; border: 1px solid #d6e1d3; font: 600 .72rem system-ui,sans-serif; color: #35513d; }
.catalog-card-content { display: flex; flex-direction: column; gap: .45rem; padding: 1rem; flex: 1; min-width: 0; }
.catalog-card h3 { font-size: 1.05rem; line-height: 1.3; margin: 0; overflow-wrap: anywhere; }
.catalog-card h3 a { color: #1d4f3c; text-decoration-thickness: 1px; text-underline-offset: .15em; }
.catalog-card p { font-size: .82rem; line-height: 1.45; margin: 0; overflow-wrap: anywhere; }
.catalog-card-owner, .catalog-card-dates { color: #627365; }
.catalog-card-summary { color: #385842; font-weight: 600; }
.catalog-card-map { color: #5f705e; }
.catalog-card-description { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.catalog-card .catalog-card-statistics { display: flex; flex-wrap: wrap; gap: .3rem .8rem; margin: .2rem 0; color: #47614f; font-size: .77rem; }
.catalog-card-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; margin-top: .4rem; }
.catalog-card-actions form { margin: 0; }
.catalog-card .button { padding: .5rem .65rem; font-size: .8rem; min-height: 2.2rem; box-sizing: border-box; text-align: center; }
.catalog-reactions { display: flex; gap: .5rem; margin-top: .45rem; }
.catalog-reactions form { margin: 0; }
.catalog-reaction-button { padding: .4rem .55rem; border: 1px solid #c2d0c2; background: #f6f9f3; border-radius: 6px; color: #3e5e46; font: inherit; font-size: .8rem; cursor: pointer; }
.catalog-reaction-button[aria-pressed=true] { background: #e3eddf; border-color: #658762; color: #234c2e; }
.catalog-reaction-button:disabled { opacity: .55; cursor: wait; }
.catalog-reaction-status { color: #4b6855; min-height: 1.1em; }
.catalog-owner-tools { border-top: 1px solid #dce5d8; margin-top: auto; font-size: .8rem; }
.catalog-owner-tools summary { font-size: .8rem; }
.catalog-owner-tools form { padding: .5rem 0 1rem; box-sizing: border-box; width: 100%; }
.catalog-owner-tools textarea { box-sizing: border-box; min-height: 70px; }
.catalog-owner-tools label { font-size: .8rem; font-weight: 500; }
.catalog-card-compact .catalog-preview { height: 90px; padding: 8px; }
.catalog-card-compact .catalog-card-content { padding: .75rem; gap: .3rem; }
.catalog-card-compact .catalog-card-description, .catalog-card-compact .catalog-card-map, .catalog-card-compact .catalog-card-dates { display: none; }
.catalog-card-compact h3 { font-size: .94rem; }
.catalog-card-compact .catalog-card-owner, .catalog-card-compact .catalog-card-summary { font-size: .74rem; }
.catalog-card-compact .catalog-card-actions form, .catalog-card-compact .catalog-card-actions a:not(:first-child) { display: none; }
.catalog-card-compact .catalog-card-actions { margin: 0; }
.catalog-card-compact .catalog-reaction-status { display: none; }
.catalog-card-selectable { cursor: pointer; }
.catalog-card-selectable.is-selected { border: 2px solid #39724b; box-shadow: 0 0 0 2px #dcebdc; }
.catalog-selection-label { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; color: #355a3e; font-size: .84rem; font-weight: 600; margin: .3rem 0; }
.catalog-selection-label input { width: 1rem; height: 1rem; margin: 0; }
.catalog-selection-label span { font-size: .75rem; font-weight: 400; }
.catalog-pagination { display: flex; flex-wrap: wrap; align-items: center; gap: .7rem; margin-top: 1rem; font-size: .86rem; }
.catalog-empty { padding: 1rem; border: 1px dashed #cbd8c8; border-radius: 8px; background: #f7f9f3; color: #526b57; font-size: .9rem; }
.catalog-empty p { margin: 0; }
.catalog-detail { max-width: 850px; margin: 0 auto 2rem; }
.catalog-detail .catalog-preview { height: 340px; }
.catalog-detail .catalog-card-description { display: block; overflow: visible; }
.catalog-card :focus-visible, .catalog-filters :focus-visible { outline: 3px solid #b68e45; outline-offset: 2px; }
@media (min-width: 601px) and (max-width: 900px) {
    .catalog-search-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; }
    .catalog-search-label { grid-column: 1 / -1; }
}
@media (max-width: 600px) {
    .catalog-filters { top: .25rem; padding: .65rem; }
    .catalog-search-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .5rem; }
    .catalog-search-label { grid-column: 1 / -1; }
    .catalog-search-row button { grid-column: 1 / -1; min-height: 2.2rem; padding: .4rem .6rem; }
    .catalog-region-range { grid-column: 1 / -1; }
    .catalog-filter-grid { grid-template-columns: 1fr 1fr; gap: .75rem; }
    .catalog-filter-grid > label:first-child { grid-column: 1 / -1; }
    .catalog-result-count { margin-left: auto; width: auto; }
    .catalog-grid-compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .catalog-card-compact .catalog-preview { height: 75px; }
    .catalog-card-compact .catalog-card-content { padding: .6rem; }
    .catalog-card-compact .catalog-reactions { flex-wrap: wrap; gap: .3rem; }
    .catalog-card .button { max-width: 100%; }
    .catalog-detail .catalog-preview { height: 220px; }
}
@media (max-width: 360px) { .catalog-filter-grid { grid-template-columns: 1fr; } .catalog-grid-compact { grid-template-columns: 1fr; } }
