.international-calendar,
.international-calendar * {
	box-sizing: border-box;
}

.international-calendar {
	--calendar-accent: #176b55;
	--calendar-accent-dark: #0f4e3e;
	--calendar-border: #dbe4e1;
	--calendar-muted: #60706b;
	--calendar-soft: #f3f8f6;
	width: min(100% - 3rem, 90rem);
	margin: 1.5rem auto 3rem;
	color: #17221f;
	font-size: 1rem;
}

/* Header and premium surface */
.international-calendar {
	--calendar-canvas: #f7faf9;
	--calendar-holiday: #b85c45;
	padding: clamp(1rem, 2.5vw, 2.25rem);
	border: 1px solid #e7eeeb;
	border-radius: 1.25rem;
	background: var(--calendar-canvas);
}

.calendar-hero {
	max-width: 60rem;
	margin-bottom: 1.4rem;
}

.calendar-hero h1 {
	font-size: clamp(2rem, 4vw, 3rem);
	font-weight: 780;
}

/* Next holiday */
.calendar-next-holiday {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	margin: 1.5rem 0;
	padding: clamp(1.1rem, 2.5vw, 1.6rem);
	border: 1px solid #d8e8e2;
	border-inline-start: .3rem solid var(--calendar-accent);
	border-radius: .9rem;
	background: #fff;
	box-shadow: 0 .5rem 1.5rem rgb(20 60 48 / 6%);
}

.calendar-next-holiday__label {
	margin: 0 0 .3rem;
	color: var(--calendar-muted);
	font-size: .86rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .05em;
}

.calendar-next-holiday strong,
.calendar-next-holiday time {
	display: block;
}

.calendar-next-holiday strong {
	font-size: clamp(1.15rem, 2vw, 1.5rem);
}

.calendar-next-holiday time {
	margin-top: .2rem;
	color: var(--calendar-muted);
}

.calendar-next-holiday__countdown,
.calendar-holiday-badge {
	display: inline-flex;
	align-items: center;
	min-height: 1.8rem;
	padding: .28rem .65rem;
	border-radius: 999px;
	background: #e5f3ee;
	color: var(--calendar-accent-dark);
	font-size: .78rem;
	font-weight: 800;
	white-space: nowrap;
}

/* Statistics */
.calendar-stats {
	margin: 1.5rem 0;
}

.calendar-stats h2 {
	margin: 0 0 .8rem;
	font-size: 1.25rem;
}

.calendar-stats__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: .8rem;
}

.calendar-stat {
	display: flex;
	min-height: 7rem;
	padding: 1rem;
	border: 1px solid var(--calendar-border);
	border-radius: .8rem;
	background: #fff;
	flex-direction: column;
	justify-content: center;
	box-shadow: 0 .2rem .8rem rgb(20 60 48 / 4%);
}

.calendar-stat strong {
	font-size: clamp(1.7rem, 3vw, 2.3rem);
	line-height: 1;
}

.calendar-stat span {
	margin-top: .45rem;
	color: var(--calendar-muted);
}

.calendar-stat--unavailable {
	grid-column: span 1;
}

/* Controls and actions */
.calendar-controls {
	padding: clamp(1rem, 2vw, 1.4rem);
}

.calendar-controls select,
.calendar-print-button {
	min-height: 3rem;
	font: inherit;
}

.calendar-print-actions {
	display: flex;
	align-items: center;
	gap: .8rem;
	margin-top: 1rem;
}

.calendar-print-actions span {
	color: var(--calendar-muted);
	font-size: .82rem;
}

.calendar-print-button {
	padding: .55rem 1rem;
	border: 1px solid var(--calendar-accent);
	border-radius: .48rem;
	background: #fff;
	color: var(--calendar-accent-dark);
	font-weight: 750;
	cursor: pointer;
}

.calendar-print-button:hover {
	background: var(--calendar-soft);
}

.calendar-ics-button { display:inline-flex;min-height:2.75rem;align-items:center;justify-content:center;padding:.65rem 1rem;border:1px solid var(--ic-primary);border-radius:.55rem;background:#fff;color:var(--ic-primary);font-weight:800;text-decoration:none; }
.calendar-ics-button:hover { background:var(--calendar-soft);color:var(--ic-primary-dark); }

.calendar-display-options {
	padding: .9rem 1.15rem 1rem;
	background: #fff;
}

/* Month cards and days */
.calendar-year-grid {
	gap: 1.15rem;
}

.calendar-month {
	border-color: #e1e9e6;
	overflow: visible;
	box-shadow: 0 .35rem 1.2rem rgb(24 55 45 / 5%);
}

.calendar-month h2 {
	padding: .95rem;
	background: #fff;
	color: #183e34;
	border-bottom: 1px solid #e8efed;
	font-size: 1.05rem;
	border-radius: .75rem .75rem 0 0;
}

.calendar-month__grid {
	padding: .75rem;
}

.calendar-day.is-holiday {
	background: #fff5f1;
	color: #743a2c;
	font-weight: 700;
}

.calendar-day.is-holiday::after {
	background: var(--calendar-holiday);
}

.calendar-day.is-today {
	background: var(--calendar-accent);
	color: #fff;
}

/* Tooltip */
.calendar-day__holiday-name {
	padding: .65rem .75rem;
	border: 1px solid rgb(255 255 255 / 12%);
	border-radius: .5rem;
	box-shadow: 0 .65rem 1.8rem rgb(0 0 0 / 22%);
	line-height: 1.4;
}

/* Holidays and internal links */
.calendar-holidays__intro {
	margin: -.45rem 0 1rem;
	color: var(--calendar-muted);
	font-size: .9rem;
}

.calendar-holidays tbody tr:hover {
	background: #f8fbfa;
}

.calendar-holidays-link,
.calendar-primary-link {
	margin: 1rem 0 1.75rem;
}

.calendar-holidays-link a,
.calendar-primary-link a {
	display: inline-flex;
	min-height: 2.75rem;
	align-items: center;
	padding: .55rem .85rem;
	border-radius: .45rem;
	background: var(--calendar-accent-dark);
	color: #fff;
	font-weight: 750;
	text-decoration: none;
}

.calendar-empty-state {
	padding: 1rem;
	border: 1px solid var(--calendar-border);
	border-radius: .7rem;
	background: #fff;
	color: var(--calendar-muted);
}

.calendar-breadcrumb ol {
	display: flex;
	flex-wrap: wrap;
	gap: .4rem;
	margin: 0 0 1.5rem;
	padding: 0;
	list-style: none;
	font-size: .9rem;
	color: var(--calendar-muted);
}

.calendar-breadcrumb li:not(:last-child)::after {
	content: "/";
	margin-inline-start: .4rem;
	color: #9ba9a5;
}

.calendar-breadcrumb a,
.calendar-related a {
	color: var(--calendar-accent-dark);
}

.calendar-hero {
	max-width: 52rem;
	margin-bottom: 1.75rem;
}

.calendar-hero__eyebrow {
	margin: 0 0 .35rem;
	font-weight: 700;
	color: var(--calendar-accent);
}

.calendar-hero h1 {
	margin: 0;
	font-size: clamp(2rem, 5vw, 3.35rem);
	line-height: 1.08;
	letter-spacing: -.035em;
}

.calendar-hero > p:last-child {
	margin: .8rem 0 0;
	color: var(--calendar-muted);
	font-size: clamp(1rem, 2vw, 1.15rem);
}

.calendar-controls,
.calendar-display-options,
.calendar-related,
.calendar-holidays {
	margin: 1.5rem 0;
	padding: 1.25rem;
	border: 1px solid var(--calendar-border);
	border-radius: .85rem;
	background: #fff;
	box-shadow: 0 .2rem 1rem rgb(20 60 48 / 5%);
}

.calendar-controls h2,
.calendar-related h2,
.calendar-holidays h2 {
	margin: 0 0 1rem;
	font-size: 1.25rem;
}

.calendar-controls__selectors {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
}

.calendar-controls__selectors label > span {
	display: block;
	margin-bottom: .35rem;
	font-size: .86rem;
	font-weight: 700;
}

.calendar-controls select {
	width: 100%;
	min-height: 2.85rem;
	padding: .55rem 2.2rem .55rem .75rem;
	border: 1px solid #aebdb8;
	border-radius: .45rem;
	background-color: #fff;
	font: inherit;
}

.calendar-navigation {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 1rem;
	margin-top: 1.25rem;
}

.calendar-navigation a {
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	padding: .55rem .85rem;
	border-radius: .45rem;
	background: var(--calendar-accent);
	color: #fff;
	text-decoration: none;
}

.calendar-navigation a:last-child {
	justify-self: end;
}

.calendar-display-options {
	display: flex;
	flex-wrap: wrap;
	gap: .8rem 1.4rem;
}

.calendar-display-options legend {
	padding: 0 .35rem;
	font-weight: 800;
}

.calendar-display-options label {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	cursor: pointer;
}

.calendar-display-options .is-disabled {
	opacity: .55;
	cursor: not-allowed;
}

.calendar-year-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1rem;
	margin: 1.5rem 0;
}

.calendar-month {
	min-width: 0;
	overflow: hidden;
	border: 1px solid var(--calendar-border);
	border-radius: .75rem;
	background: #fff;
	box-shadow: 0 .15rem .7rem rgb(20 60 48 / 5%);
}

.calendar-month h2 {
	margin: 0;
	padding: .8rem;
	background: var(--calendar-accent-dark);
	color: #fff;
	font-size: 1rem;
	text-align: center;
	text-transform: uppercase;
	letter-spacing: .06em;
}

.calendar-month__grid {
	display: grid;
	grid-template-columns: 2rem repeat(7, minmax(0, 1fr));
	padding: .55rem;
	font-variant-numeric: tabular-nums;
}

.calendar-weekday,
.calendar-week-number,
.calendar-day {
	display: grid;
	place-items: center;
	min-width: 0;
	min-height: 2rem;
	font-size: .78rem;
}

.calendar-weekday {
	font-weight: 800;
	color: #45534f;
}

.calendar-week-number {
	border-inline-end: 1px solid #edf1ef;
	color: #8a9894;
	font-size: .68rem;
}

.calendar-day {
	position: relative;
	border-radius: 50%;
	color: inherit;
	text-decoration: none;
}

.calendar-day.is-weekend {
	background: var(--calendar-soft);
	color: var(--calendar-accent-dark);
}

.calendar-day.is-today {
	background: var(--calendar-accent);
	color: #fff;
	font-weight: 800;
	box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--calendar-accent);
}

.calendar-day.is-holiday::after {
	content: "";
	position: absolute;
	right: 20%;
	bottom: .18rem;
	width: .28rem;
	height: .28rem;
	border-radius: 50%;
	background: #c2413b;
}

.calendar-day__holiday-name {
	position: absolute;
	z-index: 3;
	left: 50%;
	bottom: calc(100% + .4rem);
	width: max-content;
	max-width: 13rem;
	padding: .45rem .6rem;
	border-radius: .35rem;
	background: #17221f;
	color: #fff;
	font-size: .75rem;
	opacity: 0;
	pointer-events: none;
	transform: translate(-50%, .25rem);
	transition: opacity .15s, transform .15s;
}

.calendar-day__holiday-name strong,
.calendar-day__holiday-name span {
	display: block;
}

.calendar-day__holiday-name strong {
	margin-bottom: .2rem;
}

.calendar-day.is-holiday:hover .calendar-day__holiday-name,
.calendar-day.is-holiday:focus .calendar-day__holiday-name,
.calendar-day.is-holiday.is-tooltip-open .calendar-day__holiday-name {
	opacity: 1;
	transform: translate(-50%, 0);
}

.international-calendar.hide-week-numbers .calendar-week-number {
	display: none;
}

.international-calendar.hide-week-numbers .calendar-month__grid {
	grid-template-columns: repeat(7, minmax(0, 1fr));
}

.international-calendar.hide-weekends .calendar-day.is-weekend {
	background: transparent;
	color: inherit;
}

.international-calendar.hide-holidays .calendar-day.is-holiday::after,
.international-calendar.hide-holidays .calendar-day__holiday-name,
.international-calendar.hide-holidays .calendar-holidays {
	display: none;
}

.weekday-short {
	display: none;
}

.calendar-related__links {
	display: flex;
	flex-wrap: wrap;
	gap: .65rem;
}

.calendar-related__links a {
	padding: .55rem .75rem;
	border-radius: .4rem;
	background: var(--calendar-soft);
	font-weight: 600;
	text-decoration: none;
}

.calendar-holidays__table-wrap {
	overflow-x: auto;
}

.calendar-holidays table {
	width: 100%;
	border-collapse: collapse;
}

.calendar-holidays th,
.calendar-holidays td {
	padding: .65rem;
	border-bottom: 1px solid var(--calendar-border);
	text-align: start;
}

.international-calendar a:focus-visible,
.international-calendar select:focus-visible,
.international-calendar input:focus-visible,
.calendar-day:focus-visible {
	outline: 3px solid #e6a700;
	outline-offset: 2px;
}

@media (max-width: 75rem) {
	.calendar-year-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.calendar-stats__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 40rem) {
	.international-calendar {
		width: min(100% - 1rem, 32rem);
		padding: .8rem;
		border-radius: .85rem;
	}

	.calendar-year-grid,
	.calendar-controls__selectors {
		grid-template-columns: 1fr;
	}

	.calendar-navigation {
		grid-template-columns: 1fr 1fr;
	}

	.calendar-navigation strong {
		display: none;
	}

	.calendar-navigation a {
		font-size: .88rem;
	}

	.weekday-long {
		display: none;
	}

	.weekday-short {
		display: inline;
	}

	.calendar-month__grid {
		padding: .45rem;
	}

	.calendar-weekday,
	.calendar-week-number,
	.calendar-day {
		min-height: 2.25rem;
	}

	.calendar-next-holiday {
		align-items: flex-start;
		flex-direction: column;
	}

	.calendar-stats__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.calendar-stat {
		min-height: 6rem;
	}

	.calendar-print-actions {
		align-items: flex-start;
		flex-direction: column;
	}

	.calendar-holidays table,
	.calendar-holidays tbody,
	.calendar-holidays tr,
	.calendar-holidays td {
		display: block;
		width: 100%;
	}

	.calendar-holidays thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
	}

	.calendar-holidays tr {
		margin-bottom: .65rem;
		padding: .7rem;
		border: 1px solid var(--calendar-border);
		border-radius: .55rem;
	}

	.calendar-holidays td {
		padding: .2rem;
		border: 0;
	}

	.calendar-day.is-tooltip-open .calendar-day__holiday-name {
		position: fixed;
		z-index: 9999;
		inset-inline: 1rem;
		bottom: 1rem;
		width: auto;
		max-width: none;
		transform: none;
	}
}

/* Print */
@page {
	size: landscape;
	margin: 8mm;
}

@media print {
	.calendar-estimated-disclaimer { break-inside: avoid; }
	body > header,
	body > footer,
	.site-header,
	.site-footer,
	.calendar-breadcrumb,
	.calendar-controls,
	.calendar-display-options,
	.calendar-next-holiday,
	.calendar-stats,
	.calendar-holidays,
	.calendar-related,
	.calendar-holidays-link,
	.calendar-primary-link {
		display: none;
	}
	.calendar-day__holiday-name { display:none !important; }

	.international-calendar {
		width: 100%;
		margin: 0;
		padding: 0;
		border: 0;
		background: #fff;
		box-shadow: none;
	}

	.calendar-hero {
		margin-bottom: 5mm;
	}

	.international-holidays-page .calendar-holidays {
		display: block;
	}

	.calendar-hero h1 {
		font-size: 20pt;
	}

	.calendar-year-grid {
		display: grid;
		grid-template-columns: repeat(4, 1fr);
		gap: 3mm;
	}

	.calendar-month {
		break-inside: avoid;
		page-break-inside: avoid;
		border: 1px solid #777;
		box-shadow: none;
	}
	.calendar-day.is-holiday { border:1px solid #222;font-weight:800; }
	.calendar-day.is-estimated { outline:1px dashed #222;outline-offset:-2px; }

	.calendar-weekday,
	.calendar-week-number,
	.calendar-day {
		min-height: 5mm;
		font-size: 7pt;
	}

	a::after {
		content: none;
	}
}

.ca-tool { max-width: 64rem; margin-inline: auto; }
.ca-tool__header { margin-block-end: 1.5rem; }
.ca-tool__header h1 { margin-block: .35rem .75rem; font-size: clamp(2rem, 5vw, 3.25rem); }
.ca-tool-form { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; padding: 1.25rem; border: 1px solid var(--ic-border); border-radius: 1rem; background: #fff; box-shadow: var(--ic-shadow); }
.ca-tool-form label { display: grid; gap: .4rem; font-weight: 700; }
.ca-tool-form select, .ca-tool-form input { width: 100%; min-width: 0; min-height: 2.8rem; padding-inline: .75rem; border: 1px solid var(--ic-border); border-radius: .55rem; background: #fff; color: inherit; }
.ca-tool-form button { min-height: 2.8rem; padding-inline: 1.25rem; border: 0; border-radius: .55rem; background: var(--ic-primary); color: #fff; font-weight: 800; cursor: pointer; }
.ca-tool-form__note { grid-column: 1 / -1; margin: 0; color: var(--ic-muted); font-size: .9rem; }
.ca-tool-error { margin-block: 1rem; padding: 1rem; border-inline-start: .3rem solid #b42318; border-radius: .5rem; background: #fef3f2; color: #7a271a; }
.ca-tool-result { margin-block-start: 1.5rem; }
.ca-result-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .8rem; }
.ca-result-grid > div { display: grid; gap: .25rem; padding: 1.15rem; border: 1px solid var(--ic-border); border-radius: .8rem; background: #fff; box-shadow: var(--ic-shadow); }
.ca-result-grid strong { color: var(--ic-primary); font-size: clamp(1.8rem, 4vw, 2.6rem); }
.ca-result-grid span { color: var(--ic-muted); }
.ca-tool-holidays { margin-block-start: 1.25rem; padding: 1.2rem; border-radius: .8rem; background: var(--calendar-soft); }
.ca-tool-holidays ul { margin-block-end: 0; padding-inline-start: 1.25rem; }
.ca-tool-card { display: grid; gap: .4rem; max-width: 32rem; padding: 1.25rem; border: 1px solid var(--ic-border); border-radius: .85rem; background: #fff; color: inherit; box-shadow: var(--ic-shadow); text-decoration: none; }
.ca-tool-card span { color: var(--ic-muted); }
.ca-tool-card:hover, .ca-tool-card:focus-visible { border-color: var(--ic-primary); transform: translateY(-1px); }

@media (max-width: 48rem) {
	.ca-tool-form, .ca-result-grid { grid-template-columns: 1fr; }
	.ca-tool-form button { width: 100%; }
}

.ca-legal { max-width: 52rem; margin-inline: auto; }
.ca-legal header { margin-block-end: 1.5rem; }
.ca-legal h1 { margin-block: .35rem .75rem; font-size: clamp(2rem, 5vw, 3.25rem); }
.ca-legal section { padding: clamp(1rem, 3vw, 2rem); border: 1px solid var(--ic-border); border-radius: 1rem; background: #fff; box-shadow: var(--ic-shadow); }
.ca-legal section p { max-width: 72ch; }
.ca-ad-slot { width: 100%; min-height: 5rem; margin-block: 1.25rem; overflow: hidden; text-align: center; }

.calendar-day.is-estimated { outline: 1px dashed #b7791f; outline-offset: -3px; }
.calendar-day.is-estimated::after { background: #d69e2e; box-shadow: 0 0 0 2px #fff; }
.calendar-status-badge { display: inline-flex; margin-inline-start: .35rem; padding: .12rem .4rem; border-radius: 999px; font-size: .7rem; font-weight: 700; line-height: 1.35; vertical-align: middle; }
.calendar-status-badge--estimated { border: 1px dashed #b7791f; background: #fffaf0; color: #8a5a12; }
.calendar-status-badge--confirmed { background: #e6fffa; color: #176b61; }
.calendar-status-badge--official { background: #e9f2ff; color: #174f91; }
.calendar-day__holiday-name small { display: block; max-width: 16rem; margin-block-start: .25rem; color: var(--ic-muted); font-weight: 400; line-height: 1.35; }
.calendar-estimated-disclaimer { margin-block: .85rem 0; padding: .75rem 1rem; border-inline-start: 3px solid #d69e2e; background: #fffaf0; color: #6b4c16; font-size: .88rem; }

/* CalendarAtlas homepage */
.ic-site-brand__mark { display:inline-grid;place-items:center;width:1.7rem;height:1.7rem;border-radius:.45rem;background:var(--ic-primary);color:#fff;font-size:1rem; }
.ca-home { display:grid;gap:clamp(2rem,5vw,4.5rem); }
.ca-hero { display:grid;grid-template-columns:minmax(0,1.15fr) minmax(18rem,.85fr);align-items:center;gap:48px;padding:48px;border:1px solid var(--ca-border);border-radius:16px;background:var(--ca-ivory);box-shadow:0 8px 24px rgb(23 61 45 / 5%); }
.ca-kicker,.ca-section-label { margin:0 0 .5rem;color:var(--ic-primary);font-size:.78rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase; }
.ca-hero h1 { max-width:15ch;margin:.2rem 0 16px;font-family:Georgia,ui-serif,serif;font-size:clamp(2.35rem,5vw,4.25rem);font-weight:500;line-height:1.04;letter-spacing:-.035em; }
.ca-hero__copy>p:last-child { max-width:40rem;margin:0;color:var(--ca-muted);font-size:clamp(1rem,1.6vw,1.15rem);line-height:1.65; }
.ca-finder { display:grid;grid-template-columns:minmax(0,2fr) minmax(120px,.75fr);gap:16px;padding:24px;border:1px solid var(--ca-border);border-radius:16px;background:var(--ca-surface);box-shadow:0 8px 24px rgb(23 61 45 / 6%); }
.ca-finder label { display:grid;gap:.35rem;color:var(--ic-muted);font-size:.8rem;font-weight:700; }
.ca-finder select { width:100%;min-height:50px;padding-inline:12px;border:1px solid var(--ca-border);border-radius:12px;background:#fff;color:var(--ca-text);font:inherit; }
.ca-finder button,.ca-button { display:inline-flex;min-height:52px;align-items:center;justify-content:center;padding:12px 16px;border:0;border-radius:12px;background:var(--ca-forest);color:#fff;font-weight:800;text-decoration:none;cursor:pointer; }
.ca-finder button { grid-column:1/-1; }
.ca-finder button:hover,.ca-button:hover { background:var(--ca-forest-hover);color:#fff; }
.ca-button--secondary { background:#fff;color:var(--ic-primary);border:1px solid var(--ic-primary); }
.ca-your-calendar { display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:clamp(1.25rem,3vw,2rem);border:1px solid var(--ic-border);border-radius:1rem;background:#fff;box-shadow:var(--ic-shadow); }
.ca-your-calendar h2 { margin:.1rem 0 .5rem;font-size:clamp(1.35rem,2.5vw,2rem); }
.ca-your-calendar p:last-child { margin:0;color:var(--ic-muted); }
.ca-home-section { display:grid;gap:1.25rem; }
.ca-section-heading h2 { margin:0;font-size:clamp(1.55rem,3vw,2.25rem); }
.ca-section-heading p { margin:.4rem 0 0;color:var(--ic-muted); }
.ca-country-grid { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem; }
.ca-country-card { display:flex;align-items:center;gap:.7rem;min-height:4.5rem;padding:1rem;border:1px solid var(--ic-border);border-radius:.85rem;background:#fff;color:var(--ic-text);text-decoration:none;box-shadow:0 5px 18px rgba(18,69,47,.06); }
.ca-country-card:hover { border-color:var(--ic-primary);transform:translateY(-1px); }
.ca-country-card__flag { width:34px;height:22px;flex:0 0 auto;object-fit:cover;border-radius:3px; }
.ca-country-card__name { min-width:0; }
.ca-home-section--soft { padding:clamp(1.25rem,3vw,2rem);border-radius:1rem;background:#f4f8f6; }
.ca-holiday-links { display:flex;flex-wrap:wrap;gap:.7rem; }
.ca-holiday-links a { display:inline-flex;align-items:center;gap:10px;padding:.7rem .9rem;border:1px solid var(--ic-border);border-radius:999px;background:#fff;color:var(--ic-text);text-decoration:none;font-weight:700; }
.ca-holiday-link__flag { width:34px;height:22px;flex:0 0 auto;object-fit:cover;border-radius:3px; }
.ca-home :focus-visible { outline:3px solid color-mix(in srgb,var(--ic-primary) 45%,white);outline-offset:2px; }
@media(max-width:70rem){.ca-country-grid{grid-template-columns:repeat(3,minmax(0,1fr));}.ca-hero{grid-template-columns:1fr;}}
@media(max-width:48rem){.ca-home{gap:2.25rem}.ca-hero{padding:1.4rem}.ca-hero h1{font-size:clamp(2.1rem,11vw,3.25rem)}.ca-finder{grid-template-columns:1fr}.ca-finder button{grid-column:auto}.ca-country-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ca-your-calendar{align-items:flex-start;flex-direction:column}.ca-button{width:100%}}
@media(max-width:25rem){.ca-country-grid{grid-template-columns:1fr}.ca-finder{padding:.85rem}}

/* V0.4.1 standalone public shell */
:root {
	--ca-forest: #173d2d;
	--ca-forest-hover: #22533f;
	--ca-ivory: #fcfaf6;
	--ca-warm: #f4eee5;
	--ca-surface: #fff;
	--ca-gold: #a78138;
	--ca-text: #20241f;
	--ca-muted: #636861;
	--ca-border: rgb(23 61 45 / 12%);
	--ic-primary: var(--ca-forest);
	--ic-primary-dark: var(--ca-forest-hover);
	--ic-bg: var(--ca-ivory);
	--ic-surface: var(--ca-surface);
	--ic-text: var(--ca-text);
	--ic-muted: var(--ca-muted);
	--ic-border: var(--ca-border);
	--ic-holiday: var(--ca-gold);
	--ic-shadow: 0 6px 18px rgb(23 61 45 / 5%);
}

body.international-calendar-public-page {
	margin: 0;
	background: var(--ic-bg);
	color: var(--ic-text);
	font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
	line-height: 1.55;
}

.ic-screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.ic-skip-link:focus {
	z-index: 10000;
	top: .75rem;
	left: .75rem;
	width: auto;
	height: auto;
	padding: .65rem 1rem;
	clip: auto;
	background: #fff;
}

.ic-site-header,
.ic-site-footer {
	background: var(--ca-ivory);
	border-color: var(--ic-border);
	border-style: solid;
	border-width: 0 0 1px;
}

.ic-site-header__inner,
.ic-site-footer__inner,
.ic-public-main {
	width: min(100% - 48px, 80rem);
	margin-inline: auto;
}

.ic-site-header__inner {
	display: grid;
	min-height: 64px;
	align-items: center;
	gap: 28px;
	grid-template-columns: auto 1fr auto;
}

.ic-site-brand {
	display: flex;
	align-items: center;
	color: var(--ic-primary-dark);
	text-decoration: none;
}
.ic-site-brand__logo { display: block; width: clamp(13.5rem, 20vw, 16rem); max-width: 100%; height: auto; }

.ic-site-nav,
.ic-site-footer nav {
	display: flex;
	gap: 28px;
}
.ic-site-nav { align-items: center; justify-self: center; }
.ic-site-nav a { font-size: .82rem; white-space: nowrap; }
.ic-site-nav a::after { margin-inline-start: 5px; color: var(--ca-muted); font-size: .65em; content: "⌄"; }

.ic-language-switcher { display: flex; align-items: center; gap: 2px; justify-self: end; padding: 4px; border: 1px solid var(--ca-border); border-radius: 8px; background: var(--ca-surface); box-shadow: 0 2px 8px rgb(23 61 45 / 4%); }
.ic-language-switcher::before { margin-inline: 5px 2px; content: "◉"; font-size: .75rem; }
.ic-language-switcher a { min-width: 2rem; padding: 5px 7px; border-radius: 6px; color: var(--ic-muted); font-size: .75rem; font-weight: 750; text-align: center; text-decoration: none; }
.ic-language-switcher a[aria-current="page"] { background: var(--ic-primary); color: #fff; }
[dir="rtl"] .international-calendar, [dir="rtl"] .ic-site-header, [dir="rtl"] .ic-site-footer { direction: rtl; text-align: start; }
[dir="rtl"] .ic-arrow { display: inline-block; transform: scaleX(-1); }
[dir="rtl"] .calendar-day__holiday-name { direction: rtl; text-align: start; }
[dir="rtl"] .calendar-holidays th, [dir="rtl"] .calendar-holidays td { text-align: start; }

.ic-site-nav a,
.ic-site-footer a {
	color: var(--ic-text);
	font-weight: 650;
	text-decoration: none;
}

.ic-site-nav a[aria-current="page"] {
	color: var(--ic-primary);
}

.ic-public-main {
	padding-block: 1.75rem 3rem;
}

.ic-site-footer {
	border-width: 1px 0 0;
	background: var(--ca-forest);
}

.ic-site-footer__inner {
	display: flex;
	min-height: 4.5rem;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	color: rgb(255 255 255 / 72%);
	font-size: .9rem;
}
.ic-site-footer a { color: rgb(255 255 255 / 88%); }

body.international-calendar-public-page .international-calendar {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

.calendar-breadcrumb ol { margin-bottom: 1rem; }
.calendar-hero { margin-bottom: 1.25rem; }
.calendar-hero h1 { color: var(--ca-forest); font-family: Georgia, ui-serif, serif; font-size: clamp(2rem, 4vw, 3.15rem); font-weight: 500; }

.calendar-overview {
	display: grid;
	grid-template-columns: minmax(18rem, .85fr) minmax(0, 1.5fr);
	gap: 1rem;
	margin: 1.25rem 0;
}

.calendar-overview .calendar-next-holiday,
.calendar-overview .calendar-stats {
	margin: 0;
}

.calendar-overview .calendar-next-holiday { height: 100%; }
.calendar-stats {
	padding: 16px;
	border: 1px solid var(--ic-border);
	border-radius: 12px;
	background: var(--ca-surface);
	box-shadow: var(--ic-shadow);
}
.calendar-stats h2 { margin-bottom: .65rem; font-size: 1rem; }
.calendar-stat { min-height: 5.25rem; padding: 12px; border: 1px solid var(--ca-border); border-radius: 12px; background: var(--ca-surface); box-shadow: 0 3px 10px rgb(23 61 45 / 4%); }
.calendar-stat strong { color: var(--ca-forest); font-family: Georgia, ui-serif, serif; font-size: clamp(1.6rem, 2.3vw, 2.1rem); font-weight: 500; }
.calendar-stat span { color: var(--ca-muted); font-size: .78rem; }

.calendar-controls { padding: 1rem; }
.calendar-controls__selectors { grid-template-columns: repeat(2, minmax(10rem, 1fr)); }
.calendar-controls select { min-height: 2.65rem; }
.calendar-navigation { margin-top: .8rem; }
.calendar-navigation a { min-height: 2.5rem; }
.calendar-print-actions { justify-content: flex-end; margin-top: .75rem; }
.calendar-print-button { min-height: 2.5rem; }
.calendar-display-options { margin-block: 1rem; padding: .75rem 1rem; }

.calendar-legend {
	display: flex;
	flex-wrap: wrap;
	gap: .65rem 1.25rem;
	margin: 1rem 0;
	color: var(--ic-muted);
	font-size: .86rem;
}
.calendar-legend span { display: inline-flex; align-items: center; gap: .4rem; }
.calendar-legend i { width: .72rem; height: .72rem; border-radius: 50%; }
.calendar-legend__today { background: var(--ic-primary); }
.calendar-legend__holiday { background: var(--ic-holiday); }
.calendar-legend__weekend { background: var(--calendar-soft); border: 1px solid var(--ic-border); }

.calendar-year-grid { gap: 24px; margin-top: 24px; }
.calendar-month { padding: 18px; border: 1px solid var(--ca-border); border-radius: 14px; background: var(--ca-surface); box-shadow: 0 4px 14px rgb(23 61 45 / 4%); }
.calendar-month h2 { margin: 0 0 12px; padding: 0; background: transparent; color: var(--ca-forest); font-family: Georgia, ui-serif, serif; font-size: 20px; font-weight: 500; }
.calendar-month__grid { grid-template-columns: 2.15rem repeat(7, minmax(0, 1fr)); gap: 4px; padding: 0; }
.calendar-weekday, .calendar-week-number, .calendar-day { min-height: 2.35rem; font-size: .86rem; }
.calendar-week-number { font-size: .7rem; }
.calendar-day { border: 1px solid transparent; border-radius: 8px; }
.calendar-day.is-weekend { background: var(--ca-warm); }
.calendar-day.is-holiday { border-color: rgb(167 129 56 / 45%); background: rgb(167 129 56 / 7%); }
.calendar-day.is-holiday::after { width: 5px; height: 5px; background: var(--ca-gold); }
.calendar-day.is-today { border-radius: 50%; background: var(--ca-forest); color: #fff; }
.calendar-day.is-estimated { border: 1px dashed var(--ca-gold); outline: 0; }
.calendar-related__links--countries { display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); }
.calendar-related__links--countries .ca-popular-country-card {
	display: flex;
	align-items: center;
	gap: 14px;
	transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.ca-popular-country-card__flag { width: 34px; height: 22px; flex: 0 0 auto; object-fit: cover; border-radius: 3px; }
.ca-popular-country-card__name { min-width: 0; }
.calendar-related__links--countries .ca-popular-country-card:hover {
	transform: translateY(-2px);
	border-color: rgba(23, 61, 45, .22);
	box-shadow: 0 6px 16px rgb(23 61 45 / 7%);
}
.calendar-holidays { width: 100%; }
.calendar-holidays__table-wrap { border: 1px solid var(--ca-border); border-radius: 12px; overflow: hidden; background: var(--ca-surface); }
.calendar-holidays thead { background: var(--ca-warm); color: var(--ca-forest); }
.calendar-holidays th, .calendar-holidays td { padding: 12px 16px; border-color: var(--ca-border); text-align: start; }
.calendar-holidays tbody tr:hover { background: rgb(23 61 45 / 3%); }

/* Progressive country selector: the native select remains the form source. */
.ca-country-select { position: relative; width: 100%; }
.ca-country-select__native {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	margin: -1px !important;
	padding: 0 !important;
	overflow: hidden !important;
	clip: rect(0 0 0 0) !important;
	clip-path: inset(50%) !important;
	white-space: nowrap !important;
	border: 0 !important;
}
.ca-country-select__trigger,
.ca-country-select__option {
	display: flex;
	align-items: center;
	width: 100%;
	font: inherit;
	text-align: start;
}
.ca-country-select__trigger {
	min-height: 3rem;
	gap: 10px;
	padding-block: .65rem;
	padding-inline: 14px;
	border: 1px solid var(--ca-border);
	border-radius: 10px;
	background: var(--ca-surface);
	color: var(--ca-text);
	cursor: pointer;
}
.ca-country-select__trigger:hover,
.ca-country-select__trigger:focus-visible { border-color: rgb(23 61 45 / 35%); outline: 2px solid rgb(23 61 45 / 12%); outline-offset: 1px; }
.ca-country-select__flag { width: 24px; height: 16px; flex: 0 0 auto; object-fit: cover; border-radius: 2px; box-shadow: 0 0 0 1px rgb(23 61 45 / 12%); }
.ca-country-select__label { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: start; }
.ca-country-select__arrow { width: 8px; height: 8px; margin-inline-start: auto; border-inline-end: 1.5px solid currentColor; border-block-end: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); }
.ca-country-select__menu {
	position: absolute;
	z-index: 50;
	top: calc(100% + 4px);
	inset-inline: 0;
	max-height: 280px;
	overflow-y: auto;
	padding-block: 4px;
	border: 1px solid rgba(23, 61, 45, .12);
	border-radius: 16px;
	background: #fff;
	box-shadow: 0 10px 24px rgb(23 61 45 / 10%);
}
.ca-country-select__menu[hidden] { display: none; }
.ca-country-select .ca-country-select__option { min-height: 44px; gap: 10px; padding-block: 8px; padding-inline: 14px; border: 0; background: #fff; color: #20241f; cursor: pointer; }
.ca-country-select .ca-country-select__option:not([aria-selected="true"]):not(.is-selected):hover,
.ca-country-select .ca-country-select__option:not([aria-selected="true"]):not(.is-selected):focus-visible { background: #f4eee5; color: #173d2d; outline: 0; }
.ca-country-select .ca-country-select__option[aria-selected="true"],
.ca-country-select .ca-country-select__option[aria-selected="true"]:hover,
.ca-country-select .ca-country-select__option[aria-selected="true"]:focus-visible,
.ca-country-select .ca-country-select__option.is-selected,
.ca-country-select .ca-country-select__option.is-selected:hover,
.ca-country-select .ca-country-select__option.is-selected:focus-visible { background: #173d2d; color: #fff; font-weight: 600; }
[dir="rtl"] .ca-country-select { direction: rtl; }

/* Compact calendar controls: presentation only. */
.calendar-controls {
	padding: 24px;
	border: 1px solid rgba(23, 61, 45, .12);
	border-radius: 20px;
	background: #fff;
	box-shadow: 0 8px 24px rgb(23 61 45 / 5%);
}
.calendar-controls__selectors { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.calendar-controls__selectors label > span { margin-bottom: 8px; font-size: 16px; font-weight: 700; }
.calendar-controls select,
.calendar-controls .ca-country-select__trigger { min-height: 60px; }
.calendar-controls .ca-calendar-year-nav {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 24px;
	margin-top: 20px;
}
.calendar-controls .ca-calendar-year-nav a {
	width: auto;
	min-height: 52px;
	padding-inline: 22px;
	border: 0;
	border-radius: 12px;
	background: #1b745e;
	color: #fff;
	font-weight: 600;
	justify-self: start;
}
.calendar-controls .ca-calendar-year-nav a:last-child { justify-self: end; }
.calendar-controls .ca-calendar-year-nav a:hover { background: #173d2d; color: #fff; }
.calendar-controls .ca-calendar-current-year {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 100px;
	min-height: 52px;
	padding-inline: 20px;
	border-radius: 999px;
	background: #f4eee5;
	color: #173d2d;
	font-family: Georgia, ui-serif, serif;
	font-size: 24px;
	font-weight: 700;
}
.calendar-controls .ca-calendar-actions {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 16px;
	margin-top: 20px;
	flex-wrap: wrap;
}
.calendar-controls .ca-calendar-actions .calendar-print-button,
.calendar-controls .ca-calendar-actions .calendar-ics-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: auto;
	min-height: 52px;
	gap: 9px;
	padding-inline: 24px;
	border: 1px solid #1b745e;
	border-radius: 12px;
	background: #fff;
	color: #173d2d;
	font-weight: 700;
}
.calendar-controls .ca-calendar-actions .calendar-print-button:hover,
.calendar-controls .ca-calendar-actions .calendar-ics-button:hover { background: #f4eee5; color: #173d2d; }
.ca-calendar-print-help { margin: 10px 0 0; color: #636861; font-size: 14px; text-align: center; }
.calendar-controls .ca-pdf-open,
.ca-pdf-download {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 54px;
	gap: 10px;
	padding-inline: 26px;
	border: 0;
	border-radius: 12px;
	background: #173d2d;
	color: #fff;
	font: inherit;
	font-weight: 700;
	cursor: pointer;
}
.calendar-controls .ca-pdf-open:hover,
.ca-pdf-download:hover { background: #22533f; color: #fff; }
.ca-pdf-modal[hidden] { display: none; }
.ca-pdf-modal { position: fixed; z-index: 10000; inset: 0; display: grid; place-items: center; padding: 24px; }
.ca-pdf-modal__backdrop { position: absolute; inset: 0; background: rgb(12 28 21 / 68%); backdrop-filter: blur(3px); }
.ca-pdf-modal__panel {
	position: relative;
	z-index: 1;
	width: min(1180px, 100%);
	max-height: calc(100vh - 48px);
	overflow-y: auto;
	padding: 28px;
	border: 1px solid rgba(23, 61, 45, .12);
	border-radius: 20px;
	background: #fcfaf6;
	box-shadow: 0 24px 70px rgb(8 28 20 / 24%);
}
.ca-pdf-modal__close { position: absolute; inset-block-start: 16px; inset-inline-end: 18px; width: 40px; height: 40px; border: 1px solid rgba(23, 61, 45, .14); border-radius: 50%; background: #fff; color: #173d2d; font-size: 25px; cursor: pointer; }
.ca-pdf-modal__header { padding-inline-end: 52px; }
.ca-pdf-modal__header h2 { margin: 0; color: #173d2d; font-family: Georgia, ui-serif, serif; font-size: clamp(1.65rem, 3vw, 2.25rem); }
.ca-pdf-modal__header p { margin: 8px 0 0; color: #636861; }
.ca-pdf-configurator { display: grid; grid-template-columns: minmax(230px, .65fr) minmax(0, 1.65fr); gap: 28px; margin-top: 24px; }
.ca-pdf-options { display: grid; align-content: start; gap: 20px; }
.ca-pdf-options fieldset { margin: 0; padding: 18px; border: 1px solid rgba(23, 61, 45, .12); border-radius: 14px; background: #fff; }
.ca-pdf-options legend { padding-inline: 6px; color: #173d2d; font-weight: 700; }
.ca-pdf-format-options { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.ca-pdf-format-options label { position: relative; }
.ca-pdf-format-options input { position: absolute; opacity: 0; }
.ca-pdf-format-options span { display: grid; min-height: 62px; place-items: center; padding: 10px; border: 1px solid rgba(23, 61, 45, .16); border-radius: 10px; background: #fcfaf6; cursor: pointer; }
.ca-pdf-format-options input:checked + span { border-color: #173d2d; background: #173d2d; color: #fff; }
.ca-pdf-format-options input:focus-visible + span { outline: 3px solid rgb(23 61 45 / 22%); outline-offset: 2px; }
.ca-pdf-display-options { display: grid; gap: 12px; }
.ca-pdf-display-options label { display: flex; align-items: center; gap: 10px; color: #20241f; cursor: pointer; }
.ca-pdf-display-options input { width: 18px; height: 18px; accent-color: #173d2d; }
.ca-pdf-preview-wrap { min-width: 0; }
.ca-pdf-preview { width: 100%; margin-inline: auto; padding: 14px; overflow: hidden; border: 1px solid rgba(23, 61, 45, .12); background: #e9e5dd; box-shadow: inset 0 0 20px rgb(23 61 45 / 6%); transition: max-width .2s ease; }
.ca-pdf-preview.is-landscape { max-width: 760px; aspect-ratio: 297 / 210; }
.ca-pdf-preview.is-portrait { max-width: 520px; aspect-ratio: 210 / 297; }
.ca-pdf-document { display: grid; grid-template-rows: auto 1fr auto; width: 100%; height: 100%; padding: 2.2%; overflow: hidden; background: #fcfaf6; color: #20241f; box-shadow: 0 3px 12px rgb(23 61 45 / 10%); }
.ca-pdf-document > header { display: grid; grid-template-columns: 1fr 2fr 1fr; align-items: center; gap: 4px 12px; padding-block-end: 1.4%; border-block-end: 1px solid rgb(167 129 56 / 30%); text-align: center; }
.ca-pdf-document > header strong { grid-column: 1; grid-row: 1 / span 2; justify-self: start; color: #173d2d; font-family: Georgia, ui-serif, serif; font-size: clamp(.65rem, 1.35vw, 1.1rem); }
.ca-pdf-document > header h3 { grid-column: 2; margin: 0; color: #173d2d; font-family: Georgia, ui-serif, serif; font-size: clamp(.58rem, 1.25vw, 1rem); text-align: center; }
.ca-pdf-document > header p { grid-column: 2; margin: 0; color: #636861; font-size: clamp(.35rem, .7vw, .56rem); text-align: center; }
.ca-pdf-months { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(3, minmax(0, 1fr)); gap: 1.2%; min-height: 0; padding-block: 1.4%; }
.ca-pdf-preview.is-portrait .ca-pdf-months { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: repeat(4, minmax(0, 1fr)); }
.ca-pdf-months .calendar-month { min-width: 0; min-height: 0; padding: 3%; overflow: hidden; border-radius: 4px; box-shadow: none; }
.ca-pdf-months .calendar-month h2 { margin-block-end: 2%; font-size: clamp(.42rem, .82vw, .7rem); line-height: 1.1; }
.ca-pdf-months .calendar-month__grid { grid-template-columns: 1.25em repeat(7, minmax(0, 1fr)); gap: 1px; padding: 0; }
.ca-pdf-months .calendar-weekday,
.ca-pdf-months .calendar-week-number,
.ca-pdf-months .calendar-day { min-height: 0; aspect-ratio: auto; padding: 0; border-radius: 2px; font-size: clamp(.25rem, .52vw, .45rem); line-height: 1.25; }
.ca-pdf-months .calendar-day__holiday-name { display: none; }
.ca-pdf-months .calendar-day.is-holiday { border: 1px solid #b84a3a; background: #fff8f6; }
.ca-pdf-months .calendar-day.is-holiday::after { display: none; }
.ca-pdf-months .calendar-day.is-holiday.is-estimated { border-style: dashed; }
.ca-pdf-preview.hide-holidays .calendar-day.is-holiday { border-color: transparent; background: transparent; }
.ca-pdf-preview.hide-holidays .calendar-day.is-holiday::after { display: none; }
.ca-pdf-preview.hide-weekends .calendar-day.is-weekend { background: transparent; }
.ca-pdf-preview.hide-week-numbers .calendar-week-number { display: none; }
.ca-pdf-preview.hide-week-numbers .calendar-month__grid { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.ca-pdf-document > footer { display: flex; justify-content: space-between; gap: 12px; padding-block-start: 1%; border-block-start: 1px solid rgb(167 129 56 / 24%); color: #636861; font-size: clamp(.3rem, .62vw, .5rem); }
.ca-pdf-modal__actions { display: flex; justify-content: center; gap: 12px; margin-top: 18px; flex-wrap: wrap; }
.ca-pdf-cancel { min-height: 54px; padding-inline: 24px; border: 1px solid #173d2d; border-radius: 12px; background: #fff; color: #173d2d; font-weight: 700; cursor: pointer; }
.ca-pdf-cancel:hover { background: #f4eee5; }
.ca-pdf-download[disabled] { cursor: wait; opacity: .72; }
.ca-pdf-error { margin: 10px 0 0; color: #9b2c2c; font-size: 14px; text-align: center; }
.ca-pdf-error[hidden] { display: none; }
body.ca-pdf-modal-open { overflow: hidden; }

@media (max-width: 42.5rem) {
	.calendar-controls { padding: 16px; }
	.calendar-controls__selectors { grid-template-columns: 1fr; gap: 16px; }
	.calendar-controls .ca-calendar-year-nav { grid-template-columns: 1fr; gap: 12px; }
	.calendar-controls .ca-calendar-current-year { display: inline-flex; grid-row: 1; justify-self: center; }
	.calendar-controls .ca-calendar-year-nav a { width: 100%; justify-content: center; justify-self: stretch; }
	.calendar-controls .ca-calendar-year-nav a:first-child { grid-row: 2; }
	.calendar-controls .ca-calendar-year-nav a:last-child { grid-row: 3; justify-self: stretch; }
	.calendar-controls .ca-calendar-actions { align-items: stretch; flex-direction: column; }
	.calendar-controls .ca-calendar-actions .calendar-print-button,
	.calendar-controls .ca-calendar-actions .calendar-ics-button { width: 100%; }
	.calendar-controls .ca-pdf-open { width: 100%; }
	.ca-pdf-modal { padding: 0; }
	.ca-pdf-modal__panel { width: 100%; max-height: 100vh; min-height: 100vh; padding: 20px 14px; border-radius: 0; }
	.ca-pdf-configurator { grid-template-columns: 1fr; gap: 20px; }
	.ca-pdf-preview-wrap { overflow-x: auto; }
	.ca-pdf-modal__actions { position: sticky; inset-block-end: 0; padding-block: 10px; background: #fcfaf6; }
}

@media (max-width: 70rem) {
	.calendar-year-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.calendar-overview { grid-template-columns: 1fr; }
}

@media (max-width: 42.5rem) {
	.ic-site-header__inner,
	.ic-site-footer__inner,
	.ic-public-main { width: min(100% - 1.25rem, 40rem); }
	.ic-site-header__inner { min-height: 3.75rem; gap: .75rem; }
	.ic-site-brand { min-width: 0; }
	.ic-site-brand__logo { width: min(14rem, 68vw); }
	.ic-site-nav { gap: .7rem; font-size: .85rem; }
	.ic-site-header__inner { display: flex; flex-wrap: wrap; padding-block: .55rem; }
	.ic-language-switcher { width: 100%; justify-content: center; order: 3; }
	.ic-site-nav { width: 100%; margin-inline-start: 0; order: 2; overflow-x: auto; justify-content: flex-start; }
	.ic-public-main { padding-block: 1rem 2rem; }
	.ic-site-footer__inner { align-items: flex-start; flex-direction: column; justify-content: center; padding-block: 1rem; }
	.calendar-year-grid, .calendar-controls__selectors { grid-template-columns: 1fr; }
	.calendar-overview { gap: .75rem; }
	.calendar-navigation { gap: .5rem; }
	.calendar-navigation a { padding-inline: .6rem; }
	.calendar-print-actions span { display: none; }
	.calendar-month__grid { padding: .45rem; }
	.calendar-weekday, .calendar-week-number, .calendar-day { min-height: 2.25rem; font-size: .8rem; }
}

@media print {
	.ic-site-header,
	.ic-site-footer { display: none !important; }
	body.international-calendar-public-page { background: #fff; }
	.ic-public-main { width: 100%; padding: 0; }
	.calendar-legend { display: none; }
}
