/* Sections added for the end-state homepage (the challenge, impact numbers, the weekend, entries, the sponsor strip
   and the partner band). The draft has no CSS for them, so they are built only from its own patterns and tokens:
   Archivo Black uppercase headings with a yellow word, .section-label, dark stone/rock bands with the yellow hairline
   (.features-section) alternating with light ones (.gallery-section), --container and --gap, the feature-card and
   eyebrow styles, and the 2px grid gaps of the draft's card grids. */

/* ─── Shared ─── */
/* No block gap between the bands or inside their grids: the draft's spacing comes from its own padding. */
.wp-block-group.challenge-section, .wp-block-group.impact-section, .wp-block-group.weekend-section,
.wp-block-group.entries-section, .wp-block-pvh-sponsor-strip.sponsor-strip, .wp-block-group.partner-section { margin: 0; }
.wp-block-group.challenge-section > *, .wp-block-group.impact-section > *, .wp-block-group.weekend-section > *,
.wp-block-group.entries-section > *, .wp-block-group.partner-section > *,
.wp-block-group.challenge-grid > *, .wp-block-group.challenge-card > *,
.wp-block-group.impact-grid > *, .wp-block-group.impact-tile > *, .wp-block-group.weekend-grid > *, .wp-block-group.weekend-day > * { margin-block-start: 0; }

/* Section titles on the dark bands: white with the yellow word, like the hero's title. */
.challenge-section .section-label, .weekend-section .section-label { color: white; }
.challenge-section .section-label span, .weekend-section .section-label span,
.entries-section h2 span, .partner-section h2 span { color: var(--blaze); }

/* The dark bands' top edge: the draft's yellow hairline (.features-section::before). It also separates the challenge
   and the weekend if the impact band between them is hidden. */
.weekend-section, .entries-section { position: relative; }
.weekend-section::before, .entries-section::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 1px;
	background: linear-gradient(90deg, transparent, var(--blaze), transparent);
}

/* ─── The challenge: the draft's feature cards, three across ─── */
.challenge-grid { grid-template-columns: repeat(3, 1fr); }
.challenge-card { gap: 16px; }
/* The section in the eyebrow style (.hero-eyebrow): small, spaced, yellow, after a short yellow rule. Two classes, to
   outrank the draft's .feature-card p. */
.challenge-card .challenge-card__section { display: flex; align-items: center; gap: 12px; font-size: 11px; font-weight: 700; letter-spacing: 4px; text-transform: uppercase; color: var(--blaze); }
.challenge-card__section::before { content: ''; width: 32px; height: 2px; background: var(--blaze); }
/* Larger than the draft's 14px card title: these are the event names (the draft's contact-card name size). */
.challenge-card h3 { font-size: 20px; font-weight: 700; line-height: 1.15; letter-spacing: 0.5px; }
/* The title's link covers the whole card, so the card is one link, as in the draft (a block can't be a link itself). */
.challenge-card h3 a::after { content: ''; position: absolute; inset: 0; }
/* At the foot of the card, so the facts line up across the three cards; they wrap only where they don't fit. Each is a
   list item: the label, then the value in bold on its own line. Two classes, so the block-gap reset above doesn't
   cancel the margin that pushes them down. */
.challenge-card .challenge-card__facts { display: flex; flex-wrap: wrap; gap: 12px 24px; margin: auto 0 0; padding-top: 8px; list-style: none; }
/* The label takes the card's text colour (sand, white on hover), so it never sits as sand on the hover's earth (4.07:1). */
.challenge-card__facts li { font-size: 11px; font-weight: 600; letter-spacing: 1.5px; text-transform: uppercase; }
.challenge-card__facts strong { display: block; margin: 2px 0 0; font-size: 15px; font-weight: 700; letter-spacing: normal; text-transform: none; color: white; }
/* The scroll-in fade sits on the card itself (the draft wraps each card), so keep the card's own hover transition. */
.challenge-card.reveal { transition: all .35s, opacity .6s cubic-bezier(.25,.46,.45,.94), transform .6s cubic-bezier(.25,.46,.45,.94); }
.challenge-card.reveal:nth-child(2) { transition-delay: 0s, .08s, .08s; }
.challenge-card.reveal:nth-child(3) { transition-delay: 0s, .16s, .16s; }
/* The cards sit 2px apart, so the next card would cover the right edge of a focused card's ring. */
.challenge-card:has(a:focus-visible) { z-index: 1; }

/* ─── Impact numbers: white cards on snow, like the draft's light cards ─── */
.impact-tile:has(.impact-number:empty) { display: none; }
.impact-section:not(:has(.impact-number:not(:empty))) { display: none; }
.impact-section { padding: 100px var(--gap); background: var(--snow); }
.impact-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 2px; max-width: var(--container); margin: 0 auto; }
.impact-grid.reveal { transition-delay: .15s; }
.impact-tile { position: relative; padding: 40px 32px; background: white; border: 1px solid var(--fog); }
.impact-tile::before { content: ''; position: absolute; top: -1px; left: -1px; width: calc(100% + 2px); height: 3px; background: var(--blaze); }
.impact-number { font-family: var(--font-display); font-size: clamp(2.5rem, 6vw, 4rem); line-height: 1; margin: 0; color: var(--wp--preset--color--stone); letter-spacing: -1px; }
.impact-tile .impact-label { margin-top: 12px; font-size: 12px; font-weight: 600; letter-spacing: 1.5px; text-transform: uppercase; color: var(--earth); }

/* ─── How the weekend works: a timeline, Friday to Sunday ─── */
.weekend-section { padding: 100px var(--gap); background: var(--stone); }
/* One line across the three days (no column gap, so the days' top rules join), with a yellow dot at each day. */
.weekend-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 48px 0; max-width: var(--container); margin: 0 auto; }
.weekend-day { position: relative; padding: 32px var(--gap) 0 0; border-top: 1px solid var(--earth); }
.weekend-day::before { content: ''; position: absolute; top: -5px; left: 0; width: 9px; height: 9px; border-radius: 50%; background: var(--blaze); }
.weekend-day:nth-child(2) { transition-delay: .08s; }
.weekend-day:nth-child(3) { transition-delay: .16s; }
.weekend-day h3 { font-size: 20px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: white; margin-bottom: 24px; }
.weekend-day ul { list-style: none; display: grid; gap: 18px; }
.weekend-day li { font-size: 15px; line-height: 1.6; color: var(--sand); }
.weekend-day li strong { display: block; margin-bottom: 2px; font-size: 12px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--blaze); }

/* ─── Entries: the dark band with the big yellow button ─── */
/* The text on the left and the button on the right, inside the draft's container width. */
.entries-section {
	display: grid;
	grid-template-columns: 1fr auto;
	column-gap: 48px;
	align-items: end;
	padding: 100px max(var(--gap), calc((100% - var(--container)) / 2));
	background: var(--stone);
}
.entries-section > * { grid-column: 1; }
.entries-section > .wp-block-buttons { grid-column: 2; grid-row: 1 / span 5; align-self: end; }
/* .page-eyebrow is darkened for light pages (adapt.css); on the dark band it is the hero's yellow. */
.entries-section .page-eyebrow { color: var(--blaze); }
/* The draft's page title (.page-title): Archivo Black, browser bold. */
.entries-section h2, .partner-section h2 { font-size: clamp(36px, 5vw, 56px); font-weight: 700; line-height: 0.95; letter-spacing: -0.5px; text-transform: uppercase; color: white; margin-bottom: 24px; }
.entries-prices { font-size: 20px; font-weight: 600; line-height: 1.5; color: white; max-width: 560px; }
.entries-section .entries-includes { margin-top: 8px; font-size: 16px; line-height: 1.7; color: var(--sand); max-width: 560px; }
.entries-section .entries-open, .entries-section .entries-close { margin-top: 24px; font-size: 12px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--fog); }
.entries-section .entries-open + .entries-close { margin-top: 8px; }
/* A blank fact leaves nothing behind: no gap, and no lone yellow rule where the year or an eyebrow was. */
.entries-year:empty, .entries-includes:empty, .entries-close:empty, .entries-prices:empty, .entries-open:empty,
.page-eyebrow:empty, .event-venue:empty { display: none; }

/* ─── Sponsor strip: logos on white, the draft's light-card ground ─── */
.sponsor-strip { text-align: center; padding: clamp(40px, 6vw, 72px) var(--gap); background: white; }
/* The draft's section heading (.section-heading), centred between two rules. */
.sponsor-strip__title { display: flex; align-items: center; gap: 16px; max-width: var(--container); margin: 0 auto 32px; font-size: 20px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--stone); }
.sponsor-strip__title::before, .sponsor-strip__title::after { content: ''; flex: 1; height: 1px; background: var(--fog); }
.sponsor-strip__principal img { max-height: 96px; max-width: 100%; width: auto; height: auto; margin: 0 auto 32px; }
.sponsor-strip__others { list-style: none; margin: 0 auto; padding: 0; max-width: var(--container); display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 24px 40px; }
.sponsor-strip__others a { display: block; }
/* The draft's sponsor logos: slightly grey, full colour on hover (.sponsor-logo). */
.sponsor-strip__others img { max-height: 56px; max-width: 160px; width: auto; height: auto; filter: grayscale(0.3); transition: filter .3s; }
.sponsor-strip__others a:hover img, .sponsor-strip__others a:focus-visible img { filter: grayscale(0); }

/* ─── Become a partner: a rock band between yellow rules ─── */
.partner-section {
	position: relative;
	display: grid;
	grid-template-columns: 1fr auto;
	column-gap: 48px;
	align-items: center;
	padding: 80px max(var(--gap), calc((100% - var(--container)) / 2));
	background: var(--rock);
}
.partner-section::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--blaze); }
.partner-section > * { grid-column: 1; }
.partner-section > .wp-block-buttons { grid-column: 2; grid-row: 1 / span 2; }
.partner-section p { font-size: 17px; line-height: 1.7; color: var(--sand); max-width: 560px; }

/* ─── News, archive and search lists: the page shell's pieces, spaced as a list ─── */
.news-item { margin-bottom: 40px; }
.news-item .page-eyebrow { margin-bottom: 8px; }
.news-item .wp-block-post-title { font-size: 24px; margin-bottom: 8px; }
.news-item .wp-block-post-excerpt__excerpt { margin: 0; max-width: 560px; }
.page-shell .container > .back-link { margin-block: 40px 0; } /* beats adapt.css: .page-shell .container > * */
.wp-block-query-pagination { margin-top: 16px; }

/* ─── Results: the draft's link-list pills, one row per year (year, then its sheets) ─── */
.results-list { grid-template-columns: 1fr; gap: 2px; padding: 0; }
.results-list__year { display: flex; flex-wrap: wrap; align-items: stretch; gap: 2px; }
.results-list__label { flex: 0 0 96px; display: flex; align-items: center; font-family: var(--font-display); font-size: 18px; color: var(--stone); }
.results-list__year a { flex: 0 1 300px; }
.results-list__note { display: flex; align-items: center; padding: 18px 24px; font-size: 14px; font-weight: 600; color: var(--stone); }
.results-list__meta { font-weight: 400; }
@media (max-width: 600px) {
	.results-list__label { flex-basis: 100%; padding-top: 12px; }
	.results-list__year a { flex-basis: 100%; }
}

/* ─── Documents: the archive is one row per year, like Results ─── */
.documents-year { display: flex; flex-wrap: wrap; align-items: stretch; gap: 2px; margin: 0 0 2px; }
.documents-year .year-heading { flex: 0 0 96px; margin: 0; }
.documents-year .year-heading::after { display: none; }
.documents-year .link-list { display: contents; }
.documents-year .link-list li { flex: 0 1 300px; }
.documents-year .link-list li a { height: 100%; }
.link-meta { font-weight: 400; }
/* The archive is folded away until asked for: a white box with the link pills' border, headed in the section
   heading's display capitals. Core's details block, so it opens without script and by keyboard. */
.previous-years { margin-top: 24px; }
.previous-years > summary {
	padding: 18px 24px;
	background: white;
	border: 1px solid var(--fog);
	font-family: var(--font-display);
	font-size: 20px;
	line-height: 1.4;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--stone);
	cursor: pointer;
}
.previous-years > summary:hover { border-color: var(--stone); }
.previous-years > summary:focus-visible {
	outline: 2px solid var(--wp--preset--color--blaze);
	outline-offset: 3px;
	box-shadow: 0 0 0 4px var(--wp--preset--color--stone);
}
.previous-years .documents-archive { margin-top: 24px; }
@media (max-width: 600px) {
	.documents-year .year-heading { flex-basis: 100%; padding-top: 12px; }
	.documents-year .link-list li { flex-basis: 100%; }
}

/* ─── The challenge, Enter and Event info: the home page's pieces on a light page ─── */
/* The challenge cards, without the home page's link (they are on the page it leads to). */
.event-cards .challenge-card { cursor: default; }
/* The entries band and the weekend timeline as dark panels inside the page, with the feature card's padding. */
.page-shell .entries-section, .page-shell .weekend-section { padding: 48px var(--gap); }
.enter-facts > .wp-block-buttons { grid-row: 1 / span 6; }
/* A link in running text looks like the draft's intro link (.page-intro a), so it stands out from the words around it.
   The link-list pills keep their own look. */
.event-text p a, .enter-steps a, .event-questions .role a, .sponsor-tiers p a, .about-text p a, .comment-text a, .comment-source a { color: var(--blaze-dim-text); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
/* The same look as the default for a plain link in a paragraph of page or news content, so a link an Editor types into a
   new paragraph is not mistaken for plain text. :where() keeps it below every rule above; classed links (buttons, cards) keep their own. */
:where(.page-shell .wp-block-post-content) p a:not([class]) { color: var(--blaze-dim-text); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
/* The draft resets list padding, which would put the numbers or bullets of a list in running text (Enter's steps, the
   Privacy and Accessibility lists) outside the page. */
.event-text > .wp-block-list:not(.link-list) { padding-left: 1.25em; }
.event-text > .wp-block-list:not(.link-list) li + li { margin-top: 12px; }
/* The quoted rules follow their "The 2026 rules say:" line closely. */
.rules-quote.notice-box { margin-top: 16px; }
/* Questions: the draft's contact cards; the block gap would push the second card down and space out the lines. */
.wp-block-group.contact-grid > *, .wp-block-group.contact-card > * { margin-block-start: 0; }
.contact-card:has(.entries-close-answer:empty) { display: none; }

/* ─── Sponsors: the wall is the draft's sponsor cards (draft.css); the tiers are a table of the same pieces ─── */
/* A sponsor without a website is a card but not a link, so it doesn't react to the pointer. */
div.sponsor-card:hover { background: white; border-color: var(--fog); }
div.sponsor-card::after { content: none; }
div.sponsor-card:hover .sponsor-logo { filter: grayscale(0.3); }
/* Each tier is a row of the draft's white boxes (fog border, 2px apart, like .sponsor-grid and .link-list): its name in
   the sponsor card's heading type over a muted line, the price in the display type of the Results years, and the
   column names as the contact card's small labels. */
.wp-block-table.tier-table table { border-collapse: separate; border-spacing: 0 2px; }
.wp-block-table.tier-table th { padding: 0 24px 6px; border: 0; text-align: left; font-size: 11px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--blaze-dim-text); }
.wp-block-table.tier-table td { padding: 18px 24px; background: white; border: 1px solid var(--fog); font-size: 13px; color: var(--sand-text); vertical-align: middle; }
.wp-block-table.tier-table td strong { font-family: var(--font-display); font-weight: 400; letter-spacing: 0.5px; text-transform: uppercase; color: var(--stone); }
.wp-block-table.tier-table td:first-child { border-right: 0; }
.wp-block-table.tier-table td:last-child { border-left: 0; font-family: var(--font-display); font-size: 18px; color: var(--stone); }
.wp-block-table.tier-table th:last-child, .wp-block-table.tier-table td:last-child { text-align: right; white-space: nowrap; }

/* ─── Press and Contact: the draft's comment and contact cards in block markup ─── */
/* The block gap would push each line of a card down and space out the cards; the draft's own margins space them
   (12px under the header, 10px above the source line, 2px between cards). Paragraphs within one comment are 10px apart. */
.wp-block-group.comment { margin-block-start: 0; }
.wp-block-group.comment > *, .wp-block-group.comment-header > *, .wp-block-group.comment-text > * { margin-block-start: 0; }
.wp-block-group.comment > .comment-source { margin-top: 10px; }
.wp-block-group.comment-text > * + * { margin-block-start: 10px; }
/* A role address in the draft's button (uppercase, spaced) is wider than a contact card on a 320px phone, where the
   draft runs off the screen. The page content marks a break after the @ (<wbr>); an address typed in the editor without
   one still breaks inside the button rather than running off. Wider screens are unchanged. */
.email-btn { overflow-wrap: anywhere; }

/* ─── Narrower screens ─── */
@media (max-width: 900px) {
	.challenge-grid { grid-template-columns: 1fr; }
	.entries-section, .partner-section { grid-template-columns: 1fr; }
	.entries-section > .wp-block-buttons, .partner-section > .wp-block-buttons { grid-column: 1; grid-row: auto; margin-top: 32px; }
}
@media (max-width: 600px) {
	.impact-tile { padding: 28px 20px; }
	.sponsor-strip__others { gap: 20px 28px; }
	.sponsor-strip__others img { max-height: 44px; max-width: 120px; }
}
