.preview-banner{padding:.55rem 1rem;background:#fff4cc;color:#593d00;text-align:center;font-weight:900;border-bottom:1px solid #9e7415}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem clamp(1rem,4vw,3rem);background:#fff;border-bottom:1px solid #dce4da}
.brand{display:flex;align-items:center;gap:.7rem;padding:0;color:var(--ink);text-decoration:none;font-size:1.05rem;font-weight:900}
.brand img{object-fit:contain;flex-shrink:0}
.context-link{min-height:44px;display:inline-flex;align-items:center;padding:.55rem .8rem;border-radius:10px;color:#245400;font-weight:800;text-decoration:none}
.topbar nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}
.brand:focus-visible,.context-link:focus-visible{outline:3px solid #195db5;outline-offset:3px}
.catalog-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin:2rem 0 1rem}
.catalog-heading h2{margin:0 0 .2rem;font-size:1.4rem}
.catalog-count,.result-count{margin:0;color:var(--muted);font-weight:700}
.search-label{display:grid;gap:.35rem;width:min(100%,360px);font-size:.9rem;font-weight:800}
.search-label input{min-height:46px;padding:.65rem .85rem;border:1px solid #9ba994;border-radius:10px;background:#fff;color:var(--ink);font:inherit}
.search-label input:focus-visible,.filter:focus-visible{outline:3px solid #195db5;outline-offset:3px}
.filters{display:flex;flex-wrap:wrap;gap:.55rem;margin:1.1rem 0}
.filter{min-height:42px;padding:.5rem .85rem;border:1px solid #9ba994;border-radius:999px;background:#fff;color:#30432a;font:inherit;font-weight:800;cursor:pointer}
.filter:hover{border-color:#52773a;background:#f2f7ee}
.filter.is-active{border-color:#375b25;background:#375b25;color:#fff}
.result-count{margin:.6rem 0}
.module-list{display:grid;gap:.8rem;margin:0;padding:0;list-style:none}
.module-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1.2rem;padding:1.15rem 1.25rem;background:#fff;border:1px solid #cbd5c4;border-bottom:4px solid #e3e9df;border-radius:16px}
.module-title{display:flex;align-items:baseline;gap:.6rem;margin:0;color:var(--ink);font-size:1.04rem;line-height:1.4}
.module-number{flex:none;color:#486735;font-size:.82rem;font-weight:950;letter-spacing:.04em}
.module-state{display:flex;flex-wrap:wrap;gap:.45rem;margin:.7rem 0 0}
.state-chip{display:inline-flex;align-items:center;min-height:28px;padding:.25rem .65rem;border-radius:999px;background:#eef3e9;color:#354c2a;font-size:.82rem;font-weight:800}
.state-chip.published{background:#e5f3e8;color:#205a31}
.state-chip.review{background:#fff0d4;color:#704900}
.state-chip.empty{background:#f0f1ef;color:#50564e}
.module-meta{margin:.55rem 0 0;color:var(--muted);font-size:.9rem}
.module-action{min-height:42px;padding:.55rem .8rem;border:1px solid #b8c7ae;border-radius:10px;background:#f6f9f3;color:#405634;font:inherit;font-size:.88rem;font-weight:850}
.editor-note,.empty-filter{margin:1.2rem 0 0;padding:1rem 1.1rem;border-left:4px solid #668e48;background:#edf5e8;color:#3d5130;border-radius:0 10px 10px 0;font-weight:700}
.empty-filter{border-color:#9ba994;background:#fff;color:var(--muted)}
@media(max-width:640px){.catalog-heading{align-items:stretch;flex-direction:column}.search-label{width:100%}.module-card{grid-template-columns:1fr;gap:.8rem;padding:1rem}.module-action{justify-self:start}.filters{gap:.4rem}.filter{font-size:.88rem;padding:.45rem .7rem}.topbar{align-items:flex-start}.brand{font-size:.95rem}.context-link{font-size:.9rem;padding:.4rem .55rem}.topbar nav{display:grid;justify-items:end}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
