.catalog-section-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.catalog-section-card { display:flex; flex-direction:column; border:1px solid var(--border); border-radius:28px; overflow:hidden; background:var(--surface); }
.catalog-section-card > img { width:100%; height:180px; object-fit:cover; }
.section-card-content { padding:24px; display:flex; flex-direction:column; gap:12px; flex:1; }
.section-card-content h3 { margin:0; font-size:1.45rem; line-height:1.3; }
.section-card-content p { margin:0; color:var(--muted); line-height:1.6; }
.section-link { display:block; margin-top:auto; padding-top:14px; color:var(--accent); font-weight:bold; }
.catalog-eyebrow { color:var(--muted); font-size:.85rem; text-transform:uppercase; letter-spacing:.08em; }
.catalog-product-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.catalog-product { padding:0; border:1px solid var(--border); background:var(--surface); border-radius:28px; overflow:hidden; text-align:left; color:var(--text); display:flex; flex-direction:column; cursor:pointer; min-width:0; }
.catalog-product-image { display:block; position:relative; aspect-ratio:4/3; width:100%; overflow:hidden; }
.catalog-product-image img { width:100%; height:100%; object-fit:cover; }
.catalog-overlay { position:absolute; inset:0; display:flex; align-items:center; padding:22px; background:rgba(32,43,52,.94); color:#FBFCFA; line-height:1.55; opacity:0; transition:opacity .18s; overflow:auto; }
@media (hover:hover) { .catalog-product-image:hover .catalog-overlay { opacity:1; } }
.catalog-product:focus-visible .catalog-overlay { opacity:1; }
.catalog-product-content { padding:18px; display:flex; flex-direction:column; gap:12px; flex:1; width:100%; min-height:154px; }
.product-title { overflow-wrap:anywhere; }
.catalog-label { color:var(--muted); font-size:.85rem; line-height:1.45; }
.detail-link { color:var(--accent); margin-top:auto; font-size:.85rem; }
.catalog-group { margin:28px 0; }
.catalog-group > h3 { font-size:1.3rem; margin:0 0 16px; }
.group-intro { color:var(--muted); line-height:1.7; }
.catalog-empty { border:1px dashed var(--border); padding:24px; border-radius:20px; color:var(--muted); background:var(--surface); }
.catalog-back { display:inline-block; color:var(--accent); padding:10px 0; }
#catalogIntro h1 { font-size:clamp(1.8rem,3.5vw,2.8rem); line-height:1.2; overflow-wrap:anywhere; }
#catalogIntro { margin-bottom:24px; }
#catalogIntro:empty { display:none; }
.seasonal-scope { border-top:4px solid var(--season-primary); }
.seasonal-scope .section-link, .seasonal-scope .catalog-eyebrow, .seasonal-scope .detail-link { color:var(--season-primary); }
.seasonal-scope h2 { color:var(--season-secondary); }
#seasonalPromo > img { height:135px; width:100%; object-fit:cover; border-radius:18px; margin:14px 0; }
.season-banner { display:flex; align-items:center; gap:24px; background:var(--surface-soft); border-radius:24px; overflow:hidden; margin:24px 0; }
.season-banner img { width:35%; height:180px; object-fit:cover; }
.season-banner > div { padding:18px; }
#siteFooter { padding:12px 0 100px; color:var(--muted); }
:where(a,button,input):focus-visible { outline:3px solid var(--accent-2); outline-offset:4px; }
#productDetail { border:1px solid var(--border); border-radius:30px; padding:0; width:min(900px,calc(100% - 28px)); max-height:85dvh; background:var(--surface); color:var(--text); }
#productDetail::backdrop { background:rgba(32,43,52,.6); backdrop-filter:blur(6px); }
.detail-body { display:grid; grid-template-columns:1fr 1fr; }
#detailImage { width:100%; height:100%; object-fit:cover; aspect-ratio:4/3; }
#productDetail .modal-info { padding-top:70px; overflow-wrap:anywhere; }
.detail-open { overflow:hidden; }
@media(max-width:940px) { .catalog-product-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:640px) { .catalog-section-grid,.catalog-product-grid,.detail-body { grid-template-columns:1fr; } .section-shell { padding:18px; } .section-card-content { padding:20px; } .season-banner { flex-direction:column; gap:0; align-items:stretch; } .season-banner img { width:100%; } #productDetail .modal-info { padding:24px 18px; } #detailImage { max-height:240px; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } .catalog-overlay { transition:none; } }

/* Companion-course resources only; other catalogue products retain their styles. */
body[data-section="all-year-lessons"] #catalog,
.course-detail {
  --text:#193649; --muted:#63594F; --surface:#FAF8F3;
  --surface-soft:#EDE7DD; --border:#D3CCC0; --accent:#9C411F;
  --accent-2:#70242B;
  color:var(--text);
}
body[data-section="all-year-lessons"] .section-shell { background:#FAF8F3; }
.course-resource-note { padding:18px; border:1px solid var(--border); border-left:4px solid var(--accent); border-radius:18px; background:var(--surface-soft); line-height:1.6; }
.course-companion .catalog-product-image { height:260px; aspect-ratio:auto; background:#FAF8F3; display:flex; align-items:center; justify-content:center; }
.course-companion .catalog-product-image img { width:100%; height:100%; padding:16px; object-fit:contain; object-position:center; filter:none; }
.course-companion .catalog-product-content { min-height:230px; }
.course-companion .catalog-overlay { flex-direction:column; justify-content:center; align-items:flex-start; gap:14px; background:rgba(25,54,73,.97); }
.overlay-action { font-weight:bold; }
.course-companion { transition:transform .16s; }
@media(hover:hover) { .course-companion:hover { transform:translateY(-2px); } }
#productDetail.course-detail #detailImage { height:360px; padding:24px; object-fit:contain; object-position:center; background:#FAF8F3; align-self:center; }
#productDetail.course-detail .course-enquiry { background:#193649; color:#FAF8F3; margin-top:12px; }
@media(max-width:640px) { .course-companion .catalog-product-content { min-height:210px; } }
@media(prefers-reduced-motion:reduce) { .course-companion { transition:none; } }

/* Seasonal promotional artwork and details, including catalogue search results. */
.seasonal-product .catalog-product-image { aspect-ratio:1 / 1; }
.seasonal-product .catalog-product-image img { width:100%; height:100%; object-fit:cover; object-position:center; filter:none; }
.seasonal-product .catalog-overlay { inset:auto 0 0; max-height:48%; padding:14px; font-size:.9rem; }
.seasonal-summary { color:var(--text); line-height:1.6; }
#productDetail.seasonal-detail #detailImage { width:100%; height:auto; max-height:none; aspect-ratio:1 / 1; object-fit:cover; object-position:center; align-self:start; }
#productDetail.seasonal-detail #detailDescription { white-space:pre-line; color:var(--text); }
.seasonal-features { display:flex; flex-wrap:wrap; gap:8px; list-style:none; padding:0; margin:0; }
.seasonal-features li { padding:8px 12px; border:1px solid var(--border); border-radius:18px; background:var(--surface-soft); color:var(--text); line-height:1.5; }
.seasonal-package { padding-left:22px; line-height:1.7; }
#productDetail.seasonal-detail .course-enquiry { background:#193649; color:#FAF8F3; }
@media(max-width:640px) { #productDetail.seasonal-detail .modal-info { padding-top:24px; } }
