@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600&display=swap');

:root {
	--bg: #f8f1ed;
	--ink: #443935;
	--muted: #86756f;
	--pink: #bc787e;
	--line: #dfd0c9;
	--serif: Georgia, 'Times New Roman', serif
}

* {
	box-sizing: border-box
}

body {
	margin: 0;
	background: var(--bg);
	color: var(--ink);
	font-family: 'DM Sans', sans-serif;
	font-size: 14px;
	overflow: hidden
}

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

button,
a,
input,
select,
textarea {
	-webkit-tap-highlight-color: transparent
}

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

button {
	cursor: pointer
}

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
	outline: 2px solid var(--pink);
	outline-offset: 5px
}

.ambient {
	position: fixed;
	inset: 0;
	pointer-events: none;
	background: radial-gradient(ellipse at 6% 62%, #f0dbd650, transparent 46%), radial-gradient(ellipse at 94% 15%, #eee0d9, transparent 42%);
	z-index: -1
}

.header {
	height: 112px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 30px;
	margin: 0 5.4%;
	border-bottom: 1px solid var(--line)
}

.brand {
	display: flex;
	align-items: center;
	gap: 13px
}

.brand img {
	width: 63px;
	height: 63px;
	mix-blend-mode: multiply;
	opacity: .75
}

.brand>span {
	font-family: var(--serif);
	font-size: 48px;
	letter-spacing: -1px
}

.brand-sub {
	display: block;
	font-family: 'DM Sans', sans-serif;
	font-size: 8px;
	letter-spacing: 2px;
	margin-top: -4px;
    /* margin-left: 33px; */
	text-align: right;
}

.header nav {
	display: flex;
	align-items: center;
	gap: 29px;
	font-size: 12px
}

.header nav>a {
	position: relative;
	padding: 12px 0
}

.header nav>a:not(.nav-cta):after {
	content: '';
	position: absolute;
	bottom: 2px;
	left: 0;
	width: 0;
	height: 1px;
	background: var(--pink);
	transition: width .3s
}

.header nav>a:hover:after,
.header nav>a.active:after {
	width: 100%
}

.header nav>a.active {
	color: #a8676e
}

.header nav .nav-cta {
	border: 1px solid #c6a49b;
	border-radius: 6px;
	padding: 13px 17px;
	display: flex;
	gap: 20px
}

.menu-toggle {
	display: none
}

main {
	height: calc(100dvh - 174px);
	max-width: 1660px;
	margin: auto;
	position: relative
}

.view {
	height: 100%;
	overflow-y: auto;
	overscroll-behavior: contain;
	scrollbar-width: thin;
	scrollbar-color: #d5b7b3 transparent;
	padding: 48px 5.8% 25px;
	animation: enter .65s cubic-bezier(.2, .65, .2, 1) both
}

.view[hidden] {
	display: none !important
}

.view.leaving {
	animation: leave .22s ease both;
	pointer-events: none
}

@keyframes enter {
	from {
		opacity: 0;
		transform: translateY(18px)
	}

	to {
		opacity: 1;
		transform: translateY(0)
	}
}

@keyframes leave {
	to {
		opacity: 0;
		transform: translateY(-10px)
	}
}

.home {
	display: grid;
	grid-template-columns: 1.03fr 1fr;
	grid-template-rows: 1fr auto;
	column-gap: 6%;
	position: relative
}

.home-copy {
	align-self: center;
	padding-bottom: 25px
}

.eyebrow {
	display: flex;
	gap: 10px;
	align-items: center;
	font-size: 10px;
	letter-spacing: 2px;
	font-weight: 600;
	color: #987a70
}

.eyebrow>span {
	width: 7px;
	height: 7px;
	background: var(--pink);
	border-radius: 50%
}

h1,
h2 {
	font-family: var(--serif);
	font-weight: 400;
	letter-spacing: -3.3px;
	line-height: 1.08;
	margin: 25px 0 23px;
	font-size: clamp(54px, 5.2vw, 87px)
}

:is(h1,h2):focus-visible {
    outline: none;
}

em {
	font-weight: 400;
	color: var(--pink)
}

.intro {
	font-size: 16px;
	line-height: 1.85;
	color: var(--muted)
}

.actions {
	display: flex;
	align-items: center;
	gap: 26px;
	margin-top: 29px
}

.button {
	display: inline-flex;
	justify-content: space-between;
	align-items: center;
	gap: 25px;
	background: var(--pink);
	color: #fff;
	border: 0;
	border-radius: 5px;
	padding: 17px 21px;
	font-size: 12px;
	font-weight: 500;
	transition: background .2s, transform .2s
}

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

.button span {
	font-size: 19px;
	font-weight: 400
}

.text-link {
	font-size: 12px;
	border-bottom: 1px solid #cdb7ad;
	padding: 8px 0;
	white-space: nowrap
}

.text-link span {
	margin-left: 10px
}

.personal {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-top: 44px
}

.personal-icon {
	width: 42px;
	height: 42px;
	display: grid;
	place-items: center;
	border: 1px solid #d6bcb2;
	border-radius: 50%;
	font-size: 25px;
	color: var(--pink)
}

.personal strong {
	font-size: 12px;
	font-weight: 600
}

.personal p {
	font-size: 11px;
	line-height: 1.7;
	color: var(--muted);
	margin: 5px 0 0
}

.home-visual {
	position: relative;
	display: flex;
	align-items: center;
	padding: 0 15px 30px 0;
	min-height: 0
}

.photo-wrap {
	height: 100%;
	max-height: 590px;
	min-height: 300px;
	width: 100%;
	position: relative;
	/* border-radius: 48% 48% 5px 5px; */
	border-radius: 80px;
	overflow: hidden;
	box-shadow: rgb(from var(--pink) r g b / 0.4) 4px 4px 6px 0px;
}

.photo-wrap>img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 48% 50%;
	filter: saturate(.60)
}

.photo-shade {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, #eabfc115, transparent 50%, #37251f66)
}

.photo-caption {
	position: absolute;
	bottom: 28px;
	left: 0;
	right: 0;
	text-align: center;
	font-size: 11px;
	letter-spacing: .4px;
	color: #fff
}

.round-note {
    position: absolute;
    /* top: 75%; */
    /* right: -26px; */
    bottom: 20px;
    left: -24px;
    width: 126px;
    height: 126px;
    background: #f1ded8;
    border: 5px solid var(--bg);
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    font-size: 10px;
    letter-spacing: 1.3px;
    transform: rotate(12deg);
}

.round-note span {
	font-size: 26px;
	line-height: 26px
}

.visual-note {
	position: absolute;
	bottom: 4px;
	left: -36px;
	/* background: var(--bg); */
	background: rgb(from var(--bg) r g b / 0.7);
    border-radius: 8px;
	padding: 15px 25px 8px 10px;
	font-family: var(--serif);
	font-size: 17px;
	line-height: 1.5
}

.tiny-star {
	float: left;
	color: var(--pink);
	font-size: 32px;
	margin-right: 17px
}

.visual-note em {
	font-size: 18px
}

.home-bottom {
	grid-column: 1/-1;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	border-top: 1px solid var(--line);
	padding-top: 22px;
	margin-top: 24px
}

.small-label {
	font-size: 8px;
	letter-spacing: 1.5px;
	color: var(--muted)
}

.home-bottom a {
	display: flex;
	align-items: center;
	gap: 16px;
	font-size: 10px;
	color: #a57e75
}

.home-bottom a span {
	font-size: 12px;
	color: var(--ink);
	margin-right: 16px
}

.home-bottom a:hover span {
	color: var(--pink)
}

/* footer {
	height: 62px;
	margin: 0 5.4%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	font-size: 8px;
	letter-spacing: 1.4px;
	color: var(--muted)
} */
footer {
	height: 62px;
    margin: 0 5.4%;
    display: grid;
    align-items: center;
    justify-content: space-between;
    font-size: 8px;
    letter-spacing: 1.4px;
    color: var(--muted);
    grid-template-columns: 1fr 1fr 1fr;
    justify-items: center;
}

footer>div {
	display: flex;
	gap: 15px;
	align-items: center
}

footer button {
	border: 0;
	padding: 5px 0;
	background: none;
	color: var(--muted);
	font-size: 10px;
	letter-spacing: 0
}

.footer-divider {
	opacity: .5
}

.page-progress {
	font-size: 9px
}

.progress-line {
	width: 76px;
	height: 2px;
	background: var(--line)
}

.progress-line i {
	display: block;
	background: var(--pink);
	height: 100%;
	width: 20%;
	transition: width .5s
}

.service {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 9%;
	align-items: center
}

.service h2,
.booking h2 {
	font-size: clamp(44px, 4.6vw, 72px)
}

.service-heading>p,
.booking-intro>p {
	font-size: 15px;
	line-height: 1.9;
	color: var(--muted);
	max-width: 440px
}

.service-heading>.button {
	margin-top: 14px
}

.quote {
	font-family: var(--serif);
	font-size: 25px;
	line-height: 1.4;
	margin-top: 35px;
	color: #92756e
}

.quote span {
	display: block;
	font-family: 'DM Sans', sans-serif;
	font-size: 8px;
	letter-spacing: 1.7px;
	margin-top: 15px
}

.section-label {
	font-size: 9px;
	letter-spacing: 1.7px;
	color: var(--muted);
	margin-bottom: 13px
}

.step {
	display: flex;
	gap: 24px;
	padding: 19px 0;
	border-top: 1px solid var(--line)
}

.step>span {
	font-family: var(--serif);
	color: var(--pink);
	font-size: 23px
}

.step h3,
.info-box h3 {
	font-size: 15px;
	font-weight: 500;
	margin: 0 0 7px
}

.step p,
.info-box p {
	font-size: 12px;
	line-height: 1.8;
	color: var(--muted);
	margin: 0
}

.info-box {
	display: flex;
	gap: 16px;
	background: #efdfd8;
	border-radius: 6px;
	padding: 20px;
	margin-top: 12px
}

.info-box>span {
	font-size: 24px;
	color: var(--pink)
}

.price-row {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	font-size: 11px;
	margin-top: 23px;
	padding: 15px 0;
	border-top: 1px solid var(--line)
}

.price-row strong {
	font-weight: 500;
	color: #a76870
}

.trailer-art {
	background: #eee1da;
	border-radius: 90px 90px 6px 6px;
	padding: 5px 20px 14px;
	margin-bottom: 25px;
	text-align: center
}

.trailer-art svg {
	max-height: 175px;
	width: 100%
}

.trailer-art>span {
	font-size: 9px;
	color: var(--muted)
}

.transport-photo {
	margin-top: 28px;
	height: 150px;
	border-radius: 4px 70px 4px 4px;
	overflow: hidden;
	max-width: 390px
}

.transport-photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 58%;
	filter: saturate(.65)
}

.booking {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8%;
	align-items: center
}

.booking-note {
	display: flex;
	gap: 17px;
	max-width: 370px;
	margin-top: 30px;
	border-top: 1px solid var(--line);
	padding-top: 20px
}

.booking-note>span {
	font-size: 25px;
	color: var(--pink)
}

.booking-note p {
	font-size: 11px;
	line-height: 1.8;
	color: var(--muted);
	margin: 0
}

.booking-form {
	background: #fffbf780;
	border: 1px solid #e6d9d0;
	border-radius: 8px;
	padding: 27px
}

.form-heading {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 22px;
	gap: 15px
}

.form-heading h3 {
	font-family: var(--serif);
	font-size: 26px;
	font-weight: 400;
	margin: 0
}

.form-heading>span {
	font-size: 8px;
	letter-spacing: 1px;
	color: var(--pink)
}

label {
	display: flex;
	flex-direction: column;
	gap: 8px;
	font-size: 11px;
	margin-bottom: 16px
}

input,
select,
textarea {
	color: var(--ink);
	width: 100%;
	border: 1px solid #ddcec6;
	background: #fffaf7;
	border-radius: 4px;
	padding: 12px;
	font-size: 12px;
	min-width: 0
}

textarea {
	resize: vertical;
	max-height: 150px
}

input::placeholder,
textarea::placeholder {
	color: #a2928b
}

.form-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 15px
}

.field-note {
	font-size: 9px;
	color: var(--muted);
	margin: -5px 0 17px
}

.checkbox {
	flex-direction: row;
	align-items: flex-start;
	line-height: 1.6;
	font-size: 10px;
	color: var(--muted);
	gap: 9px
}

.checkbox input {
	width: 13px;
	margin-top: 2px;
	accent-color: var(--pink)
}

.booking-form>.button {
	width: 100%
}

.form-note {
	font-size: 9px;
	color: var(--muted);
	line-height: 1.6;
	margin: 11px 0 0
}

dialog {
	color: var(--ink);
	border: 1px solid var(--line);
	border-radius: 12px;
	background: var(--bg);
	width: min(570px, 90vw);
	padding: 36px;
	max-height: 85dvh
}

dialog::backdrop {
	background: #44393570;
	backdrop-filter: blur(7px)
}

.dialog-close {
	position: absolute;
	right: 14px;
	top: 9px;
	font-size: 28px;
	background: none;
	border: 0;
	color: var(--muted)
}

dialog h2 {
	font-size: 35px;
	letter-spacing: -1px;
	margin: 0 0 20px
}

dialog p {
	font-size: 13px;
	line-height: 1.8;
	color: var(--muted)
}

dialog textarea {
	margin: 10px 0 20px;
	max-height: none;
	resize: none
}

#copy-status {
	font-size: 12px
}

.menu-toggle span {
	display: block;
	width: 22px;
	height: 1px;
	background: var(--ink);
	margin: 6px
}

@media(min-width:1600px) {

	.header,
	footer {
		max-width: 1470px;
		margin-left: auto;
		margin-right: auto
	}

	.header nav {
		font-size: 14px;
		gap: 36px
	}

	.home .intro {
		font-size: 18px
	}

	.personal p {
		font-size: 13px
	}

	.personal strong {
		font-size: 14px
	}

	.button {
		font-size: 14px
	}

	.home-copy {
		padding-bottom: 35px
	}
}

@media(max-height:800px) and (min-width:901px) {
	.header {
		height: 90px
	}

	main {
		height: calc(100dvh - 140px)
	}

	footer {
		height: 50px
	}

	.view {
		padding-top: 25px
	}

	.home h1 {
		font-size: clamp(50px, 5vw, 72px);
		margin: 18px 0
	}

	.personal {
		margin-top: 28px
	}

	.home-bottom {
		margin-top: 15px;
		padding-top: 16px
	}

	.photo-wrap {
		max-height: 470px
	}

	.service h2,
	.booking h2 {
		font-size: 55px
	}

	.step {
		padding: 14px 0
	}

	.quote {
		margin-top: 23px;
		font-size: 22px
	}

	.booking-form {
		padding: 20px
	}

	label {
		margin-bottom: 12px;
		gap: 6px
	}

	input,
	select,
	textarea {
		padding: 10px
	}

	.form-heading {
		margin-bottom: 16px
	}

	.booking-note {
		margin-top: 20px
	}
}

@media(max-width:1100px) {
	.header {
		margin: 0 4%;
		gap: 15px
	}

	.header nav {
		gap: 16px;
		font-size: 11px
	}

	/* .brand>span {
		font-size: 28px
	} */

	.brand img {
		width: 50px;
		height: 50px
	}

	.brand-sub {
		font-size: 7px
	}

	.view {
		padding-left: 5%;
		padding-right: 5%
	}

	.actions {
		gap: 16px
	}

	.button {
		padding: 15px;
		gap: 12px
	}

	.text-link {
		font-size: 11px
	}

	.home {
		column-gap: 4%
	}

	.home-bottom a {
		gap: 8px
	}

	.home-bottom a span {
		margin-right: 3px
	}

	.small-label {
		max-width: 140px;
		line-height: 1.6
	}

	.service,
	.booking {
		gap: 5%
	}
}

@media(max-width:900px) {
	body {
		overflow: hidden
	}

	.header {
		height: 85px;
	}

	.brand img {
		width: 48px;
		height: 48px;
	}

	.brand>span {
		font-size: 36px;
	}

	.menu-toggle {
		display: block;
		border: 0;
		background: none;
		padding: 8px
	}

	.header nav {
		display: none;
		position: fixed;
		top: 84px;
		left: 0;
		right: 0;
		z-index: 10;
		background: var(--bg);
		padding: 20px 7% 30px;
		border-bottom: 1px solid var(--line);
		box-shadow: 0 14px 20px #44393515
	}

	.header nav.open {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 8px
	}

	.header nav>a {
		font-size: 14px;
		padding: 12px
	}

	.header nav .nav-cta {
		margin-top: 6px;
		justify-content: space-between
	}

	main {
		height: calc(100dvh - 132px)
	}

	.view {
		overflow-y: auto;
		overscroll-behavior: contain;
		scrollbar-width: thin;
		scrollbar-color: #d5b7b3 transparent;
		padding: 30px 6%
	}

	.home {
		grid-template-columns: 1fr 1fr;
		gap: 20px
	}

	.home h1 {
		font-size: clamp(40px, 6vw, 58px);
		letter-spacing: -2px
	}

	.home-copy {
		padding-bottom: 0
	}

	.intro {
		font-size: 13px
	}

	.actions {
		flex-direction: column;
		align-items: flex-start;
		gap: 10px
	}

	.personal {
		margin-top: 25px
	}

	.personal p {
		font-size: 10px
	}

	.home-visual {
		padding: 0 12px 35px 0
	}

	.photo-wrap {
		min-height: 320px;
		max-height: 480px
	}

	.round-note {
		/* right: -6px; */
		bottom: 70px;
		width: 96px;
		height: 96px;
		font-size: 7px;
		line-height: 0.5;
	}

	.visual-note {
		left: -10px;
		font-size: 13px;
		padding: 10px
	}

	.visual-note em {
		font-size: 14px
	}

	.tiny-star {
		font-size: 23px;
		margin-right: 8px
	}

	.home-bottom {
		flex-wrap: wrap;
		margin-top: 15px;
		padding-top: 20px
	}

	.home-bottom>.small-label {
		max-width: none;
		width: 100%
	}

	footer {
		height: 47px;
		margin: 0 6%
	}

	footer>span {
		font-size: 6px;
		max-width: 130px;
		line-height: 1.5
	}

	footer>div {
		gap: 9px
	}

	footer button {
		font-size: 9px
	}

	.progress-line {
		width: 35px
	}

	.service,
	.booking {
		grid-template-columns: 1fr;
		gap: 30px;
		align-content: start
	}

	.service-heading {
		max-width: 650px
	}

	.service h2,
	.booking h2 {
		font-size: 54px;
		letter-spacing: -2px
	}

	.service-heading>p {
		max-width: 600px
	}

	.quote {
		font-size: 23px;
		margin-top: 25px
	}

	.transport-photo {
		display: none
	}

	.booking-intro h2 br:nth-of-type(1) {
		display: none
	}

	.booking-note {
		max-width: 600px
	}

	.service-details {
		padding-bottom: 15px
	}

	.booking-form {
		margin-bottom: 15px
	}

	.trailer-art svg {
		max-height: 190px
	}
}

@media(max-width:580px) {
	.home {
		display: flex;
		flex-direction: column;
		gap: 28px
	}

	.eyebrow {
		font-size: 8px;
		letter-spacing: 1.7px
	}

	.home-copy {
		order: 0
	}

	.home h1 {
		font-size: 53px;
		letter-spacing: -2.8px;
		margin: 21px 0 16px
	}

	.intro {
		font-size: 14px
	}

	.actions {
		flex-direction: row;
		align-items: center;
		gap: 15px;
		margin-top: 22px
	}

	.button {
		font-size: 10px;
		padding: 14px 13px
	}

	.text-link {
		font-size: 10px
	}

	.personal {
		margin-top: 25px
	}

	.personal p {
		font-size: 11px
	}

	.home-visual {
		height: 350px;
		min-height: 350px;
		padding-right: 14px;
		margin-top: 0
	}

	.photo-wrap {
		min-height: 0;
		height: 315px;
		/* border-radius: 46% 46% 5px 5px */
	}

	.round-note {
		/* right: 0;
		top: 18px; */
		bottom: 20px;
		width: 88px;
		height: 88px;
		font-size: 7px
	}

	.visual-note {
		bottom: 0;
		left: 0;
		font-size: 15px
	}

	.visual-note em {
		font-size: 16px
	}

	.home-bottom {
		margin-top: 0;
		gap: 18px;
		flex-direction: column;
		align-items: stretch;
		padding-bottom: 15px
	}

	.home-bottom a {
		justify-content: space-between
	}

	.home-bottom a span {
		margin-right: auto;
		margin-left: 15px;
		font-size: 13px
	}

	footer>span {
		display: none
	}

	footer {
		justify-content: space-between;
		grid-template-columns: 1fr 1fr;
	}

	.service h2,
	.booking h2 {
		font-size: 46px
	}

	.service-heading>p,
	.booking-intro>p {
		font-size: 14px
	}

	.service-heading .button {
		font-size: 12px
	}

	.form-row {
		grid-template-columns: 1fr;
		gap: 0
	}

	.booking-form {
		padding: 20px
	}

	.form-heading h3 {
		font-size: 23px
	}

	.form-heading>span {
		font-size: 7px
	}

	.booking-form>.button {
		font-size: 12px
	}

	.step {
		gap: 18px
	}
}

.visual-note {
	min-width: 300px
}

.photo-caption {
	left: auto;
	right: 20px;
	bottom: 45px;
	font-size: 10px
}

@media(max-width:580px) {
	.home h1 {
		font-size: clamp(40px, 12.5vw, 53px)
	}

	.visual-note {
		min-width: 280px
	}

	.photo-caption {
		bottom: 45px;
		right: 15px;
		font-size: 9px
	}
}

@media(max-height:650px) and (min-width:901px) {
	.view {
		overflow-y: auto;
		scrollbar-width: thin
	}

	.home {
		grid-template-rows: minmax(400px, 1fr) auto
	}

	.service,
	.booking {
		align-items: start
	}

	.photo-wrap {
		height: 390px
	}
}

@media(prefers-reduced-motion:reduce) {

	*,
	*::before,
	*::after {
		animation: none !important;
		transition: none !important;
		scroll-behavior: auto !important
	}
}
