/* Self-hosted fonts — no external Google Fonts request at runtime. */
@font-face {
	font-family: "Cormorant Garamond";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/cormorant-garamond-variable.woff2") format("woff2");
}
@font-face {
	font-family: "Cormorant Garamond";
	font-style: italic;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/cormorant-garamond-italic-variable.woff2") format("woff2");
}
@font-face {
	font-family: "Montserrat";
	font-style: normal;
	font-weight: 300 700;
	font-display: swap;
	src: url("../fonts/montserrat-variable.woff2") format("woff2");
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--cb-color-background);
	color: var(--cb-color-text);
	font-family: var(--cb-font-body);
	font-size: var(--cb-text-body-md);
	line-height: var(--cb-leading-body-md);
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; background: none; border: 0; color: inherit; }
ul, ol { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4, h5, h6 {
	margin: 0;
	font-family: var(--cb-font-heading);
	font-weight: 400;
	color: var(--cb-color-text);
}
p { margin: 0; }
input, select, textarea { font: inherit; color: inherit; }

/* Focus visibility — never sacrificed for aesthetics. */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
	outline: 2px solid var(--cb-color-dusty-rose);
	outline-offset: 2px;
}
.screen-reader-text {
	position: absolute; width: 1px; height: 1px; overflow: hidden;
	clip: rect(1px,1px,1px,1px); white-space: nowrap;
}
.skip-link {
	position: absolute; top: -100px; left: var(--cb-space-md);
	background: var(--cb-color-text); color: var(--cb-white);
	padding: var(--cb-space-sm) var(--cb-space-md); z-index: 9999;
	border-radius: var(--cb-radius);
	transition: top var(--cb-transition-fast);
}
.skip-link:focus { top: var(--cb-space-md); }

/* ---- Type scale utility classes ---- */
.cb-display-lg { font-family: var(--cb-font-heading); font-size: var(--cb-text-display-lg-mobile); line-height: var(--cb-leading-display-lg-mobile); letter-spacing: var(--cb-tracking-display-lg); }
@media (min-width: 1024px) { .cb-display-lg { font-size: var(--cb-text-display-lg); line-height: var(--cb-leading-display-lg); } }
.cb-headline-lg { font-family: var(--cb-font-heading); font-size: var(--cb-text-headline-lg-mobile); line-height: var(--cb-leading-headline-lg-mobile); }
@media (min-width: 1024px) { .cb-headline-lg { font-size: var(--cb-text-headline-lg); line-height: var(--cb-leading-headline-lg); } }
.cb-headline-md { font-family: var(--cb-font-heading); font-size: var(--cb-text-headline-md); line-height: var(--cb-leading-headline-md); font-weight: 500; }
.cb-headline-sm { font-family: var(--cb-font-heading); font-size: var(--cb-text-headline-sm); line-height: var(--cb-leading-headline-sm); }
.cb-title-editorial { font-family: var(--cb-font-heading); font-style: italic; font-size: var(--cb-text-title-editorial); line-height: var(--cb-leading-title-editorial); letter-spacing: var(--cb-tracking-title-editorial); color: var(--cb-color-dusty-rose); }
.cb-body-lg { font-size: var(--cb-text-body-lg); line-height: var(--cb-leading-body-lg); }
.cb-body-sm { font-size: var(--cb-text-body-sm); line-height: var(--cb-leading-body-sm); color: var(--cb-color-text-muted); }
.cb-label-caps { font-size: var(--cb-text-label-caps); line-height: var(--cb-leading-label-caps); letter-spacing: var(--cb-tracking-label-caps); font-weight: 600; text-transform: uppercase; }
.cb-label-md { font-size: var(--cb-text-label-md); line-height: var(--cb-leading-label-md); letter-spacing: var(--cb-tracking-label-md); font-weight: 500; text-transform: uppercase; }

/* ---- Layout ---- */
.cb-container {
	max-width: var(--cb-container-max);
	margin-inline: auto;
	padding-inline: var(--cb-gutter-mobile);
}
@media (min-width: 1024px) { .cb-container { padding-inline: var(--cb-margin); } }
.cb-container-narrow { max-width: var(--cb-container-narrow); margin-inline: auto; }
.cb-section { padding-block: var(--cb-space-xl); }
@media (min-width: 1024px) { .cb-section { padding-block: 5rem; } }
