.season-recap { --article-orange:#ebcb8e; }
.season-recap .article-heading h1 { max-width:20ch; }
.season-recap .article-cover figcaption { justify-content:space-between; gap:16px; flex-wrap:wrap; line-height:1.5; }
.season-recap .article-cover figcaption a { color:#ebcb8e; text-decoration:underline; text-underline-offset:4px; }
.season-recap .recap-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; margin:38px 0 0; padding:25px 0; border-block:1px solid #6a5c43; }
.recap-summary div { display:flex; flex-direction:column; gap:9px; }
.recap-summary strong { color:#ebcb8e; font:400 clamp(2.4rem,4vw,3.6rem)/1 Impact,Haettenschweiler,'Arial Narrow Bold',sans-serif; }
.recap-summary span { color:#c6c8bf; font-size:.875rem; line-height:1.5; }
.recap-photo { margin:34px 0; }
.recap-photo img { display:block; width:100%; height:auto; border-radius:6px; border:1px solid #3b433d; }
.recap-photo figcaption { margin-top:10px; color:#a5b2a8; font-size:.8125rem; line-height:1.6; }
.recap-photo-pair { display:grid; grid-template-columns:1fr 1fr; gap:15px; margin:32px 0; }
.recap-photo-pair .recap-photo { margin:0; }
.season-recap .recap-result { display:flex; justify-content:space-between; align-items:center; gap:24px; margin:28px 0; padding:21px 0; border-block:1px solid #4d564a; }
.recap-result span { color:#c6d0c8; font-size:1rem; }
.recap-result strong { color:#ebcb8e; font:400 2.4rem/1 Impact,Haettenschweiler,'Arial Narrow Bold',sans-serif; white-space:nowrap; }
.recap-table-wrap { overflow-x:auto; margin:32px 0; }
.recap-table { width:100%; border-collapse:collapse; text-align:left; font-variant-numeric:tabular-nums; }
.recap-table caption { text-align:left; padding-bottom:16px; color:#ebcb8e; font-weight:750; }
.recap-table th,.recap-table td { padding:16px 8px; border-bottom:1px solid #354038; }
.recap-table thead th { color:#a5b2a8; font-size:.8125rem; }
.recap-table th:first-child,.recap-table td:first-child { padding-left:0; }
.recap-table th:last-child,.recap-table td:last-child { text-align:right; padding-right:0; }
.recap-table tbody tr:first-child { color:#efd090; }
.recap-table tbody th { font-size:1rem; }
.recap-table td { color:#bec9c1; }
.recap-champions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); margin:30px 0; padding:0; list-style:none; gap:1px; background:#574e39; border:1px solid #574e39; }
.article-body .recap-champions li { padding:22px 18px; background:#171b15; font-size:1rem; line-height:1.4; }
.recap-champions span { display:block; margin-bottom:12px; color:#ebcb8e; font-weight:800; font-size:.8125rem; letter-spacing:.06em; text-transform:uppercase; }
.recap-climb { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); margin:30px 0; gap:12px; }
.recap-climb div { padding:20px 0; border-top:1px solid #5b624f; }
.recap-climb dt { color:#b4c0b5; font-size:.8125rem; }
.recap-climb dd { margin:12px 0 0; color:#ebcb8e; font-size:2rem; font-weight:800; }
.season-recap .article-manifesto { background:#181b14; border-color:#635839; }
.season-recap .article-body .article-closing { background:#182017; border-color:#65764a; }
.season-recap .article-body a:not(.button) { color:#ebcb8e; text-decoration:underline; text-underline-offset:4px; }
@media(max-width:600px) {
  .recap-photo-pair,.recap-champions { grid-template-columns:1fr; }
  .season-recap .recap-summary { gap:12px; }
  .recap-summary strong { font-size:clamp(1.5rem,5.5vw,2.3rem); }
  .recap-summary span { font-size:.75rem; }
  .recap-result strong { font-size:2rem; }
}
