/**
 * Global Styles
 *
 * Base reset and layout utilities.
 *
 * @package Wayfinder
 * @since 1.0.0
 */

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

/* Remove default margins */
body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
figure,
blockquote,
dl,
dd {
	margin: 0;
}

/* Core body defaults */
html {
	scroll-behavior: smooth;
}

/* ----------------------------------------------------------------
   Sticky footer — flex column chain
   body fills the viewport; .site grows to fill body; main grows
   to fill .site; footer never stretches beyond its content.
   ---------------------------------------------------------------- */
body {
	min-height: 100dvh;
	display: flex;
	flex-direction: column;
	background-color: var(--color-white);
}

.site {
	flex: 1;
	display: flex;
	flex-direction: column;
}

main {
	flex: 1 0 auto;
}

.site-footer {
	flex-shrink: 0;
}

/* Media defaults */
img,
picture,
video,
canvas,
svg {
	display: block;
	max-width: 100%;
	height: auto;
}

/* Form element reset */
input,
button,
textarea,
select {
	font: inherit;
}

/* Link reset */
a {
	color: inherit;
	text-decoration: none;
}

/* Button reset */
button {
	cursor: pointer;
	background: none;
	border: none;
	padding: 0;
}

/* List reset for nav */
ul[role='list'],
ol[role='list'] {
	list-style: none;
	padding: 0;
	margin: 0;
}

/* Container */
.container {
	width: 100%;
	max-width: var(--container-max-width);
	margin-inline: auto;
	padding-inline: var(--container-padding);
}

/* Full bleed sections */
.full-bleed {
	width: 100%;
}

/* Screen reader only */
.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Focus visible */
:focus-visible {
	outline: 2px solid var(--color-orange);
	outline-offset: 2px;
}
