/**
 * Dayvessa — M1 component styles (NSW Public Holidays page only).
 * Every value below references a token from tokens.css — no hard-coded
 * hex/px values here. Mobile-first: base rules are the single-column
 * mobile layout per the approved design spec's "mobile is primary"
 * instruction; the desktop two-column treatments live behind the
 * min-width media query.
 */

body {
	font-family: var(--dv-font-sans);
	background: var(--dv-color-bg);
	color: var(--dv-color-text);
	margin: 0;
}

a {
	color: var(--dv-color-primary);
	text-decoration: none;
}

a:hover {
	color: var(--dv-color-emphasis);
}

*,
*::before,
*::after {
	box-sizing: border-box;
}

:focus-visible {
	outline: var(--dv-focus-ring-width) solid var(--dv-focus-ring-color);
	outline-offset: var(--dv-focus-ring-offset);
}

.dv-page {
	max-width: 1440px;
	margin: 0 auto;
	padding: 0 var(--dv-space-3);
}

@media (min-width: 900px) {
	.dv-page {
		padding: 0 var(--dv-space-7);
	}
}

/* Header */

.dv-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--dv-space-3);
	padding: var(--dv-space-3);
	border-bottom: 1px solid rgba(32, 35, 32, 0.06);
}

@media (min-width: 900px) {
	.dv-header {
		padding: 0 var(--dv-space-7);
		height: 100px;
		flex-wrap: nowrap;
	}
}

.dv-header__brand {
	font-family: var(--dv-font-serif);
	font-size: 22px;
	font-weight: 600;
	color: var(--dv-color-primary);
	letter-spacing: -0.5px;
}

@media (min-width: 900px) {
	.dv-header__brand {
		font-size: 27px;
	}
}

.dv-header__nav {
	display: none;
	gap: var(--dv-space-4);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.01em;
	text-transform: uppercase;
}

@media (min-width: 900px) {
	.dv-header__nav {
		display: flex;
	}
}

.dv-header__nav-link {
	color: rgba(32, 35, 32, 0.75);
	padding-bottom: 4px;
}

.dv-header__nav-link.is-active {
	color: var(--dv-color-primary);
	border-bottom: 2px solid var(--dv-color-emphasis);
}

.dv-header__nav-link--inert {
	cursor: default;
}

.dv-header__controls {
	display: flex;
	align-items: center;
	gap: var(--dv-space-2);
}

.dv-state-control,
.dv-search-control {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	background: var(--dv-color-surface);
	border: 1px solid rgba(32, 35, 32, 0.15);
	border-radius: var(--dv-radius-pill);
	padding: 8px 14px;
	font-family: var(--dv-font-serif);
	font-size: 15px;
	font-weight: 600;
	color: var(--dv-color-primary);
}

.dv-search-control {
	font-family: var(--dv-font-sans);
	color: rgba(32, 35, 32, 0.55);
}

.dv-state-control__caret {
	font-size: 10px;
	opacity: 0.6;
}

/* M6.4: the state control is now a real <select> (see
   template-parts/global/header.php) wrapped in the same .dv-state-control
   pill it always visually was — the select itself is stripped of its
   native appearance/border so it reads identically to the old static
   text, with the existing caret span still doing the visual work. */
.dv-state-control__select {
	appearance: none;
	-webkit-appearance: none;
	background: transparent;
	border: none;
	padding: 0;
	margin: 0;
	font: inherit;
	color: inherit;
	cursor: pointer;
}

.dv-state-control__select:focus-visible {
	outline: 2px solid var(--dv-color-emphasis);
	outline-offset: 2px;
}

/* Breadcrumb */

.dv-breadcrumb {
	padding: var(--dv-space-3) 0 0;
	font-size: 13px;
	color: rgba(32, 35, 32, 0.5);
}

.dv-breadcrumb a {
	color: rgba(32, 35, 32, 0.5);
}

/* Banners */

.dv-banner {
	margin: var(--dv-space-3) 0 0;
	border-radius: var(--dv-radius-card);
	padding: 14px 20px;
	display: flex;
	align-items: center;
	gap: var(--dv-space-3);
	font-size: 14px;
	color: var(--dv-color-primary);
	flex-wrap: wrap;
}

.dv-banner--provisional {
	background: rgba(232, 183, 53, 0.15);
	border: 1px solid rgba(232, 183, 53, 0.4);
}

.dv-banner__tag {
	font-weight: 700;
	text-transform: uppercase;
	font-size: 11px;
	letter-spacing: 0.04em;
	background: var(--dv-color-accent);
	color: var(--dv-color-primary);
	padding: 3px 8px;
	border-radius: 6px;
	white-space: nowrap;
}

.dv-banner--past-year {
	background: var(--dv-color-bg);
	border: 1px solid rgba(32, 35, 32, 0.15);
	justify-content: space-between;
}

/* Buttons */

.dv-button {
	display: inline-flex;
	align-items: center;
	border-radius: var(--dv-radius-control);
	padding: 12px 20px;
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
	white-space: nowrap;
}

.dv-button--primary {
	background: var(--dv-color-primary);
	color: var(--dv-color-surface);
	border: none;
}

.dv-button--primary:hover {
	background: var(--dv-color-primary-hover);
	color: var(--dv-color-surface);
}

.dv-button--outline {
	background: none;
	border: 1px solid var(--dv-color-primary);
	color: var(--dv-color-primary);
}

/* Export actions (M7.2) — the "Add to calendar (.ics)" + "Share" pair that
   sits next to a page's title block wherever an ICS export route exists;
   see template-parts/global/export-actions.php. */

.dv-export-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--dv-space-1);
	margin: var(--dv-space-2) 0 var(--dv-space-3);
}

.dv-export-actions .dv-button {
	padding: 8px 16px;
	font-size: 13px;
}

.dv-export-actions__share.is-confirmed {
	background: var(--dv-color-primary);
	color: var(--dv-color-surface);
}

/* Title block */

.dv-title-block {
	padding: var(--dv-space-5) 0 var(--dv-space-2);
}

.dv-title-block h1 {
	font-family: var(--dv-font-serif);
	font-size: var(--dv-text-hero-mobile);
	line-height: 1.06;
	font-weight: 500;
	color: var(--dv-color-primary);
	margin: 0 0 var(--dv-space-2);
	letter-spacing: -0.5px;
}

@media (min-width: 900px) {
	.dv-title-block h1 {
		font-size: 60px;
	}
}

.dv-title-block__intro {
	font-size: 16px;
	line-height: 1.5;
	color: rgba(32, 35, 32, 0.72);
	max-width: 560px;
	margin: 0 0 var(--dv-space-3);
}

.dv-year-switcher {
	display: flex;
	gap: var(--dv-space-1);
}

.dv-year-switcher__link {
	background: var(--dv-color-surface);
	border: 1px solid rgba(32, 35, 32, 0.15);
	border-radius: var(--dv-radius-control);
	padding: 10px 16px;
	font-family: var(--dv-font-serif);
	font-size: 16px;
	font-weight: 600;
	color: var(--dv-color-primary);
}

.dv-year-switcher__link.is-active {
	background: var(--dv-color-primary);
	color: var(--dv-color-surface);
	border-color: var(--dv-color-primary);
}

/* Hero */

.dv-hero {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--dv-space-3);
	padding: var(--dv-space-3) 0;
}

@media (min-width: 900px) {
	.dv-hero {
		grid-template-columns: 7fr 5fr;
	}
}

.dv-hero__main {
	background: var(--dv-color-public-holidays);
	border-radius: var(--dv-radius-hero);
	padding: var(--dv-space-4);
}

@media (min-width: 900px) {
	.dv-hero__main {
		padding: 44px 48px;
	}
}

.dv-hero__eyebrow {
	font-size: 12px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--dv-color-primary);
	opacity: 0.75;
}

.dv-hero__countdown-row {
	display: flex;
	flex-direction: column;
	gap: var(--dv-space-3);
	margin: var(--dv-space-3) 0 0;
}

@media (min-width: 640px) {
	.dv-hero__countdown-row {
		flex-direction: row;
		align-items: center;
		gap: var(--dv-space-6);
	}
}

.dv-hero__countdown {
	display: flex;
	align-items: baseline;
	gap: 12px;
}

.dv-hero__countdown-number {
	font-family: var(--dv-font-serif);
	font-size: var(--dv-text-countdown-mobile);
	font-weight: 500;
	color: var(--dv-color-primary);
	line-height: 0.85;
}

@media (min-width: 900px) {
	.dv-hero__countdown-number {
		font-size: 120px;
	}
}

.dv-hero__countdown-unit {
	font-size: 18px;
	font-weight: 500;
	color: var(--dv-color-primary);
	opacity: 0.8;
}

.dv-hero__holiday-name {
	font-family: var(--dv-font-serif);
	font-size: 26px;
	font-weight: 600;
	color: var(--dv-color-primary);
	line-height: 1.1;
}

@media (min-width: 900px) {
	.dv-hero__holiday-name {
		font-size: 36px;
	}
}

.dv-hero__holiday-date {
	font-size: 16px;
	font-weight: 600;
	color: var(--dv-color-primary);
	opacity: 0.85;
	margin-top: 6px;
}

.dv-hero__holiday-note {
	font-size: 14px;
	color: var(--dv-color-primary);
	opacity: 0.75;
	margin-top: var(--dv-space-2);
}

.dv-hero__coming-up {
	background: var(--dv-color-surface);
	border: 1px solid rgba(32, 35, 32, 0.1);
	border-radius: var(--dv-radius-hero);
	padding: var(--dv-space-4);
}

.dv-hero__coming-up-row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	padding: 14px 0;
	border-top: 1px solid rgba(32, 35, 32, 0.08);
}

.dv-hero__coming-up-name {
	font-family: var(--dv-font-serif);
	font-size: 18px;
	font-weight: 600;
	color: var(--dv-color-primary);
}

.dv-hero__coming-up-date {
	font-size: 13px;
	color: rgba(32, 35, 32, 0.55);
	margin-top: 2px;
}

.dv-hero__coming-up-days {
	font-size: 14px;
	font-weight: 700;
	color: var(--dv-color-primary);
	opacity: 0.6;
}

/* Ad slot */

.dv-ad-slot {
	margin: var(--dv-space-5) 0;
}

.dv-ad-slot__label {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: rgba(32, 35, 32, 0.32);
	text-align: center;
	margin-bottom: var(--dv-space-2);
	font-family: monospace;
}

.dv-ad-slot__placeholder {
	border: 1px dashed rgba(32, 35, 32, 0.18);
	border-radius: var(--dv-radius-control);
	min-height: 250px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: rgba(32, 35, 32, 0.35);
	font-size: 11px;
	font-family: monospace;
	letter-spacing: 0.05em;
}

@media (min-width: 900px) {
	.dv-ad-slot__placeholder {
		min-height: 280px;
	}
}

/* Holiday list */

.dv-holiday-list {
	padding: var(--dv-space-5) 0;
}

.dv-holiday-list__header {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	flex-wrap: wrap;
	gap: var(--dv-space-2);
	margin-bottom: var(--dv-space-4);
}

.dv-holiday-list__header h2 {
	font-family: var(--dv-font-serif);
	font-size: 28px;
	font-weight: 500;
	color: var(--dv-color-primary);
	margin: 0;
}

@media (min-width: 900px) {
	.dv-holiday-list__header h2 {
		font-size: 40px;
	}
}

.dv-holiday-list__stat {
	font-size: 14px;
	font-weight: 600;
	color: rgba(32, 35, 32, 0.6);
}

.dv-holiday-row {
	display: grid;
	grid-template-columns: 80px 1fr;
	gap: var(--dv-space-3);
	align-items: center;
	padding: var(--dv-space-3) 0;
	border-top: 1px solid rgba(32, 35, 32, 0.1);
}

@media (min-width: 640px) {
	.dv-holiday-row {
		grid-template-columns: 140px 1fr auto;
	}
}

.dv-holiday-row__date-short {
	font-family: var(--dv-font-serif);
	font-size: 22px;
	font-weight: 600;
	color: var(--dv-color-primary);
}

.dv-holiday-row__day {
	font-size: 13px;
	color: rgba(32, 35, 32, 0.5);
	margin-top: 2px;
}

.dv-holiday-row__name {
	font-size: 17px;
	font-weight: 600;
	color: var(--dv-color-text);
}

.dv-holiday-row__note {
	font-size: 13px;
	color: rgba(32, 35, 32, 0.6);
	margin-top: 4px;
}

.dv-holiday-row__note--caveat {
	font-style: italic;
}

.dv-holiday-row__badges {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	grid-column: 1 / -1;
}

@media (min-width: 640px) {
	.dv-holiday-row__badges {
		grid-column: auto;
		justify-self: end;
	}
}

.dv-badge {
	font-size: 12px;
	font-weight: 700;
	padding: 6px 12px;
	border-radius: var(--dv-radius-pill);
	white-space: nowrap;
}

.dv-badge--long-weekend {
	background: var(--dv-color-long-weekends);
	color: var(--dv-color-primary);
}

.dv-badge--observed {
	background: var(--dv-color-bg);
	border: 1px solid rgba(32, 35, 32, 0.2);
	color: var(--dv-color-primary);
}

.dv-badge--regional {
	background: var(--dv-color-school-holidays);
	color: var(--dv-color-primary);
}

.dv-badge--sector {
	background: var(--dv-color-bg);
	border: 1px solid rgba(32, 35, 32, 0.2);
	color: var(--dv-color-primary);
}

/* Source block */

.dv-source-block {
	padding: var(--dv-space-5) 0;
	border-top: 1px solid rgba(32, 35, 32, 0.1);
}

.dv-source-block h2 {
	font-family: var(--dv-font-serif);
	font-size: 24px;
	font-weight: 600;
	color: var(--dv-color-primary);
	margin: 0 0 var(--dv-space-2);
}

.dv-source-block__name {
	font-size: 15px;
	font-weight: 600;
	color: var(--dv-color-primary);
	margin: 0;
}

.dv-source-block__checked {
	font-size: 13px;
	color: rgba(32, 35, 32, 0.55);
	margin: 4px 0 0;
}

.dv-source-block__link {
	font-size: 14px;
	font-weight: 600;
	display: inline-block;
	margin-top: var(--dv-space-2);
}

.dv-source-block__disclaimer {
	font-size: 14px;
	color: rgba(32, 35, 32, 0.65);
	line-height: 1.6;
	margin-top: var(--dv-space-3);
	max-width: 640px;
}

/* Unavailable state */

.dv-unavailable {
	padding: var(--dv-space-8) var(--dv-space-3);
	text-align: center;
}

.dv-unavailable h1 {
	font-family: var(--dv-font-serif);
	font-size: 32px;
	font-weight: 500;
	color: var(--dv-color-primary);
	margin: 0 0 var(--dv-space-2);
}

/* Title block controls (year switcher + division toggle) */

.dv-title-block__controls {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--dv-space-3);
}

/* Division toggle */

.dv-division-toggle {
	display: inline-flex;
	background: var(--dv-color-surface);
	border: 1px solid rgba(32, 35, 32, 0.15);
	border-radius: var(--dv-radius-pill);
	padding: 3px;
	gap: 2px;
}

.dv-division-toggle__link {
	padding: 7px 14px;
	border-radius: var(--dv-radius-pill);
	font-size: 13px;
	font-weight: 600;
	color: rgba(32, 35, 32, 0.6);
}

.dv-division-toggle__link.is-active {
	background: var(--dv-color-primary);
	color: var(--dv-color-surface);
}

/* School-holidays hero variant */

.dv-hero__main--school-holidays {
	background: var(--dv-color-school-holidays);
}

/* Term list */

.dv-term-list {
	padding: var(--dv-space-5) 0 0;
}

.dv-term-list h2 {
	font-family: var(--dv-font-serif);
	font-size: 28px;
	font-weight: 500;
	color: var(--dv-color-primary);
	margin: 0 0 var(--dv-space-3);
}

@media (min-width: 900px) {
	.dv-term-list h2 {
		font-size: 36px;
	}
}

.dv-term-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--dv-space-3);
	padding: var(--dv-space-3) var(--dv-space-3);
	border-radius: var(--dv-radius-control);
	border: 1px solid rgba(32, 35, 32, 0.1);
	margin-bottom: var(--dv-space-2);
}

.dv-term-row.is-current {
	border-color: var(--dv-color-primary);
	background: rgba(23, 63, 53, 0.04);
}

.dv-term-row__number {
	font-family: var(--dv-font-serif);
	font-size: 17px;
	font-weight: 600;
	color: var(--dv-color-primary);
	min-width: 90px;
}

.dv-term-row__dates {
	font-size: 15px;
	color: var(--dv-color-text);
	flex: 1;
}

.dv-badge--current {
	background: var(--dv-color-accent);
	color: var(--dv-color-primary);
}

/* Footer */

.dv-footer {
	background: var(--dv-color-primary);
	color: var(--dv-color-surface);
	padding: var(--dv-space-8) var(--dv-space-3) var(--dv-space-5);
	margin-top: var(--dv-space-6);
}

@media (min-width: 900px) {
	.dv-footer {
		padding: 96px var(--dv-space-7) var(--dv-space-6);
	}
}

.dv-footer__statement {
	font-family: var(--dv-font-serif);
	font-size: 32px;
	font-weight: 500;
	margin-bottom: var(--dv-space-6);
	max-width: 600px;
}

@media (min-width: 900px) {
	.dv-footer__statement {
		font-size: 48px;
	}
}

.dv-footer__columns {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--dv-space-4);
	margin-bottom: var(--dv-space-6);
}

@media (min-width: 900px) {
	.dv-footer__columns {
		grid-template-columns: repeat(4, 1fr);
		gap: var(--dv-space-5);
	}
}

.dv-footer__column-heading {
	font-size: 13px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	opacity: 0.6;
	margin-bottom: var(--dv-space-3);
}

.dv-footer__column-item {
	font-size: 15px;
	margin-bottom: var(--dv-space-2);
	opacity: 0.9;
}

/* M8 Part 1.5: real <a> links added to the footer — the site-wide `a`
   rule sets link text to var(--dv-color-primary), which is also the
   footer's own background, so links there must explicitly use the
   surrounding light text color instead or they'd be invisible. */
.dv-footer a,
.dv-footer__legal-links a {
	color: inherit;
	text-decoration: underline;
	text-decoration-color: rgba(254, 253, 249, 0.4);
}

.dv-footer a:hover,
.dv-footer__legal-links a:hover {
	text-decoration-color: currentColor;
}

.dv-footer__bottom {
	border-top: 1px solid rgba(254, 253, 249, 0.15);
	padding-top: var(--dv-space-3);
	display: flex;
	flex-direction: column;
	gap: var(--dv-space-2);
	font-size: 13px;
	opacity: 0.6;
}

@media (min-width: 900px) {
	.dv-footer__bottom {
		flex-direction: row;
		justify-content: space-between;
	}
}

/* Long weekends (M6.5) */

.dv-long-weekend-card {
	background: var(--dv-color-surface);
	border-radius: 12px;
	border-left: 4px solid var(--dv-color-long-weekends);
	padding: var(--dv-space-3) var(--dv-space-4);
	margin-bottom: var(--dv-space-3);
}

.dv-long-weekend-card.is-past {
	opacity: 0.6;
}

.dv-long-weekend-card__dates {
	font-family: var(--dv-font-serif);
	font-size: 20px;
	font-weight: 500;
	color: var(--dv-color-primary);
}

.dv-long-weekend-card__length {
	font-size: 14px;
	opacity: 0.75;
	margin-top: 2px;
}

.dv-long-weekend-card__holiday {
	font-size: 15px;
	margin-top: var(--dv-space-1);
}

.dv-long-weekend-card__days-away {
	display: inline-block;
	margin-top: var(--dv-space-1);
	font-size: 13px;
	color: var(--dv-color-emphasis);
}

.dv-long-weekend-card__extension {
	margin-top: var(--dv-space-2);
	font-size: 14px;
	padding-top: var(--dv-space-2);
	border-top: 1px solid rgba(32, 35, 32, 0.08);
}

.dv-long-weekend-card__extension a {
	margin-left: var(--dv-space-1);
}

/* Related links block */

.dv-related-links {
	margin-top: var(--dv-space-6);
	padding-top: var(--dv-space-4);
	border-top: 1px solid rgba(32, 35, 32, 0.1);
}

.dv-related-links h2 {
	font-family: var(--dv-font-serif);
	font-size: 18px;
	font-weight: 500;
	margin: 0 0 var(--dv-space-2);
}

.dv-related-links ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: var(--dv-space-2) var(--dv-space-4);
}

.dv-related-links a {
	font-size: 14px;
	color: var(--dv-color-primary);
}

.dv-footer__legal-links {
	display: flex;
	gap: var(--dv-space-4);
}
.dv-ad-slot {
	display: none !important;
}
