:root {
	/* Scheme C: deep plum, bengara red, antique bronze, walnut and old paper. */
	--color-brand-900: #5a3e42;
	--color-brand-900-rgb: 90 62 66;
	--color-brand-700: #985b4a;
	--color-brand-700-rgb: 152 91 74;
	--color-accent: #a88955;
	--color-walnut: #c8b6aa;
	--color-paper: #efe4d3;
	--color-paper-rgb: 239 228 211;
	--color-cream: #f7f1e8;
	--color-cream-rgb: 247 241 232;
	--color-ivory: #fcfaf6;
	--color-ivory-rgb: 252 250 246;
	--color-sand: #c8b6aa;
	--color-ink: #2f2928;
	--color-text: #514744;
	--color-muted: #746764;
	--color-white: #fff;
	--color-white-rgb: 255 255 255;
	--font-sans: "Hiragino Kaku Gothic ProN", "Yu Gothic", "YuGothic", "Noto Sans JP", sans-serif;
	--font-serif: "Hiragino Mincho ProN", "Yu Mincho", "YuMincho", "Noto Serif JP", serif;
	--font-latin: "Avenir Next", Avenir, "Helvetica Neue", Arial, sans-serif;
	--font-size-body: 1rem;
	--font-size-small: 0.875rem;
	--font-size-label: 0.75rem;
	--font-size-button: 0.9375rem;
	--container-width: 1440px;
	--gutter: clamp(20px, 4vw, 64px);
	--header-height: 82px;
	--radius-small: 12px;
	--radius-medium: 24px;
	--shadow-soft: 0 18px 50px rgb(var(--color-brand-900-rgb) / 0.12);
	--transition: 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

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

html {
	scroll-behavior: smooth;
}

body {
	margin: 0;
	background: var(--color-ivory);
	color: var(--color-text);
	font-family: var(--font-sans);
	font-size: var(--font-size-body);
	font-weight: 500;
	line-height: 1.8;
	letter-spacing: 0.035em;
	-webkit-font-smoothing: antialiased;
}

body.is-menu-open {
	overflow: hidden;
}

img,
svg {
	display: block;
	max-width: 100%;
}

img {
	height: auto;
}

a {
	color: inherit;
	text-decoration: none;
}

button,
input,
textarea,
select {
	font: inherit;
}

button,
a {
	-webkit-tap-highlight-color: transparent;
}

:focus-visible {
	outline: 3px solid var(--color-accent);
	outline-offset: 4px;
}

.container {
	width: min(100%, var(--container-width));
	margin-inline: auto;
	padding-inline: var(--gutter);
}

.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;
}

.screen-reader-text:focus {
	top: 8px;
	left: 8px;
	z-index: 100000;
	width: auto;
	height: auto;
	padding: 12px 18px;
	clip: auto;
	background: var(--color-white);
	color: var(--color-ink);
	box-shadow: var(--shadow-soft);
}

.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 18px;
	min-height: 56px;
	padding: 13px 22px;
	border: 1px solid transparent;
	border-radius: 999px;
	font-size: var(--font-size-button);
	font-weight: 700;
	line-height: 1.3;
	transition: color var(--transition), background-color var(--transition), border-color var(--transition), transform var(--transition);
}

.button svg {
	width: 16px;
	height: 16px;
	fill: none;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.8;
	transition: transform var(--transition);
}

.button:hover {
	transform: translateY(-2px);
}

.button:hover svg {
	transform: translateX(3px);
}

.button--primary {
	min-width: 218px;
	background: var(--color-brand-900);
	color: var(--color-white);
	box-shadow: 0 12px 32px rgb(var(--color-brand-900-rgb) / 0.2);
}

.button--primary:hover {
	background: var(--color-brand-700);
}

.content-area {
	min-height: 60vh;
	padding-block: clamp(64px, 10vw, 140px);
}

.content-area__inner {
	max-width: 920px;
}

/* Elements remain visible by default and are prepared by JavaScript only when needed. */
[data-reveal].reveal-ready {
	opacity: 0;
	transform: translate3d(0, 18px, 0);
	transition:
		opacity 600ms ease var(--reveal-delay, 0ms),
		transform 680ms cubic-bezier(0.22, 1, 0.36, 1) var(--reveal-delay, 0ms);
}

[data-reveal].reveal-ready.is-visible {
	opacity: 1;
	transform: translate3d(0, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
	}

	[data-reveal].reveal-ready {
		opacity: 1;
		transform: none;
	}
}
