:root {
	--sage: #b3bd96;
	--sage-dark: #8f9b72;
	--cream: #f4ede0;
	--paper: #fbf7ef;
	--wine: #7a1a1e;
	--ink: #3b2c21;
	--muted: #6f6253;
	--line: #d9cfbd;
	--serif: 'Instrument Serif', Georgia, serif;
	--script: 'Pinyon Script', cursive;
	--sans: 'Instrument Sans', system-ui, -apple-system, sans-serif;
}

* {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
}

body {
	margin: 0;
	overflow-x: hidden;
	min-height: 100vh;
	color: var(--ink);
	font-family: var(--sans);
	background-color: var(--sage);
	background-image: radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 55%, rgba(60, 45, 25, 0.25) 100%),
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' seed='3'/%3E%3CfeColorMatrix values='0 0 0 0 0.35 0 0 0 0 0.32 0 0 0 0 0.25 0 0 0 0.22 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.wrap {
	overflow-x: clip;
	max-width: 560px;
	margin: 0 auto;
	padding: 28px 16px 40px;
}

/* ---------- topo ---------- */
.hero {
	text-align: center;
}

.polaroids {
	position: relative;
	height: 170px;
	margin: 6px auto 10px;
	max-width: 380px;
}

.pol {
	position: absolute;
	top: 0;
	width: 34%;
	margin: 0;
	padding: 8px 8px 0;
	background: var(--paper);
	box-shadow: 0 10px 24px rgba(40, 25, 10, 0.28);
	animation: drop 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.pol img {
	display: block;
	width: 100%;
	height: 104px;
	object-fit: cover;
}

.pol figcaption {
	font-family: var(--script);
	font-size: 22px;
	line-height: 34px;
	height: 34px;
}

.p1 {
	left: 0;
	transform: rotate(-7deg);
	animation-delay: 0.05s;
}
.p1 img {
	transform: scale(1.12);
}
.p2 {
	left: 33%;
	top: 10px;
	transform: rotate(3deg);
	z-index: 2;
	animation-delay: 0.18s;
}
.p3 {
	right: 0;
	transform: rotate(8deg);
	animation-delay: 0.31s;
}

@keyframes drop {
	from {
		opacity: 0;
		translate: 0 -24px;
		scale: 1.15;
	}
}

.heart {
	width: 64px;
	mix-blend-mode: multiply;
	margin-top: 6px;
}

h1 {
	margin: 0;
	font-weight: normal;
	line-height: 1;
}

h1 .script {
	display: block;
	font-family: var(--script);
	font-size: clamp(54px, 15vw, 76px);
	line-height: 1.25;
	color: var(--ink);
}

h1 .year {
	display: block;
	font-family: var(--serif);
	font-size: clamp(56px, 16vw, 78px);
	letter-spacing: 0.08em;
	color: var(--wine);
	margin-top: -6px;
}

.when {
	font-family: var(--serif);
	font-style: italic;
	font-size: 24px;
	margin: 8px 0 2px;
}

.where {
	font-family: var(--serif);
	font-size: 14px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	margin: 0;
	opacity: 0.85;
}

/* ---------- cartão ---------- */
.card {
	position: relative;
	margin-top: 40px;
	background: var(--cream);
	padding: 34px 22px 26px;
	border-radius: 6px;
	box-shadow: 0 20px 44px rgba(40, 25, 10, 0.28);
}

.card::before {
	content: '';
	position: absolute;
	inset: 8px;
	border: 1.5px solid rgba(120, 100, 70, 0.35);
	border-radius: 3px;
	pointer-events: none;
}

.stamp {
	position: absolute;
	top: -22px;
	right: 10px;
	width: 96px;
	height: 96px;
	color: var(--wine);
	transform: rotate(-12deg);
	mix-blend-mode: multiply;
	opacity: 0.9;
	animation: stamp 0.5s 0.6s cubic-bezier(0.3, 1.6, 0.5, 1) both;
}

@keyframes stamp {
	from {
		opacity: 0;
		scale: 2.2;
	}
}

.stamp text {
	fill: currentColor;
	font-family: var(--serif);
}
.st-top {
	font-size: 19px;
	letter-spacing: 3px;
}
.st-bot {
	font-size: 15px;
	letter-spacing: 2px;
}
.st-mid {
	font-size: 22px;
}
.st-val {
	font-family: var(--serif);
	font-style: italic;
	font-size: 36px;
}

h2 {
	font-family: var(--serif);
	font-weight: normal;
	font-size: 34px;
	line-height: 1.05;
	margin: 0 0 6px;
	padding-right: 80px;
}

.lead {
	color: var(--muted);
	font-size: 15.5px;
	line-height: 1.5;
	margin: 0 0 18px;
}

/* vagas */
.vagas {
	margin: 0 0 22px;
	padding-right: 84px;
}
.vagas-txt {
	font-size: 14px;
	color: var(--muted);
}
.vagas-txt strong {
	font-family: var(--serif);
	font-size: 26px;
	color: var(--wine);
	font-weight: normal;
}
.bar {
	height: 6px;
	background: rgba(59, 44, 33, 0.12);
	border-radius: 99px;
	margin-top: 6px;
	overflow: hidden;
}
.bar span {
	display: block;
	height: 100%;
	width: 0;
	background: var(--wine);
	border-radius: 99px;
	transition: width 1s cubic-bezier(0.22, 1, 0.36, 1);
}

/* formulário */
fieldset {
	border: 0;
	padding: 0;
	margin: 0 0 14px;
}

legend {
	padding: 0;
	margin-bottom: 2px;
}

legend .script {
	font-family: var(--script);
	font-size: 40px;
	color: var(--wine);
	line-height: 1.2;
}

label {
	display: block;
	font-size: 14px;
	font-weight: 500;
	margin-bottom: 14px;
}

input {
	display: block;
	width: 100%;
	margin-top: 6px;
	padding: 13px 14px;
	font: 400 16px var(--sans);
	color: var(--ink);
	background: var(--paper);
	border: 1.5px solid var(--line);
	border-radius: 8px;
	outline: none;
	transition: border-color 0.15s, box-shadow 0.15s;
}
input:focus {
	border-color: var(--sage-dark);
	box-shadow: 0 0 0 4px rgba(143, 155, 114, 0.25);
}
input::placeholder {
	color: #b3a796;
}
label.invalid input {
	border-color: var(--wine);
}
.err {
	display: block;
	min-height: 0;
	color: var(--wine);
	font-size: 13px;
	font-weight: 400;
	margin-top: 4px;
}
.err:empty {
	display: none;
}

.hp {
	position: absolute;
	left: -9999px;
}

.btn {
	display: block;
	width: 100%;
	margin-top: 8px;
	padding: 15px 18px;
	font: 600 16px var(--sans);
	letter-spacing: 0.02em;
	color: var(--cream);
	background: var(--wine);
	border: 0;
	border-radius: 10px;
	cursor: pointer;
	box-shadow: 0 8px 18px rgba(122, 26, 30, 0.28);
	transition: transform 0.1s, opacity 0.2s;
}
.btn:active {
	transform: translateY(1px);
}
.btn:disabled {
	opacity: 0.6;
	cursor: wait;
}
.btn.ghost {
	background: transparent;
	color: var(--ink);
	box-shadow: none;
	border: 1.5px solid var(--line);
}

/* conferência */
.resumo {
	margin: 14px 0 16px;
	display: grid;
	gap: 12px;
}
.resumo div {
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: 8px;
	padding: 10px 14px;
}
.resumo dt {
	font-family: var(--script);
	font-size: 28px;
	color: var(--wine);
	line-height: 1.2;
}
.resumo dd {
	margin: 0;
	font-size: 16px;
	line-height: 1.45;
}
.resumo dd span {
	color: var(--muted);
	font-size: 14.5px;
}

.note {
	font-size: 14px;
	color: var(--muted);
	line-height: 1.5;
}
.form-err {
	color: var(--wine);
	font-size: 14px;
}

/* pagamento */
#pay {
	text-align: center;
}
#pay h2 {
	padding-right: 0;
}
.ok-script {
	font-family: var(--script);
	font-size: 46px;
	color: var(--wine);
	margin: 0;
	line-height: 1.2;
}
.codigo {
	font-size: 14px;
	color: var(--muted);
	margin: 4px 0 14px;
}
.codigo strong {
	color: var(--ink);
	letter-spacing: 0.06em;
}
.valor {
	font-family: var(--serif);
	font-size: 54px;
	line-height: 1;
	color: var(--wine);
	margin: 4px 0 14px;
}
.qr {
	width: 230px;
	max-width: 80%;
	margin: 0 auto 12px;
	padding: 10px;
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: 10px;
}
.qr svg {
	display: block;
	width: 100%;
	height: auto;
}
.chave {
	margin: 16px 0 6px;
	font-size: 13px;
	color: var(--muted);
}
.chave-btn {
	display: block;
	margin: 6px auto 0;
	font: 500 17px var(--sans);
	color: var(--ink);
	background: var(--paper);
	border: 1.5px dashed var(--sage-dark);
	border-radius: 8px;
	padding: 10px 16px;
	cursor: pointer;
}
.chave-btn em {
	font-style: normal;
	font-size: 12px;
	color: var(--wine);
	margin-left: 6px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

#full {
	text-align: center;
}

footer {
	text-align: center;
	margin-top: 34px;
}
footer img {
	width: 120px;
	mix-blend-mode: multiply;
	opacity: 0.9;
}

.step {
	animation: fade 0.45s cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes fade {
	from {
		opacity: 0;
		translate: 0 10px;
	}
}

.toast {
	position: fixed;
	left: 50%;
	bottom: 24px;
	translate: -50% 20px;
	background: var(--ink);
	color: var(--cream);
	font-size: 14px;
	padding: 10px 16px;
	border-radius: 99px;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.2s, translate 0.2s;
}
.toast.show {
	opacity: 1;
	translate: -50% 0;
}

@media (max-width: 380px) {
	.pol img {
		height: 86px;
	}
	.polaroids {
		height: 150px;
	}
}

@media (prefers-reduced-motion: reduce) {
	* {
		animation: none !important;
		transition: none !important;
	}
}
