/* Public template visuals belong to the Studio plugin, not the theme. */
:root { --tw-serif: "Cormorant Garamond", Georgia, serif; --tw-sans: "DM Sans", Arial, sans-serif; --tw-muted: #625b58; --tw-rose: #f3e6e0; --tw-rose-deep: #aa7169; --tw-line: rgba(47, 39, 36, .16); }
.tw-shell { width: min(1120px, calc(100% - 44px)); margin: 0 auto; }
.tw-button { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 0 20px; border: 1px solid currentColor; color: #292221; font: 800 10px/1 var(--tw-sans); letter-spacing: .13em; text-decoration: none; text-transform: uppercase; }
.tw-kicker, .tw-section-kicker { font: 800 10px/1.25 var(--tw-sans); letter-spacing: .16em; text-transform: uppercase; }

.tw-demo { --demo-bg: #f5e4dc; --demo-accent: #aa7169; --demo-ink: #292221; background: #fffdfb; color: var(--demo-ink); }
.tw-demo--garden { --demo-bg: #e3eadc; --demo-accent: #567662; --demo-ink: #28362a; }
.tw-demo--modern { --demo-bg: #e2dcef; --demo-accent: #765d9c; --demo-ink: #2c2439; }
.tw-demo__utility { padding: 12px 0; background: #1e1918; color: rgba(255,255,255,.78); font-size: 11px; }
.tw-demo__utility .tw-shell { display: flex; justify-content: space-between; gap: 16px; }
.tw-demo__utility a { color: #fff; text-decoration: none; }
.tw-demo__hero { position: relative; min-height: min(770px, 92vh); display: grid; place-items: center; overflow: hidden; background: linear-gradient(145deg, color-mix(in srgb, var(--demo-bg) 80%, #fff 20%), var(--demo-bg)); }
.tw-demo__hero::before, .tw-demo__hero::after { content: ""; position: absolute; border: 1px solid rgba(255,255,255,.7); border-radius: 50%; }
.tw-demo__hero::before { width: 760px; height: 760px; left: -430px; bottom: -430px; }
.tw-demo__hero::after { width: 610px; height: 610px; right: -390px; top: -350px; }
.tw-demo__nav { position: absolute; top: 28px; left: 50%; display: flex; justify-content: space-between; width: min(1120px, calc(100% - 44px)); transform: translateX(-50%); font-size: 10px; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }
.tw-demo__hero-content { position: relative; z-index: 1; max-width: 900px; padding: 88px 20px; text-align: center; }
.tw-demo__hero-content > p:first-child { margin: 0; color: var(--demo-accent); font-size: 11px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }
.tw-demo__hero h1 { margin: 28px 0 0; font-family: var(--tw-serif); font-size: clamp(4.8rem, 11vw, 11rem); font-weight: 500; letter-spacing: -.09em; line-height: .74; }
.tw-demo__hero h2 { margin: 28px 0 0; font-family: var(--tw-serif); font-size: clamp(1.9rem, 3.6vw, 3.5rem); font-weight: 400; font-style: italic; line-height: 1; }
.tw-demo__scroll { display: inline-block; margin-top: 46px; color: var(--demo-ink); font-size: 10px; font-weight: 800; letter-spacing: .16em; text-decoration: none; text-transform: uppercase; }
.tw-demo__hero-mark { position: absolute; z-index: 0; width: 52vw; max-width: 530px; aspect-ratio: 1; border: 1px solid rgba(255,255,255,.65); border-radius: 50%; }
.tw-demo__story { padding: clamp(66px, 9vw, 115px) 0; background: #fffdfb; }
.tw-demo__story-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .75fr); gap: clamp(40px, 8vw, 130px); align-items: start; }
.tw-demo__story h2 { margin: 0; font-family: var(--tw-serif); font-size: clamp(3rem, 5.3vw, 5.4rem); font-weight: 500; letter-spacing: -.06em; line-height: .9; }
.tw-demo__story-copy { max-width: 470px; padding-top: 25px; color: #625b58; font-size: 16px; line-height: 1.75; }
.tw-demo__details { padding: clamp(65px, 9vw, 115px) 0; background: var(--demo-bg); text-align: center; }
.tw-demo__details h2 { max-width: 700px; margin: 0 auto; font-family: var(--tw-serif); font-size: clamp(3rem, 5vw, 5.1rem); font-weight: 500; letter-spacing: -.06em; line-height: .9; }
.tw-demo__schedule { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 1px; margin-top: 48px; background: rgba(255,255,255,.65); }
.tw-demo__schedule article { padding: 32px 24px; background: rgba(255,253,251,.52); }
.tw-demo__schedule span { color: var(--demo-accent); font-size: 10px; font-weight: 800; letter-spacing: .13em; }
.tw-demo__schedule h3 { margin: 20px 0 0; font-family: var(--tw-serif); font-size: 32px; font-weight: 600; line-height: 1; }
.tw-demo__schedule p { margin: 11px 0 0; font-size: 13px; }
.tw-demo__rsvp { padding: clamp(66px, 9vw, 110px) 0; background: #1f1a18; color: #fff; text-align: center; }
.tw-demo__rsvp h2 { max-width: 820px; margin: 0 auto; font-family: var(--tw-serif); font-size: clamp(3rem, 5.5vw, 5.5rem); font-weight: 500; letter-spacing: -.06em; line-height: .9; }
.tw-demo__rsvp .tw-kicker { color: rgba(255,255,255,.66); }
.tw-demo__buttons { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 36px; }
.tw-demo__buttons span { padding: 13px 18px; border: 1px solid rgba(255,255,255,.52); font-size: 10px; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }
.tw-demo__conversion { padding: clamp(64px, 9vw, 110px) 0; background: #fffdfb; text-align: center; }
.tw-demo__conversion h2 { max-width: 760px; margin: 0 auto; font-family: var(--tw-serif); font-size: clamp(3rem, 5.5vw, 5.5rem); font-weight: 500; letter-spacing: -.06em; line-height: .9; }
.tw-demo__conversion .tw-button { margin-top: 30px; }

/* Get started page */
.tw-get-started__hero { padding: clamp(80px, 11vw, 142px) 0 clamp(66px, 8vw, 95px); background: linear-gradient(135deg, #f1e1da, #fcfaf7); text-align: center; }
.tw-get-started__hero h1 { max-width: 780px; margin: 0 auto; font-family: var(--tw-serif); font-size: clamp(3.7rem, 6.5vw, 6.8rem); font-weight: 500; letter-spacing: -.06em; line-height: .86; }
.tw-get-started__hero > .tw-shell > p:last-of-type { max-width: 620px; margin: 25px auto 0; color: var(--tw-muted); font-size: 16px; line-height: 1.72; }
.tw-get-started__selected { display: inline-flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 9px; margin-top: 28px; padding: 12px 16px; border: 1px solid var(--tw-line); background: rgba(255,255,255,.68); font-size: 12px; }
.tw-get-started__selected span { color: var(--tw-muted); }
.tw-get-started__selected a { color: var(--tw-rose-deep); font-weight: 700; }
.tw-start-choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 20px; }
.tw-start-choice { min-height: 375px; padding: clamp(30px, 4vw, 52px); border: 1px solid var(--tw-line); background: linear-gradient(145deg, #f5ebe6, #e3c9bf); }
.tw-start-choice--consult { background: linear-gradient(145deg, #f5f1eb, #ddd2c6); }
.tw-start-choice h2 { max-width: 480px; margin: 0; font-family: var(--tw-serif); font-size: clamp(3rem, 4.5vw, 4.7rem); font-weight: 500; letter-spacing: -.055em; line-height: .88; }
.tw-start-choice > p:last-of-type { max-width: 465px; margin: 20px 0 0; font-size: 15px; line-height: 1.72; }
.tw-start-choice .tw-button { margin-top: 28px; }
.tw-start-choice small { display: block; max-width: 350px; margin-top: 15px; color: var(--tw-muted); font-size: 11px; line-height: 1.55; }
.tw-start-choice__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 27px; }
.tw-start-choice__actions .tw-button { margin-top: 0; }
.tw-text-link { display: block; width: 100%; margin-top: 2px; color: var(--tw-rose-deep); font-size: 12px; font-weight: 700; }
.tw-get-started__hosting { display: grid; grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); gap: clamp(38px, 7vw, 100px); align-items: start; }
.tw-get-started__hosting h2 { font-size: clamp(3rem, 4.8vw, 4.8rem); }
.tw-get-started__hosting-options { display: grid; gap: 12px; }
.tw-get-started__hosting-options article { padding: 22px 23px; border: 1px solid var(--tw-line); background: rgba(255,255,255,.64); }
.tw-get-started__hosting-options h3 { margin: 0; font-family: var(--tw-serif); font-size: 27px; font-weight: 600; line-height: 1; }
.tw-get-started__hosting-options p { margin: 10px 0 0; }
.tw-get-started__hosting-options code { color: var(--tw-rose-deep); font-family: var(--tw-sans); font-size: 12px; font-weight: 700; }
.tw-get-started__hosting-options span { display: block; margin-top: 7px; color: var(--tw-muted); font-size: 13px; line-height: 1.6; }
.tw-get-started__what { padding: clamp(66px, 9vw, 112px) 0; background: #fffdfb; text-align: center; }
.tw-get-started__what h2 { max-width: 760px; margin: 0 auto; font-family: var(--tw-serif); font-size: clamp(3rem, 5.4vw, 5.5rem); font-weight: 500; letter-spacing: -.06em; line-height: .9; }
.tw-get-started__what ul { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; max-width: 910px; margin: 40px auto 0; padding: 0; list-style: none; text-align: left; }
.tw-get-started__what li { padding: 19px 21px 19px 46px; border: 1px solid var(--tw-line); background: #fff; font-size: 14px; line-height: 1.6; }
.tw-get-started__what li::before { content: "✦"; position: absolute; margin-left: -24px; color: var(--tw-rose); }

/* Back-to-top v1.7: semantic anchor fallback works even when JavaScript is delayed. */
a.tw-back-to-top { text-decoration: none; }

@media (max-width: 900px) {
	.tw-websites-hero__grid, .tw-websites-hosting__grid, .tw-template-gallery__item, .tw-get-started__hosting { grid-template-columns: 1fr; }
	.tw-websites-hero--showcase { text-align: center; }
	.tw-websites-hero--showcase .tw-websites-hero__text { margin-right: auto; margin-left: auto; }
	.tw-websites-hero--showcase .tw-websites-hero__actions { justify-content: center; }
	.tw-service-preview { min-height: 360px; max-width: 470px; width: 100%; margin: 0 auto; }
	.tw-template-gallery__item:nth-child(even) .tw-template-gallery__art { order: 0; }
	.tw-template-gallery__copy { max-width: none; }
}
@media (max-width: 767px) {
	.tw-websites-paths__grid, .tw-template-cards, .tw-start-choice-grid, .tw-get-started__what ul, .tw-demo__schedule { grid-template-columns: 1fr; }
	.tw-template-card__preview { min-height: 230px; }
	.tw-template-gallery__art { min-height: 350px; padding: 30px; }
	.tw-demo__utility .tw-shell, .tw-demo__nav { font-size: 8px; }
	.tw-demo__nav { top: 19px; }
	.tw-demo__nav span:last-child { display: none; }
	.tw-demo__hero { min-height: 600px; }
	.tw-demo__story-grid { grid-template-columns: 1fr; gap: 12px; }
	.tw-demo__story-copy { padding-top: 0; }
	.tw-websites-hosting__intro, .tw-get-started__hosting { text-align: center; }
	.tw-websites-hosting__intro p:last-child { margin-right: auto; margin-left: auto; }
	.tw-hosting-option { padding-left: 65px; text-align: left; }
}

/* Version 1.7.1: high-contrast guest-information panel in the public template previews.
   Kadence heading colors can otherwise override this section on some installations. */
.tw-demo .tw-demo__rsvp {
	position: relative;
	isolation: isolate;
	background:
		radial-gradient(circle at 14% 15%, rgba(196, 145, 130, .16), transparent 28%),
		radial-gradient(circle at 88% 88%, rgba(255, 255, 255, .08), transparent 30%),
		#211a18;
	color: #fffdf9 !important;
}

.tw-demo .tw-demo__rsvp::before,
.tw-demo .tw-demo__rsvp::after {
	content: "";
	position: absolute;
	z-index: -1;
	width: 270px;
	aspect-ratio: 1;
	border: 1px solid rgba(255, 255, 255, .14);
	border-radius: 50%;
}

.tw-demo .tw-demo__rsvp::before {
	left: -145px;
	top: -145px;
}

.tw-demo .tw-demo__rsvp::after {
	right: -165px;
	bottom: -165px;
}

.tw-demo .tw-demo__rsvp .tw-kicker {
	margin-bottom: 18px;
	color: #efc8bb !important;
	font-size: 10px;
	font-weight: 800;
	letter-spacing: .18em;
	text-transform: uppercase;
}

.tw-demo .tw-demo__rsvp h2,
.tw-demo .tw-demo__rsvp h2 a {
	max-width: 830px;
	margin: 0 auto;
	color: #fffdf9 !important;
	font-family: var(--tw-serif);
	font-size: clamp(3rem, 5.35vw, 5.4rem);
	font-weight: 500;
	letter-spacing: -.055em;
	line-height: .92;
	text-shadow: none;
}

.tw-demo .tw-demo__rsvp-intro {
	max-width: 570px;
	margin: 23px auto 0;
	color: rgba(255, 253, 249, .80) !important;
	font-size: 16px;
	line-height: 1.7;
}

.tw-demo .tw-demo__buttons {
	gap: 12px;
	margin-top: 34px;
}

.tw-demo .tw-demo__buttons span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 14px 20px;
	border: 1px solid rgba(255, 253, 249, .72);
	background: transparent;
	color: #fffdf9 !important;
	font-size: 10px;
	font-weight: 800;
	letter-spacing: .12em;
	line-height: 1.2;
	text-transform: uppercase;
}

.tw-demo .tw-demo__buttons span:first-child {
	border-color: #fffdf9;
	background: #fffdf9;
	color: #2a211f !important;
}

@media (max-width: 767px) {
	.tw-demo .tw-demo__rsvp {
		padding-right: 20px;
		padding-left: 20px;
	}
	.tw-demo .tw-demo__rsvp h2 {
		font-size: clamp(2.8rem, 13vw, 4.15rem);
	}
	.tw-demo .tw-demo__rsvp-intro {
		font-size: 15px;
	}
	.tw-demo .tw-demo__buttons {
		flex-direction: column;
		align-items: stretch;
		max-width: 320px;
		margin-right: auto;
		margin-left: auto;
	}
}

/* --------------------------------------------------------------------------
   The Editorial — first interactive wedding website template (v1.8.0)
   -------------------------------------------------------------------------- */
.tw-invite {
	--invite-ink: #24201e;
	--invite-muted: #756b66;
	--invite-paper: #fcfaf7;
	--invite-cream: #f4ebe4;
	--invite-line: rgba(43, 33, 30, .17);
	--invite-accent: #b98c7d;
	--invite-night: #1e1917;
	--invite-shell: min(1180px, calc(100% - 48px));
	position: relative;
	background: var(--invite-paper);
	color: var(--invite-ink);
	overflow: clip;
}
.tw-invite *, .tw-invite *::before, .tw-invite *::after { box-sizing: border-box; }
.tw-invite__shell { width: var(--invite-shell); margin: 0 auto; }
.tw-invite__utility { position: relative; z-index: 30; padding: 12px 0; background: var(--invite-night); color: rgba(255,255,255,.72); font-family: var(--tw-sans); font-size: 10px; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.tw-invite__utility > .tw-invite__shell { display: flex; align-items: center; justify-content: space-between; gap: 15px; }
.tw-invite__utility a { color: #fff; text-decoration: none; }
.tw-invite__eyebrow { margin: 0 0 20px; color: rgba(255,255,255,.66); font-family: var(--tw-sans); font-size: 10px; font-weight: 800; letter-spacing: .18em; line-height: 1.2; text-transform: uppercase; }
.tw-invite__eyebrow--dark { color: var(--invite-accent); }
.tw-invite__hero { position: relative; min-height: min(800px, calc(100svh - 42px)); display: grid; place-items: center; isolation: isolate; overflow: hidden; background: #59483f; }
.tw-invite__hero-media { position: absolute; inset: 0; z-index: -3; overflow: hidden; background:
	linear-gradient(120deg, rgba(31,24,22,.18), rgba(158,118,103,.24)),
	radial-gradient(circle at 74% 23%, rgba(244,214,194,.45), transparent 20%),
	linear-gradient(145deg, #5e4e47 0%, #998074 45%, #2a2522 100%); background-position: center; background-size: cover; }
.tw-invite__hero-media::before { content: ""; position: absolute; inset: -10%; background:
	repeating-linear-gradient(110deg, rgba(255,255,255,.03) 0 1px, transparent 1px 10px),
	radial-gradient(circle at 20% 12%, rgba(255,255,255,.14), transparent 0 1px, transparent 2px 100%); opacity: .78; mix-blend-mode: screen; animation: tw-invite-film-grain 2.8s steps(2) infinite; }
.tw-invite__video { width: 100%; height: 100%; object-fit: cover; filter: saturate(.76) contrast(.98) brightness(.76); }
.tw-invite__hero-overlay { position: absolute; inset: 0; z-index: -2; background: linear-gradient(180deg, rgba(20,16,15,.54) 0%, rgba(20,16,15,.15) 36%, rgba(20,16,15,.60) 100%); }
.tw-invite__nav { position: absolute; top: 29px; left: 50%; z-index: 2; display: flex; justify-content: center; gap: clamp(16px, 3.2vw, 43px); width: var(--invite-shell); transform: translateX(-50%); }
.tw-invite__nav a { color: rgba(255,255,255,.92); font-family: var(--tw-sans); font-size: 10px; font-weight: 800; letter-spacing: .13em; text-decoration: none; text-transform: uppercase; }
.tw-invite__hero-content { position: relative; z-index: 1; max-width: 970px; padding: 150px 22px 118px; color: #fffdfb; text-align: center; }
.tw-invite__hero-content .tw-invite__eyebrow { margin-bottom: 24px; color: rgba(255,255,255,.8); }
.tw-invite__hero h1 { margin: 0; color: #fffdfb; font-family: var(--tw-serif); font-size: clamp(4.6rem, 10.7vw, 10rem); font-weight: 500; letter-spacing: -.09em; line-height: .76; text-shadow: 0 2px 32px rgba(0,0,0,.22); }
.tw-invite__hero-subtitle { margin: 27px 0 0; color: #fffdfb; font-family: var(--tw-serif); font-size: clamp(1.7rem, 3.3vw, 3.3rem); font-style: italic; font-weight: 400; line-height: 1; }
.tw-invite__location { margin: 17px 0 0; color: rgba(255,255,255,.78); font-family: var(--tw-sans); font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.tw-invite__hero-actions, .tw-invite__guest-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 40px; }
.tw-invite__button { display: inline-flex; align-items: center; justify-content: center; min-height: 50px; padding: 14px 20px; border: 1px solid transparent; border-radius: 0; background: transparent; color: inherit; cursor: pointer; font-family: var(--tw-sans); font-size: 10px; font-weight: 800; letter-spacing: .12em; line-height: 1.2; text-align: center; text-decoration: none; text-transform: uppercase; transition: transform .2s ease, background-color .2s ease, border-color .2s ease, color .2s ease; }
.tw-invite__button:hover { transform: translateY(-2px); }
.tw-invite__button--light { border-color: #fffdfb; background: #fffdfb; color: #261f1c !important; }
.tw-invite__button--ghost { border-color: rgba(255,255,255,.7); background: rgba(31,25,23,.10); color: #fffdfb !important; }
.tw-invite__button--dark { border-color: var(--invite-night); background: var(--invite-night); color: #fffdfb !important; }
.tw-invite__hero-mark { position: absolute; right: -7vw; bottom: -13vw; z-index: -1; width: min(51vw, 630px); aspect-ratio: 1; border: 1px solid rgba(255,255,255,.32); border-radius: 50%; }
.tw-invite__hero-mark span { position: absolute; display: block; border: 1px solid rgba(255,255,255,.19); border-radius: 50%; }
.tw-invite__hero-mark span:nth-child(1) { inset: 12%; }
.tw-invite__hero-mark span:nth-child(2) { inset: 25%; }
.tw-invite__hero-mark span:nth-child(3) { inset: 39%; }
.tw-invite__scroll-prompt { position: absolute; right: 25px; bottom: 22px; z-index: 1; display: inline-flex; align-items: center; gap: 9px; color: rgba(255,255,255,.76); font-family: var(--tw-sans); font-size: 9px; font-weight: 800; letter-spacing: .13em; text-decoration: none; text-transform: uppercase; }
.tw-invite__scroll-prompt span { display: grid; width: 22px; height: 22px; place-items: center; border: 1px solid rgba(255,255,255,.55); border-radius: 50%; font-size: 14px; }
.tw-invite__story { padding: clamp(74px, 10vw, 138px) 0; background: var(--invite-paper); }
.tw-invite__story-grid { display: grid; grid-template-columns: minmax(0, 1.03fr) minmax(0, .77fr); gap: clamp(40px, 9vw, 150px); align-items: start; }
.tw-invite__story h2, .tw-invite__section-heading h2, .tw-invite__guest-guide h2, .tw-invite__gallery h2, .tw-invite__rsvp-section h2, .tw-invite__template-cta h2, .tw-invite__modal-dialog h2 { margin: 0; color: var(--invite-ink) !important; font-family: var(--tw-serif); font-size: clamp(3.1rem, 5.45vw, 5.7rem); font-weight: 500; letter-spacing: -.06em; line-height: .88; }
.tw-invite__story-copy { max-width: 465px; padding-top: 23px; color: var(--invite-muted); font-size: 16px; line-height: 1.76; }
.tw-invite__story-copy p { margin: 0 0 16px; }
.tw-invite__text-link { display: inline-flex; align-items: center; gap: 12px; margin-top: 16px; color: var(--invite-ink); font-family: var(--tw-sans); font-size: 11px; font-weight: 800; letter-spacing: .1em; text-decoration: none; text-transform: uppercase; }
.tw-invite__text-link span { color: var(--invite-accent); font-size: 18px; }
.tw-invite__weekend { padding: clamp(68px, 9vw, 122px) 0; background: var(--invite-cream); }
.tw-invite__section-heading { max-width: 780px; margin: 0 auto; text-align: center; }
.tw-invite__timeline { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 1px; margin-top: 52px; background: rgba(74,52,43,.16); }
.tw-invite__timeline article { min-height: 245px; padding: 32px 29px; background: rgba(255,253,250,.62); }
.tw-invite__timeline article.is-featured { background: var(--invite-night); color: #fffdfb; }
.tw-invite__timeline-date { margin: 0; color: var(--invite-accent); font-family: var(--tw-sans); font-size: 10px; font-weight: 800; letter-spacing: .12em; line-height: 1.4; text-transform: uppercase; }
.tw-invite__timeline h3 { margin: 62px 0 0; color: inherit !important; font-family: var(--tw-serif); font-size: clamp(2rem, 3vw, 2.8rem); font-weight: 500; letter-spacing: -.045em; line-height: .95; }
.tw-invite__timeline article > p:last-child { margin: 13px 0 0; color: inherit; font-size: 14px; line-height: 1.65; opacity: .75; }
.tw-invite__guest-guide { position: relative; isolation: isolate; padding: clamp(73px, 10vw, 135px) 0; overflow: hidden; background:
	radial-gradient(circle at 8% 10%, rgba(189,140,125,.20), transparent 25%),
	radial-gradient(circle at 95% 88%, rgba(255,255,255,.08), transparent 26%),
	var(--invite-night); color: #fffdfb; }
.tw-invite__guest-guide::before, .tw-invite__guest-guide::after { content: ""; position: absolute; z-index: -1; width: 360px; aspect-ratio: 1; border: 1px solid rgba(255,255,255,.13); border-radius: 50%; }
.tw-invite__guest-guide::before { top: -210px; left: -180px; }
.tw-invite__guest-guide::after { right: -190px; bottom: -210px; }
.tw-invite__guest-guide-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(42px, 8vw, 128px); align-items: center; }
.tw-invite__guest-guide h2, .tw-invite__rsvp-section h2 { color: #fffdfb !important; }
.tw-invite__guest-guide > .tw-invite__shell > div:first-child > p:not(.tw-invite__eyebrow) { max-width: 550px; margin: 22px 0 0; color: rgba(255,253,251,.8); font-size: 16px; line-height: 1.7; }
.tw-invite__guest-actions { justify-content: flex-start; }
.tw-invite__guest-cards { display: grid; gap: 1px; background: rgba(255,255,255,.22); }
.tw-invite__guest-cards article { min-height: 136px; padding: 24px; background: rgba(255,255,255,.05); }
.tw-invite__guest-cards span { color: #efc8bb; font-family: var(--tw-sans); font-size: 10px; font-weight: 800; letter-spacing: .13em; }
.tw-invite__guest-cards h3 { margin: 12px 0 0; color: #fffdfb !important; font-family: var(--tw-serif); font-size: 27px; font-weight: 500; line-height: 1; }
.tw-invite__guest-cards p { margin: 9px 0 0; color: rgba(255,253,251,.72); font-size: 13px; line-height: 1.63; }
.tw-invite__gallery { padding: clamp(76px, 10vw, 140px) 0; background: var(--invite-paper); }
.tw-invite__gallery-intro { max-width: 940px; margin: 0 auto 45px; text-align: center; }
.tw-invite__gallery-intro h2 { max-width: 820px; margin: 0 auto; }
.tw-invite__gallery-grid { display: grid; grid-template-columns: 1.07fr .76fr .88fr 1.12fr; min-height: clamp(310px, 42vw, 570px); gap: 8px; padding: 0 22px; }
.tw-invite__gallery-card { position: relative; overflow: hidden; background-size: cover; background-position: center; }
.tw-invite__gallery-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(145deg, rgba(255,255,255,.14), rgba(20,15,14,.18)); }
.tw-invite__gallery-card--one { background: linear-gradient(145deg, #bea18e, #72594e); }
.tw-invite__gallery-card--two { margin-top: 63px; margin-bottom: 26px; background: linear-gradient(145deg, #6f5c58, #d2ae9b); }
.tw-invite__gallery-card--three { margin-top: 22px; margin-bottom: 70px; background: linear-gradient(145deg, #d0b4a9, #3e3633); }
.tw-invite__gallery-card--four { margin-top: 45px; background: linear-gradient(145deg, #a37d71, #ddd1c5); }
.tw-invite__rsvp-section { padding: clamp(74px, 10vw, 132px) 0; background: #191513; color: #fffdfb; }
.tw-invite__rsvp-shell { display: grid; grid-template-columns: minmax(0, 1.1fr) auto; gap: 40px; align-items: end; }
.tw-invite__rsvp-section p:not(.tw-invite__eyebrow) { max-width: 580px; margin: 23px 0 0; color: rgba(255,253,251,.77); font-size: 15px; line-height: 1.7; }
.tw-invite__template-cta { padding: clamp(78px, 10vw, 136px) 0; background: #efe4dc; text-align: center; }
.tw-invite__template-cta h2 { max-width: 810px; margin: 0 auto; }
.tw-invite__template-cta .tw-invite__button { margin-top: 33px; }
.tw-invite__gate { position: fixed; inset: 0; z-index: 99999; display: grid; place-items: center; padding: 22px; overflow: hidden; background: #211a18; color: #fffdfb; transition: opacity .9s cubic-bezier(.2,.75,.2,1), visibility .9s cubic-bezier(.2,.75,.2,1); }
.tw-invite__gate::after { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 50% 40%, rgba(203,151,131,.16), transparent 37%), linear-gradient(145deg, rgba(255,255,255,.025), transparent 55%); }
.tw-invite__gate-art { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.tw-invite__gate-art span { position: absolute; display: block; border: 1px solid rgba(255,255,255,.09); border-radius: 50%; }
.tw-invite__gate-art span:nth-child(1) { width: min(72vw, 980px); aspect-ratio: 1; top: -38%; left: -20%; }
.tw-invite__gate-art span:nth-child(2) { width: min(48vw, 670px); aspect-ratio: 1; right: -10%; bottom: -30%; }
.tw-invite__gate-art span:nth-child(3) { width: min(26vw, 370px); aspect-ratio: 1; top: 9%; right: 10%; border-color: rgba(239,200,187,.16); }
.tw-invite__gate-copy { position: relative; z-index: 2; max-width: 800px; padding: 80px 20px; text-align: center; }
.tw-invite__gate h1 { margin: 0; color: #fffdfb; font-family: var(--tw-serif); font-size: clamp(4.7rem, 10vw, 9.8rem); font-weight: 500; letter-spacing: -.09em; line-height: .77; }
.tw-invite__gate-date { margin: 30px 0 0; color: rgba(255,253,251,.75); font-family: var(--tw-sans); font-size: 11px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }
.tw-invite__open-button { display: inline-flex; align-items: center; gap: 14px; margin-top: 42px; padding: 0 0 8px; border: 0; border-bottom: 1px solid rgba(255,255,255,.68); background: transparent; color: #fffdfb; cursor: pointer; font-family: var(--tw-sans); font-size: 10px; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }
.tw-invite__open-button svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-width: 1.5; }
.tw-invite__gate-note { margin: 20px 0 0; color: rgba(255,253,251,.48); font-size: 11px; }
.tw-invite.is-open .tw-invite__gate { visibility: hidden; opacity: 0; pointer-events: none; }
.tw-invite__sound { position: fixed; right: 22px; bottom: 23px; z-index: 400; display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 9px 13px; border: 1px solid rgba(255,255,255,.42); border-radius: 30px; background: rgba(27,20,19,.78); color: #fffdfb; backdrop-filter: blur(10px); cursor: pointer; font-family: var(--tw-sans); font-size: 9px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.tw-invite__sound svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
.tw-invite__sound-pause { display: none; }
.tw-invite__sound.is-playing .tw-invite__sound-play { display: none; }
.tw-invite__sound.is-playing .tw-invite__sound-pause { display: block; }
.tw-invite__modal[hidden] { display: none; }
.tw-invite__modal { position: fixed; inset: 0; z-index: 100000; display: grid; place-items: center; padding: 20px; }
.tw-invite__modal-backdrop { position: absolute; inset: 0; background: rgba(20,15,14,.66); backdrop-filter: blur(5px); }
.tw-invite__modal-dialog { position: relative; z-index: 1; width: min(100%, 540px); padding: clamp(31px, 5vw, 53px); background: #fffdfb; box-shadow: 0 24px 80px rgba(0,0,0,.24); }
.tw-invite__modal-dialog h2 { font-size: clamp(2.8rem, 6vw, 4.5rem); }
.tw-invite__modal-close { position: absolute; top: 14px; right: 16px; width: 38px; height: 38px; border: 0; background: transparent; color: var(--invite-ink); cursor: pointer; font-family: var(--tw-serif); font-size: 34px; line-height: 1; }
.tw-invite__rsvp-form { display: grid; gap: 15px; margin-top: 29px; }
.tw-invite__rsvp-form label { display: grid; gap: 8px; color: var(--invite-ink); font-family: var(--tw-sans); font-size: 10px; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }
.tw-invite__rsvp-form input, .tw-invite__rsvp-form select { width: 100%; min-height: 48px; padding: 12px 14px; border: 1px solid var(--invite-line); border-radius: 0; background: #fff; color: var(--invite-ink); font-family: var(--tw-sans); font-size: 14px; }
.tw-invite__rsvp-form .tw-invite__button { justify-self: start; margin-top: 5px; }
.tw-invite__form-note, .tw-invite__form-success { margin: 0; color: var(--invite-muted); font-size: 11px; line-height: 1.6; }
.tw-invite__form-success { color: #5a7868; font-weight: 700; }
.tw-invite--gated .tw-invite__hero-content, .tw-invite--gated .tw-invite__nav, .tw-invite--gated .tw-invite__scroll-prompt { animation: tw-invite-reveal .8s cubic-bezier(.2,.75,.2,1) 1s both; }
@keyframes tw-invite-reveal { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }
@keyframes tw-invite-film-grain { 0% { transform: translate3d(0,0,0); } 50% { transform: translate3d(1.5%, -1%,0); } 100% { transform: translate3d(-1%, 1.5%,0); } }
@media (max-width: 900px) {
	.tw-invite__story-grid, .tw-invite__guest-guide-grid, .tw-invite__rsvp-shell { grid-template-columns: 1fr; }
	.tw-invite__rsvp-shell { align-items: start; }
	.tw-invite__guest-cards { max-width: 600px; }
	.tw-invite__gallery-grid { grid-template-columns: repeat(2, 1fr); min-height: 620px; }
	.tw-invite__gallery-card--one, .tw-invite__gallery-card--two, .tw-invite__gallery-card--three, .tw-invite__gallery-card--four { margin: 0; }
	.tw-invite__gallery-card--two { margin-top: 36px; margin-bottom: 19px; }
	.tw-invite__gallery-card--three { margin-bottom: 30px; }
}
@media (max-width: 767px) {
	.tw-invite { --invite-shell: min(100% - 36px, 1180px); }
	.tw-invite__utility > .tw-invite__shell { font-size: 8px; }
	.tw-invite__utility span { display: none; }
	.tw-invite__hero { min-height: 660px; }
	.tw-invite__hero-content { padding-top: 138px; padding-bottom: 110px; }
	.tw-invite__hero h1, .tw-invite__gate h1 { font-size: clamp(4.1rem, 19vw, 6.2rem); line-height: .74; }
	.tw-invite__hero-subtitle { font-size: clamp(1.6rem, 7vw, 2.45rem); }
	.tw-invite__nav { top: 23px; justify-content: space-between; gap: 10px; }
	.tw-invite__nav a { font-size: 8px; }
	.tw-invite__hero-actions, .tw-invite__guest-actions { flex-direction: column; align-items: stretch; max-width: 286px; margin-right: auto; margin-left: auto; }
	.tw-invite__button { width: 100%; }
	.tw-invite__scroll-prompt { right: 18px; bottom: 17px; font-size: 8px; }
	.tw-invite__story h2, .tw-invite__section-heading h2, .tw-invite__guest-guide h2, .tw-invite__gallery h2, .tw-invite__rsvp-section h2, .tw-invite__template-cta h2 { font-size: clamp(2.9rem, 14vw, 4.25rem); }
	.tw-invite__story-copy { padding-top: 0; font-size: 15px; }
	.tw-invite__timeline { grid-template-columns: 1fr; }
	.tw-invite__timeline article { min-height: 0; padding: 26px 24px; }
	.tw-invite__timeline h3 { margin-top: 28px; }
	.tw-invite__gallery-grid { min-height: 520px; gap: 5px; padding: 0 12px; }
	.tw-invite__sound { right: 14px; bottom: 14px; }
	.tw-invite__gate-copy { padding: 60px 8px; }
	.tw-invite__gate-note { max-width: 250px; margin-right: auto; margin-left: auto; }
	.tw-invite__rsvp-shell .tw-invite__button { width: auto; }
}
@media (prefers-reduced-motion: reduce) {
	.tw-invite *, .tw-invite *::before, .tw-invite *::after { scroll-behavior: auto !important; animation: none !important; transition-duration: .01ms !important; }
	.tw-invite__video { display: none; }
}

/* --------------------------------------------------------------------------
   Client wedding-site renderer. These styles are intentionally plugin-owned
   and load only on a client instance or a master template preview.
   -------------------------------------------------------------------------- */
