/* ==========================================================================
   Giggle Town — base: reset, document defaults, text utilities
   ========================================================================== */
:root {
	--gt-navy: #0A2A6E;
	--gt-blue: #0C429A;
	--gt-royal: #1F5FC4;
	--gt-yellow: #FFD93B;
	--gt-slate: #3B4A78;
	--gt-ice: #EEF6FF;
	--gt-sky: #DEF1FE;
	--gt-pink: #FF5A8C;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
	margin: 0;
	font-family: Nunito, system-ui, sans-serif;
	color: var(--gt-navy);
	background: #FFFFFF;
	-webkit-font-smoothing: antialiased;
}
img, svg, video, iframe { max-width: 100%; }
:where(a) { color: var(--gt-royal); }
:where(a:hover) { color: var(--gt-navy); }
section { scroll-margin-top: 72px; }
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
	outline: 3px solid var(--gt-pink);
	outline-offset: 3px;
}
[hidden] { display: none !important; }

/* Text utilities from the design */
.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;
}
.text-accent { color: var(--gt-yellow); -webkit-text-stroke: 5px var(--gt-navy); paint-order: stroke fill; }
.text-outline { color: #FFFFFF; -webkit-text-stroke: 10px var(--gt-navy); paint-order: stroke fill; text-shadow: 0 5px 0 var(--gt-navy); }
.text-outline .text-accent { -webkit-text-stroke: 10px var(--gt-navy); }
.no-scrollbar { scrollbar-width: none; }
.no-scrollbar::-webkit-scrollbar { display: none; }

.skip-link {
	position: absolute; left: 12px; top: -100px; z-index: 1000;
	padding: 12px 20px; border-radius: 999px;
	background: var(--gt-yellow); color: var(--gt-navy);
	font-family: Fredoka, sans-serif; font-weight: 700; text-decoration: none;
}
.skip-link:focus { top: 12px; }
