.catalog-page {max-width:1240px;margin:auto;min-width:0}.catalog-page h1{font-size:clamp(25px,3vw,38px);line-height:1.18;overflow-wrap:anywhere}.catalog-modes{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.catalog-modes a{padding:9px 15px;border-radius:12px;background:#fff;border:1px solid var(--line);color:var(--color-text-strong);text-decoration:none}.catalog-modes a[aria-current]{background:var(--color-brand-soft);border-color:var(--color-brand-border)}.catalog-notice{padding:12px 16px;background:var(--color-brand-wash);border-radius:12px;color:var(--muted)}.catalog-filter-panel{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:14px;background:white;padding:20px;border:1px solid var(--line);border-radius:18px}.catalog-filter-panel label,.edition-switch label,.staff-controls label{display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--color-text-secondary);font-weight:600}.catalog-page input,.catalog-page select,.catalog-page textarea{width:100%;min-width:0;box-sizing:border-box;border:1px solid var(--color-border-strong);border-radius:10px;padding:10px;background:#fff;font:inherit}.filter-actions{display:flex;gap:15px;align-items:center;grid-column:1/-1}.catalog-result-count{color:var(--muted);margin:20px 0 12px}.catalog-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.edition-card{display:flex;flex-direction:column;align-items:flex-start;gap:12px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:22px;min-width:0;box-shadow:var(--shadow-sm)}.edition-card h2{font-size:21px;line-height:1.25;margin:0;overflow-wrap:anywhere}.edition-card p{margin:0;line-height:1.6}.edition-card .button{margin-top:auto}.organizer{color:var(--muted);font-size:14px}.edition-summary{display:flex;flex-direction:column;gap:4px;border-left:3px solid var(--color-brand-border);padding-left:12px}.edition-summary span{color:var(--muted);font-size:13px}.publication-label{font-size:12px;padding:5px 9px;background:var(--color-surface-muted);color:var(--color-text-secondary);border-radius:8px}.participation-label{font-size:13px;color:var(--muted)}.next-date{padding:10px;border-radius:10px;background:var(--color-brand-wash);width:100%;box-sizing:border-box}.catalog-empty{grid-column:1/-1;text-align:center;padding:36px!important}.catalog-pagination{display:flex;justify-content:center;gap:22px;align-items:center;margin:28px 0;flex-wrap:wrap}.detail-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:24px}.detail-main,.detail-aside{min-width:0}.detail-layout .panel{margin-bottom:20px;padding:24px}.detail-description{line-height:1.75;overflow-wrap:anywhere}.edition-switch{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.edition-timeline{padding:0;list-style:none}.edition-timeline li{display:flex;gap:16px;padding:18px 0;border-bottom:1px solid var(--color-border);min-width:0}.edition-timeline li>div:last-child{min-width:0;overflow-wrap:anywhere}.stage-number{flex:none;background:var(--color-brand-soft);color:var(--color-brand-strong);border-radius:50%;width:30px;height:30px;text-align:center;line-height:30px}.edition-timeline h3{margin:0 0 8px}.stage-dates{font-weight:600;color:var(--color-text-secondary);line-height:1.7}.personal-participation{padding:12px 0;border-bottom:1px solid var(--color-border);overflow-wrap:anywhere}.staff-controls>a{display:block;margin:12px 0}.staff-controls form{display:grid;gap:10px}.back-link{display:inline-block;margin-bottom:20px}.catalog-card-top{display:flex;gap:8px;flex-wrap:wrap}.catalog-page .button{white-space:normal;text-align:center}.catalog-page a{overflow-wrap:anywhere}@media(max-width:1050px){.catalog-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.catalog-filter-panel{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.detail-layout{grid-template-columns:1fr}.catalog-filter-panel{padding:16px}.catalog-page .page-heading{align-items:flex-start}.detail-layout .panel{padding:18px}.catalog-page h2{font-size:21px}}@media(max-width:520px){.catalog-cards,.catalog-filter-panel{grid-template-columns:1fr}.edition-card{padding:18px}.catalog-filter-panel .filter-actions{flex-wrap:wrap}.edition-timeline li{gap:10px}.catalog-page .page-heading{display:block}.catalog-pagination{gap:12px;font-size:13px}}

/* ═══════════════════════════════════════════════════════════════════
   Module 4 — catalog list redesign (scoped to .catalog-list-page).
   Base/detail styles above are intentionally left untouched so the
   activity detail page (which also loads this file) does not change.
   ═══════════════════════════════════════════════════════════════════ */
.catalog-list-page .catalog-heading { align-items: flex-start; }
.catalog-list-page .page-heading-copy { min-width: 0; }
.catalog-list-page .heading-actions { flex: none; }

.catalog-list-page .catalog-modes {
  display: flex;
  gap: 4px;
  width: fit-content;
  max-width: 100%;
  margin: 16px 0 18px;
  padding: 4px;
  overflow-x: auto;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  box-shadow: var(--shadow-xs);
  scrollbar-width: thin;
}
.catalog-list-page .catalog-modes a {
  padding: 8px 14px;
  border-radius: var(--radius-pill);
  color: var(--muted);
  font-size: 13px;
  font-weight: 650;
  text-decoration: none;
  white-space: nowrap;
  transition: background var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}
.catalog-list-page .catalog-modes a:hover { background: var(--color-surface-muted); color: var(--color-text-strong); }
.catalog-list-page .catalog-modes a[aria-current="page"] {
  background: var(--color-brand-soft);
  color: var(--color-brand-strong);
  font-weight: 800;
}
.catalog-list-page .catalog-modes a:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 2px; }

.catalog-list-page .catalog-notice {
  margin: 0 0 16px;
  padding: 11px 14px;
  background: var(--color-brand-wash);
  border: 1px solid var(--color-brand-border);
  border-radius: var(--radius-md);
  color: var(--muted);
  font-size: 13px;
  line-height: 1.5;
}

.catalog-list-page .catalog-filter-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  margin: 0 0 14px;
  padding: 18px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.catalog-list-page .catalog-filter-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 12px;
  align-items: end;
}
.catalog-list-page .catalog-filter-panel label {
  display: grid;
  gap: 6px;
  min-width: 0;
  color: var(--color-text-strong);
  font-size: 12px;
  font-weight: 700;
}
.catalog-list-page .field-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--color-text-tertiary);
}
.catalog-list-page .catalog-filter-panel input,
.catalog-list-page .catalog-filter-panel select {
  width: 100%;
  min-height: 42px;
  padding: 9px 11px;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text-primary);
  font: inherit;
}
.catalog-list-page .catalog-filter-panel input:focus,
.catalog-list-page .catalog-filter-panel select:focus {
  outline: none;
  border-color: var(--color-brand);
  box-shadow: var(--shadow-focus);
}
.catalog-list-page .filter-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.catalog-list-page .filter-reset {
  color: var(--color-link);
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  padding: 8px 6px;
  border-radius: var(--radius-xs);
}
.catalog-list-page .filter-reset:hover { text-decoration: underline; text-underline-offset: 3px; }
.catalog-list-page :where(a, button):focus-visible { outline: 3px solid var(--color-focus); outline-offset: 2px; border-radius: var(--radius-xs); }

.catalog-list-page .catalog-note { margin: 0 0 10px; color: var(--muted); font-size: 12px; line-height: 1.45; }
.catalog-list-page .catalog-result-count { margin: 0 0 12px; color: var(--muted); font-size: 13px; }
.catalog-list-page .catalog-result-count strong { color: var(--color-text-primary); font-size: 15px; }

.catalog-list-page .catalog-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin: 0;
}
.catalog-list-page .edition-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
  height: 100%;
  padding: 18px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 18px;
  box-shadow: var(--shadow-sm);
  transition: transform var(--motion-fast) var(--ease-standard),
              box-shadow var(--motion-fast) var(--ease-standard),
              border-color var(--motion-fast) var(--ease-standard);
}
.catalog-list-page .edition-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); border-color: var(--color-brand-border); }
.catalog-list-page .edition-card:focus-within { border-color: var(--color-brand-border); box-shadow: var(--shadow-md); }
.catalog-list-page .catalog-card-top { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between; }
.catalog-list-page .publication-label { margin-left: auto; }
.catalog-list-page .edition-title {
  margin: 0;
  font-size: 20px;
  line-height: 1.28;
  letter-spacing: -.3px;
  overflow-wrap: anywhere;
}
.catalog-list-page .edition-title a { color: var(--color-text-primary); text-decoration: none; }
.catalog-list-page .edition-title a:hover { color: var(--color-brand-strong); text-decoration: underline; text-underline-offset: 3px; }
.catalog-list-page .organizer { margin: 0; color: var(--muted); font-size: 13px; overflow-wrap: anywhere; }
.catalog-list-page .edition-summary {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 12px;
  margin: 0;
  padding: 10px 12px;
  background: var(--color-surface-muted);
  border-radius: var(--radius-md);
}
.catalog-list-page .edition-summary div { min-width: 0; }
.catalog-list-page .edition-summary dt { font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--color-text-tertiary); }
.catalog-list-page .edition-summary dd { margin: 2px 0 0; color: var(--color-text-strong); font-size: 13px; font-weight: 700; overflow-wrap: anywhere; }
.catalog-list-page .participation-label { margin: 0; color: var(--color-secondary); font-size: 12px; font-weight: 650; }
.catalog-list-page .next-date { display: flex; flex-wrap: wrap; gap: 6px; align-items: baseline; width: auto; margin: 0; padding: 0; background: transparent; color: var(--muted); font-size: 13px; }
.catalog-list-page .next-date-label { color: var(--color-text-strong); font-weight: 700; }
.catalog-list-page .next-date strong { color: var(--color-text-primary); }
.catalog-list-page .edition-description { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.5; overflow-wrap: anywhere; }
.catalog-list-page .edition-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: auto; padding-top: 6px; }
.catalog-list-page .edition-actions form { display: inline-flex; margin: 0; }
.catalog-list-page .edition-actions .button { min-height: 38px; margin-top: 0; font-size: 12px; }
.catalog-list-page .edition-actions .text-link { align-self: center; }
.catalog-list-page .catalog-empty { grid-column: 1 / -1; margin: 0; }

.catalog-list-page .catalog-pagination {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  margin: 20px 0 8px;
  padding: 10px 12px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}
.catalog-list-page .pagination-link { color: var(--color-link); font-size: 13px; font-weight: 700; text-decoration: none; padding: 6px 10px; border-radius: var(--radius-xs); }
.catalog-list-page .pagination-link:hover { background: var(--color-brand-soft); }
.catalog-list-page .pagination-status { color: var(--muted); font-size: 13px; }
.catalog-list-page .pagination-status strong { color: var(--color-text-primary); }
.catalog-list-page .catalog-footnote { margin: 14px 0 0; font-size: 12px; }

@media (max-width: 1050px) {
  .catalog-list-page .catalog-filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog-list-page .catalog-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 768px) {
  .catalog-list-page .catalog-filter-grid { grid-template-columns: minmax(0, 1fr); }
  .catalog-list-page .catalog-cards { grid-template-columns: minmax(0, 1fr); }
  .catalog-list-page .catalog-pagination { justify-content: flex-start; }
}
@media (max-width: 520px) {
  .catalog-list-page .catalog-heading { flex-direction: column; }
  .catalog-list-page .heading-actions { width: 100%; }
  .catalog-list-page .heading-actions .button { width: 100%; }
  .catalog-list-page .catalog-filter-panel { padding: 14px; }
  .catalog-list-page .filter-actions { flex-direction: column; align-items: stretch; }
  .catalog-list-page .filter-actions .button { width: 100%; }
  .catalog-list-page .filter-reset { text-align: center; }
  .catalog-list-page .edition-summary { grid-template-columns: minmax(0, 1fr); }
}

/* ═══════════════════════════════════════════════════════════════════
   Module 6.1 — предметы ЕГЭ и факты участия в каталоге/карточке.
   Только токены; данные необязательные, пустые значения не выводятся.
   ═══════════════════════════════════════════════════════════════════ */
.catalog-list-page .card-subjects { display: flex; flex-wrap: wrap; gap: 5px; margin: 0; }
.catalog-list-page .subject-chip,
.detail-page .subject-chip {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: var(--radius-pill);
  background: var(--color-brand-soft);
  color: var(--color-brand-strong);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.4;
}
.catalog-list-page .card-facts { display: flex; flex-wrap: wrap; gap: 6px 12px; margin: 0; color: var(--color-text-secondary); font-size: 12px; }
.catalog-list-page .card-fact { display: inline-flex; gap: 4px; align-items: baseline; }
.catalog-list-page .card-fact-label { color: var(--color-text-tertiary); font-weight: 700; }
.catalog-list-page .card-registration { display: flex; flex-wrap: wrap; gap: 6px; align-items: baseline; margin: 0; font-size: 12px; color: var(--color-text-secondary); }
.catalog-list-page .card-registration-state {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: var(--radius-pill);
  font-size: 11px;
  font-weight: 800;
}
.catalog-list-page .card-registration-state.is-open { background: var(--color-success-bg); color: var(--color-success-text); }
.catalog-list-page .card-registration-state.is-soon { background: var(--color-warning-bg); color: var(--color-warning-text); }
.catalog-list-page .card-registration-state.is-closed { background: var(--color-surface-muted); color: var(--color-text-secondary); }

.detail-page .detail-facts .panel-header { align-items: flex-start; }
.detail-page .detail-facts h2 { margin: 3px 0 0; }
.detail-page .detail-facts-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px 18px;
  margin: 0;
}
.detail-page .detail-facts-grid div { min-width: 0; }
.detail-page .detail-facts-grid dt { color: var(--color-text-tertiary); font-size: 10px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.detail-page .detail-facts-grid dd { margin: 2px 0 0; color: var(--color-text-strong); font-size: 13px; font-weight: 600; overflow-wrap: anywhere; }
.detail-page .detail-subjects,
.detail-page .detail-conditions { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--color-border); }
.detail-page .detail-subjects h3,
.detail-page .detail-conditions h3 { margin: 0 0 7px; color: var(--color-text-primary); font-size: 14px; }
.detail-page .subject-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; }
.detail-page .detail-note { margin: 8px 0 0; font-size: 12px; line-height: 1.5; }
.detail-page .detail-conditions p { margin: 0; color: var(--color-text-secondary); font-size: 13px; line-height: 1.55; }

/* Module 6.2 — marketplace filters, deadline state and rating. */
.catalog-list-page .catalog-filter-grid.catalog-filter-extra {
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
.catalog-list-page .card-registration-state.is-upcoming {
  background: var(--color-info-bg);
  color: var(--color-info-text);
}
.catalog-list-page .card-rating {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin: 0;
  color: var(--color-text-secondary);
  font-size: 12px;
}
.catalog-list-page .card-rating-icon { display: inline-flex; color: var(--color-warning-strong); }
.catalog-list-page .card-rating strong { color: var(--color-text-strong); font-size: 13px; }

/* Module 6.3 — checklist of structured proof requirements. */
.detail-page .evidence-checklist .requirement-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.detail-page .requirement-item {
  display: grid;
  gap: 6px;
  padding: 12px 14px;
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--color-border-strong);
  border-radius: var(--radius-md);
  background: var(--color-surface-muted);
}
.detail-page .requirement-item.is-approved { border-left-color: var(--color-success-strong); }
.detail-page .requirement-item.is-rejected { border-left-color: var(--color-danger-strong); }
.detail-page .requirement-item.is-pending { border-left-color: var(--color-warning-strong); }
.detail-page .requirement-item.is-missing { border-left-color: var(--color-border-strong); }
.detail-page .requirement-head { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: baseline; color: var(--color-text-strong); font-size: 13px; }
.detail-page .requirement-head strong { color: var(--color-text-primary); }
.detail-page .requirement-required,
.detail-page .requirement-optional { font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.detail-page .requirement-required { color: var(--color-warning-text); }
.detail-page .requirement-optional { color: var(--color-text-tertiary); }
.detail-page .requirement-description { margin: 0; color: var(--color-text-secondary); font-size: 12.5px; line-height: 1.5; }
.detail-page .requirement-status { margin: 0; color: var(--color-text-secondary); font-size: 12px; font-weight: 700; }
.detail-page .requirement-item.is-approved .requirement-status { color: var(--color-success-text); }
.detail-page .requirement-item.is-rejected .requirement-status { color: var(--color-danger-text); }
.detail-page .requirement-item.is-pending .requirement-status { color: var(--color-warning-text); }
.detail-page .requirement-reason { margin: 0; color: var(--color-danger-text); font-size: 12px; line-height: 1.5; }
.detail-page .requirement-action { margin-top: 2px; }

/* Module 6.5B — derived stage readiness and manual confirmation. */
.detail-page .stage-readiness-list { display: grid; gap: 8px; margin: 0 0 12px; }
.detail-page .stage-readiness,
.detail-page .staff-confirmation-row { border: 1px solid var(--color-border); border-left: 3px solid var(--color-border-strong); border-radius: var(--radius-md); padding: 10px 12px; background: var(--color-surface-muted); }
.detail-page .stage-readiness.is-ready { border-left-color: var(--color-success-strong); }
.detail-page .stage-readiness.is-pending { border-left-color: var(--color-warning-strong); }
.detail-page .stage-readiness.is-rejected,
.detail-page .stage-readiness.is-inconsistent { border-left-color: var(--color-danger-strong); }
.detail-page .stage-readiness.is-confirmed { border-left-color: var(--color-success-strong); }
.detail-page .stage-readiness-head { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: baseline; color: var(--color-text-strong); font-size: 13px; }
.detail-page .stage-readiness-head strong { color: var(--color-text-primary); }
.detail-page .stage-readiness-label { color: var(--color-text-secondary); font-size: 12px; font-weight: 700; }
.detail-page .stage-readiness-count { color: var(--color-text-tertiary); font-size: 11px; }
.detail-page .stage-confirmed-note { margin: 5px 0 0; color: var(--color-success-text); font-size: 12px; font-weight: 700; }
.detail-page .stage-ready-note { margin: 5px 0 0; color: var(--color-success-text); font-size: 12px; }
.detail-page .stage-warning { margin: 5px 0 0; color: var(--color-danger-text); font-size: 12px; }
.detail-page .stage-reason { margin: 5px 0 0; font-size: 12px; }
.detail-page .stage-confirmation-panel .staff-confirmation-row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.detail-page .staff-confirmation-main { display: grid; gap: 3px; min-width: 0; color: var(--color-text-secondary); font-size: 12.5px; }
.detail-page .staff-confirmation-main b { color: var(--color-text-strong); font-size: 13px; }
.detail-page .staff-confirmation-form { display: flex; flex-wrap: wrap; gap: 8px; align-items: end; }
.detail-page .staff-confirmation-form label { display: grid; gap: 3px; font-size: 11px; color: var(--color-text-secondary); }
.detail-page .staff-confirmation-form input { min-width: 180px; padding: 6px 8px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); font: inherit; font-size: 12px; }
.detail-page .staff-confirmation-side { display: grid; gap: 4px; align-content: start; }

/* Module 6.5C — review lifecycle. */
.detail-page .stage-reviewed-note { margin: 5px 0 0; color: var(--color-success-text); font-size: 12px; font-weight: 700; }
.detail-page .stage-review-note { margin: 5px 0 0; color: var(--color-text-secondary); font-size: 11.5px; }
.detail-page .stage-review-history { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--color-border); color: var(--color-text-secondary); font-size: 11.5px; }
.detail-page .stage-review-history b { color: var(--color-text-strong); }
.detail-page .stage-review-history p { margin: 4px 0 0; }
.detail-page .staff-confirmation-form select { min-width: 180px; padding: 6px 8px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); font: inherit; font-size: 12px; }

.university-rule-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px; }
.university-rule-card { padding:14px; border:1px solid var(--color-border); border-radius:12px; background:var(--color-surface); }
.university-rule-head { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; align-items:flex-start; }
.university-rule-head h3 { margin:0 0 4px; font-size:1rem; }
.university-rule-list { list-style:none; padding:0; margin:10px 0; display:grid; gap:8px; }
.university-rule-list li { display:grid; grid-template-columns:1fr auto; gap:4px 10px; padding-top:8px; border-top:1px solid var(--color-border); font-size:.92rem; }
.university-rule-list li strong { white-space:nowrap; color:var(--color-primary); }
.university-rule-list li small { grid-column:1 / -1; color:var(--color-text-muted); }
.university-rule-card .small-action { display:inline-block; margin-top:2px; }
@media (max-width:720px) { .university-rule-grid { grid-template-columns:1fr; } }
