/* ==========================================================================
   Giulia Nikolic – Theme styles
   Tokens come from theme.json (--wp--preset--*). Short aliases below.
   ========================================================================== */

:root {
	--gn-rose: var(--wp--preset--color--rose, #e84279);
	--gn-rose-deep: var(--wp--preset--color--rose-deep, #b8285a);
	--gn-rose-soft: var(--wp--preset--color--rose-soft, #fbe3eb);
	--gn-sand: var(--wp--preset--color--sand, #ebdfd4);
	--gn-cream: var(--wp--preset--color--cream, #f6f3ef);
	--gn-ink: var(--wp--preset--color--ink, #1d1418);
	--gn-white: #fff;
	--gn-radius: 28px;
	--gn-radius-s: 16px;
	--gn-ease: cubic-bezier(0.22, 1, 0.36, 1);
	--gn-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
	--gn-shadow: 0 30px 80px -30px rgba(29, 20, 24, 0.35);
	--gn-shadow-rose: 0 24px 60px -18px rgba(232, 66, 121, 0.55);
	--gn-header-h: 76px;
}

html { scroll-behavior: smooth; }
/* Core utility classes (normally in block-library/common.css, repeated so they never go missing) */
.has-text-align-center { text-align: center; }
.has-text-align-left { text-align: left; }
.has-text-align-right { text-align: right; }
.wp-block-image.aligncenter, .aligncenter { margin-left: auto; margin-right: auto; display: table; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: clip; }
::selection { background: var(--gn-rose); color: #fff; }
img { height: auto; }
:where(.wp-site-blocks) > * { margin-block-start: 0; }
.wp-site-blocks > main { margin-block: 0; }

/* Headings: no forced bold for <strong> inside serif headings */
:where(h1, h2, h3, h4) strong { font-weight: inherit; }
h1 em, h2 em, h3 em { font-style: italic; color: var(--gn-rose); }

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */
.gn-header {
	position: sticky; top: 0; z-index: 50;
	transition: background-color .4s var(--gn-ease), box-shadow .4s var(--gn-ease), backdrop-filter .4s;
}
.gn-header.is-scrolled {
	background: rgba(246, 243, 239, 0.78);
	backdrop-filter: saturate(160%) blur(14px);
	-webkit-backdrop-filter: saturate(160%) blur(14px);
	box-shadow: 0 10px 30px -20px rgba(29, 20, 24, .35);
}
.admin-bar .gn-header { top: 32px; }
.gn-header .wp-block-site-title a, .gn-brand a { text-decoration: none; color: var(--gn-ink); }
.gn-brand { font-family: var(--wp--preset--font-family--heading); font-size: 1.35rem; letter-spacing: .01em; margin: 0; }
.gn-brand a span { color: var(--gn-rose); }
.gn-header .wp-block-navigation a { text-decoration: none; font-size: .95rem; }
.gn-header .wp-block-navigation a:hover { color: var(--gn-rose); }

/* --------------------------------------------------------------------------
   Sections
   -------------------------------------------------------------------------- */
.gn-section { position: relative; isolation: isolate; overflow-x: clip; }
.wp-site-blocks { overflow-x: clip; }
.gn-section.is-white { background: #fff; }
.gn-section.is-cream { background: var(--gn-cream); }
.gn-section.is-sand { background: var(--gn-sand); }
.gn-section.is-blush { background: linear-gradient(160deg, var(--gn-cream) 0%, var(--gn-sand) 60%, #f3d2de 100%); }
.gn-section.is-night { background: linear-gradient(160deg, #1d1418 0%, #3a1d29 60%, #5c2440 100%); color: #f6efe9; }
.gn-section.is-night :is(h1, h2, h3, h4) { color: #fff; }
.gn-section.is-rose { background: radial-gradient(120% 140% at 0% 0%, #f06b98 0%, var(--gn-rose) 45%, var(--gn-rose-deep) 100%); color: #fff; }
.gn-section.is-rose :is(h1, h2, h3, h4) { color: #fff; }

.gn-kicker, .gn-eyebrow {
	display: inline-flex; align-items: center; gap: .6rem;
	font-size: var(--wp--preset--font-size--xs); font-weight: 600;
	letter-spacing: .18em; text-transform: uppercase; color: var(--gn-rose-deep);
	margin-bottom: .25rem;
}
.gn-eyebrow::before {
	content: ""; width: 34px; height: 1px; background: currentColor; opacity: .7;
}
.has-text-align-center.gn-eyebrow, .gn-center .gn-eyebrow { display: flex; justify-content: center; }
.gn-section.is-night .gn-eyebrow, .gn-section.is-rose .gn-eyebrow { color: #ffd3e1; }

.gn-lead { font-size: var(--wp--preset--font-size--l); line-height: 1.6; color: rgba(29, 20, 24, .78); }
.gn-section.is-night .gn-lead, .gn-section.is-rose .gn-lead { color: rgba(255, 255, 255, .85); }

.gn-heading-xl { font-size: var(--wp--preset--font-size--display) !important; }

/* Decorative orbs */
.gn-orbs { position: absolute; inset: 0; overflow: hidden; z-index: -1; pointer-events: none; margin: 0 !important; max-width: none !important; }
.gn-orbs::before, .gn-orbs::after {
	content: ""; position: absolute; border-radius: 50%; opacity: .7;
	animation: gn-float 18s ease-in-out infinite alternate;
}
.gn-orbs::before { width: 46vw; height: 46vw; max-width: 640px; max-height: 640px; left: -12vw; top: -14vw; background: radial-gradient(circle, #f6a9c3 0%, rgba(246, 169, 195, 0) 70%); }
.gn-orbs::after { width: 38vw; height: 38vw; max-width: 520px; max-height: 520px; right: -10vw; bottom: -12vw; background: radial-gradient(circle, #e9cdb4 0%, rgba(233, 205, 180, 0) 70%); animation-delay: -6s; }
@keyframes gn-float {
	0% { transform: translate3d(0, 0, 0) scale(1); }
	50% { transform: translate3d(4vw, 3vw, 0) scale(1.08); }
	100% { transform: translate3d(-2vw, 5vw, 0) scale(.96); }
}

/* --------------------------------------------------------------------------
   Hero
   -------------------------------------------------------------------------- */
.gn-hero { min-height: min(92vh, 900px); display: flex; flex-direction: column; justify-content: center; overflow: hidden; }
.gn-hero h1 { font-size: clamp(2.5rem, 5vw, 4.5rem); line-height: 1.05; margin-block: .35em .45em; text-wrap: balance; }
.gn-hero h1.is-long { font-size: clamp(2rem, 3.4vw, 3.15rem); line-height: 1.12; }
:where(h1, h2, h3) { text-wrap: balance; overflow-wrap: normal; word-break: normal; }
.gn-hero .wp-block-columns { align-items: center !important; gap: clamp(2rem, 5vw, 5rem); }
.gn-hero__media { perspective: 1400px; }
.gn-hero__media .wp-block-image { margin: 0; }
.gn-hero__media img {
	border-radius: var(--gn-radius);
	box-shadow: var(--gn-shadow);
	width: 100%;
	transform: rotateY(-14deg) rotateX(6deg) translateZ(0);
	transition: transform .9s var(--gn-ease);
	animation: gn-bob 7s ease-in-out infinite;
}
.gn-hero__media:hover img { transform: rotateY(0) rotateX(0); }
@keyframes gn-bob { 50% { translate: 0 -12px; } }

/* Benefit chips under the CTA */
.gn-chips { list-style: none; padding: 0 !important; margin: 1.6rem 0 0; display: flex; flex-direction: column; gap: .7rem; }
.gn-chips li {
	display: flex; align-items: center; gap: .8rem; font-size: var(--wp--preset--font-size--s); font-weight: 500;
}
.gn-chips li::before {
	content: ""; flex: 0 0 30px; height: 30px; border-radius: 50%;
	background: var(--gn-rose) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E") center / 14px no-repeat;
	box-shadow: 0 8px 18px -8px rgba(232, 66, 121, .8);
}
.gn-chips.is-inline { flex-direction: row; flex-wrap: wrap; gap: .6rem 1.4rem; }

/* --------------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------------- */
.wp-block-button__link { position: relative; overflow: hidden; transition: transform .35s var(--gn-ease-spring), box-shadow .35s var(--gn-ease), background-color .3s; will-change: transform; }
.wp-block-button__link::after {
	content: ""; position: absolute; inset: 0; transform: translateX(-120%) skewX(-20deg);
	background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .45), transparent);
	transition: transform .8s var(--gn-ease);
}
.wp-block-button__link:hover { transform: translateY(-3px) scale(1.02); box-shadow: 0 28px 60px -16px rgba(232, 66, 121, .7); }
.wp-block-button__link:hover::after { transform: translateX(120%) skewX(-20deg); }
.wp-block-button.is-style-outline > .wp-block-button__link { box-shadow: none; border: 1.5px solid currentColor; background: transparent; color: var(--gn-ink); }
.gn-section.is-night .wp-block-button.is-style-outline > .wp-block-button__link,
.gn-section.is-rose .wp-block-button.is-style-outline > .wp-block-button__link { color: #fff; }
.gn-section.is-rose .wp-block-button:not(.is-style-outline) > .wp-block-button__link { background: #fff; color: var(--gn-rose-deep); }
.gn-btn-sub { display: block; font-size: .78em; font-weight: 400; opacity: .85; margin-top: .1rem; }
.wp-block-button.is-disabled > .wp-block-button__link { opacity: .55; pointer-events: none; box-shadow: none; }
.gn-cta { text-align: center; }

/* --------------------------------------------------------------------------
   Cards / grids
   -------------------------------------------------------------------------- */
.gn-cards { gap: clamp(1rem, 2.5vw, 2rem) !important; }
.gn-cards > .wp-block-column, .gn-card {
	position: relative; background: #fff; border-radius: var(--gn-radius);
	padding: clamp(1.6rem, 3vw, 2.4rem);
	box-shadow: 0 1px 0 rgba(29, 20, 24, .04), 0 24px 50px -30px rgba(29, 20, 24, .28);
	transform-style: preserve-3d;
	transition: box-shadow .5s var(--gn-ease), transform .5s var(--gn-ease);
}
.gn-section.is-white .gn-cards > .wp-block-column { background: var(--gn-cream); }
.gn-cards > .wp-block-column:hover { box-shadow: 0 40px 70px -30px rgba(29, 20, 24, .38); }
.gn-cards-visual { max-width: 560px; margin: 0 auto 1rem !important; }
.gn-cards-visual img { border-radius: var(--gn-radius); aspect-ratio: 16 / 10; object-fit: cover; box-shadow: var(--gn-shadow); width: 100%; }
.gn-cards h3 { font-size: var(--wp--preset--font-size--l); margin-bottom: .6rem; }
.gn-card__icon { font-size: 2.2rem; line-height: 1; margin: 0 0 .9rem; display: inline-grid; place-items: center; width: 64px; height: 64px; border-radius: 20px; background: var(--gn-rose-soft); }
.gn-cards .wp-block-separator { width: 48px; border-top: 2px solid var(--gn-rose) !important; opacity: 1; margin: 1rem 0; }

/* For / not-for pair */
.gn-fit > .wp-block-column:first-child { background: linear-gradient(160deg, #fff 0%, var(--gn-rose-soft) 100%); }
.gn-fit > .wp-block-column:last-child { background: linear-gradient(160deg, #2a1a21 0%, #47202f 100%); color: #f3e8ea; }
.gn-fit > .wp-block-column:last-child :is(h3, strong) { color: #fff; }
.gn-fit > .wp-block-column:last-child .gn-card__icon { background: rgba(255, 143, 179, .16); color: #ff8fb3; }
.gn-fit .gn-card__icon { color: var(--gn-rose); font-size: 1.6rem; }
.gn-fit ul { list-style: none; padding: 0; display: grid; gap: .7rem; }
.gn-fit li { padding-left: 2rem; position: relative; }
.gn-fit > .wp-block-column:first-child li::before { content: "♥"; position: absolute; left: 0; color: var(--gn-rose); }
.gn-fit > .wp-block-column:last-child li::before { content: "✕"; position: absolute; left: .15rem; color: #ff8fb3; }

/* Steps (opt-in confirmation) */
.gn-step__num {
	font-family: var(--wp--preset--font-family--heading); font-size: 1.6rem; line-height: 1;
	display: inline-grid; place-items: center; width: 58px; height: 58px; border-radius: 50%;
	color: #fff; background: radial-gradient(circle at 30% 30%, #f37ea5, var(--gn-rose) 60%, var(--gn-rose-deep));
	box-shadow: var(--gn-shadow-rose); margin: 0 0 1rem;
}

/* --------------------------------------------------------------------------
   Split (image + text)
   -------------------------------------------------------------------------- */
.gn-split { align-items: center !important; gap: clamp(2rem, 6vw, 6rem) !important; }
.gn-split .wp-block-image { margin: 0; position: relative; }
.gn-split .wp-block-image img { border-radius: var(--gn-radius); width: 100%; aspect-ratio: 4 / 5; object-fit: cover; box-shadow: var(--gn-shadow); }
.gn-frame { position: relative; }
.gn-frame::before {
	content: ""; position: absolute; inset: 18px -18px -18px 18px; border: 1.5px solid var(--gn-rose);
	border-radius: var(--gn-radius); z-index: -1; transition: inset .8s var(--gn-ease);
}
.gn-frame:hover::before { inset: -14px 14px 14px -14px; }
.gn-split ul { padding-left: 0; list-style: none; display: grid; gap: 1rem; }
.gn-split ul li { padding-left: 2.1rem; position: relative; }
.gn-split ul li::before {
	content: ""; position: absolute; left: 0; top: .55em; width: 18px; height: 18px; border-radius: 6px;
	background: var(--gn-rose); transform: rotate(45deg) scale(.6);
}

/* --------------------------------------------------------------------------
   Modules (timeline cards)
   -------------------------------------------------------------------------- */
.gn-modules { counter-reset: gnmod; }
.gn-modules > .wp-block-group, .gn-module {
	position: relative; background: #fff; border-radius: var(--gn-radius); overflow: hidden;
	box-shadow: 0 30px 60px -36px rgba(29, 20, 24, .35);
	transform-style: preserve-3d; transition: transform .6s var(--gn-ease), box-shadow .6s var(--gn-ease);
}
.gn-module .wp-block-image { margin: 0; overflow: hidden; }
.gn-module .wp-block-image img { width: 100%; aspect-ratio: 16 / 11; object-fit: cover; transition: transform 1.2s var(--gn-ease); }
.gn-module:hover .wp-block-image img { transform: scale(1.07); }
.gn-module__body { padding: 1.5rem 1.6rem 1.9rem !important; }
.gn-module h3 { font-size: 1.25rem; margin: 0 0 .6rem; }
.gn-module p, .gn-module li { font-size: var(--wp--preset--font-size--s); color: rgba(29, 20, 24, .78); }
.gn-module__badge {
	position: absolute; top: 1rem; left: 1rem; z-index: 2; margin: 0 !important;
	font-family: var(--wp--preset--font-family--heading); font-size: .95rem; color: var(--gn-rose-deep);
	background: rgba(255, 255, 255, .9); backdrop-filter: blur(8px); padding: .35rem .85rem; border-radius: 999px;
	box-shadow: 0 8px 20px -10px rgba(29, 20, 24, .4);
}

/* --------------------------------------------------------------------------
   Testimonials
   -------------------------------------------------------------------------- */
.gn-quote {
	position: relative; background: #fff; border-radius: var(--gn-radius); padding: 2.2rem 2rem 1.8rem !important;
	box-shadow: 0 30px 60px -36px rgba(29, 20, 24, .35); height: 100%;
}
.gn-quote::before {
	content: "“"; position: absolute; top: -.25rem; right: 1.4rem; font-family: var(--wp--preset--font-family--heading);
	font-size: 7rem; line-height: 1; color: var(--gn-rose); opacity: .18;
}
.gn-stars { color: #f2b33d; letter-spacing: .2em; font-size: 1.1rem; margin: 0 0 1rem; }
.gn-quote__text { font-size: var(--wp--preset--font-size--s); }
.gn-quote__person { display: flex; align-items: center; gap: .9rem; margin-top: 1.4rem !important; }
.gn-quote__person .wp-block-image { margin: 0; flex: 0 0 52px; }
.gn-quote__person img { width: 52px; height: 52px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 3px var(--gn-rose-soft); }
.gn-quote__name { font-weight: 600; margin: 0; line-height: 1.3; }
.gn-quote__role { font-size: var(--wp--preset--font-size--xs); opacity: .7; margin: 0; }
.gn-quote__more { font-size: var(--wp--preset--font-size--xs); font-weight: 600; color: var(--gn-rose-deep); cursor: pointer; background: none; border: 0; padding: 0; margin-top: .4rem; }
.gn-quote.is-clamped .gn-quote__text { display: -webkit-box; -webkit-line-clamp: 7; -webkit-box-orient: vertical; overflow: hidden; }

/* --------------------------------------------------------------------------
   Parallax band, stat, about
   -------------------------------------------------------------------------- */
.gn-band { min-height: 52vh !important; overflow: hidden; }
.gn-band .wp-block-cover__image-background { transform: scale(1.18); will-change: transform; }
.gn-stat__num {
	font-family: var(--wp--preset--font-family--heading); font-weight: 700; line-height: 1;
	font-size: clamp(3rem, 9vw, 6.5rem); margin: 0;
	background: linear-gradient(120deg, var(--gn-rose-deep), var(--gn-rose) 50%, #f39ab9);
	-webkit-background-clip: text; background-clip: text; color: transparent;
}
.gn-insta img { border-radius: var(--gn-radius); box-shadow: var(--gn-shadow); }
.gn-about h2 { margin-top: 0; }
.gn-signature { font-family: var(--wp--preset--font-family--heading); font-style: italic; font-size: 1.6rem; color: var(--gn-rose); }

/* --------------------------------------------------------------------------
   Pricing
   -------------------------------------------------------------------------- */
.gn-price-wrap { perspective: 1600px; }
.gn-price {
	position: relative; max-width: 540px; margin-inline: auto !important; text-align: center;
	border: 2px solid transparent; border-radius: 34px; padding: clamp(2rem, 5vw, 3.4rem) !important;
	background:
		linear-gradient(#fff, #fff) padding-box,
		conic-gradient(from var(--gn-angle, 0deg), var(--gn-rose), #f6c1d3, var(--gn-sand), var(--gn-rose)) border-box;
	box-shadow: 0 50px 100px -40px rgba(184, 40, 90, .45);
	animation: gn-spin 6s linear infinite;
}
@property --gn-angle { syntax: "<angle>"; initial-value: 0deg; inherits: false; }
@keyframes gn-spin { to { --gn-angle: 360deg; } }
.gn-price__amount { font-family: var(--wp--preset--font-family--heading); font-size: clamp(3rem, 8vw, 4.6rem); line-height: 1; color: var(--gn-rose); margin: .3em 0 .1em; }
.gn-price__old { text-decoration: line-through; opacity: .5; font-size: 1.1rem; margin: 0; }
.gn-price ul { text-align: left; list-style: none; padding: 0; display: grid; gap: .8rem; margin: 1.8rem 0; }
.gn-price li { padding-left: 2rem; position: relative; font-size: var(--wp--preset--font-size--s); }
.gn-price li::before { content: "✓"; position: absolute; left: 0; color: #fff; background: var(--gn-rose); width: 1.3rem; height: 1.3rem; border-radius: 50%; display: grid; place-items: center; font-size: .75rem; top: .2em; }
.gn-price .wp-block-buttons { justify-content: center; }
.gn-price .wp-block-button, .gn-price .wp-block-button__link { width: 100%; }

/* --------------------------------------------------------------------------
   FAQ (core/details)
   -------------------------------------------------------------------------- */
.gn-faq .wp-block-details {
	background: #fff; border-radius: 20px; padding: 0; margin-block: .8rem 0;
	box-shadow: 0 16px 40px -30px rgba(29, 20, 24, .4); overflow: hidden; transition: box-shadow .4s;
}
.gn-section.is-white .gn-faq .wp-block-details { background: var(--gn-cream); }
.gn-faq .wp-block-details summary {
	list-style: none; cursor: pointer; padding: 1.3rem 3.6rem 1.3rem 1.6rem; position: relative;
	font-family: var(--wp--preset--font-family--heading); font-size: 1.15rem; font-weight: 700;
}
.gn-faq .wp-block-details summary::-webkit-details-marker { display: none; }
.gn-faq .wp-block-details summary::after {
	content: "+"; position: absolute; right: 1.3rem; top: 50%; translate: 0 -50%;
	width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center;
	background: var(--gn-rose-soft); color: var(--gn-rose-deep); font-family: var(--wp--preset--font-family--body);
	transition: transform .45s var(--gn-ease-spring), background-color .3s;
}
.gn-faq .wp-block-details[open] summary::after { transform: rotate(135deg); background: var(--gn-rose); color: #fff; }
.gn-faq .wp-block-details > :not(summary) { padding-inline: 1.6rem; }
.gn-faq .wp-block-details > :last-child { padding-bottom: 1.4rem; }
.gn-faq .wp-block-details::details-content { block-size: 0; overflow: clip; transition: block-size .5s var(--gn-ease), content-visibility .5s allow-discrete; }
.gn-faq .wp-block-details[open]::details-content { block-size: auto; }
:root { interpolate-size: allow-keywords; }

/* --------------------------------------------------------------------------
   Countdown
   -------------------------------------------------------------------------- */
.gn-countdown { display: flex; gap: .7rem; margin: 1.4rem 0; flex-wrap: wrap; }
.gn-countdown__unit {
	min-width: 74px; padding: .7rem .6rem .55rem; text-align: center; border-radius: 18px;
	background: rgba(255, 255, 255, .7); backdrop-filter: blur(10px);
	box-shadow: inset 0 0 0 1px rgba(232, 66, 121, .18), 0 14px 30px -20px rgba(29, 20, 24, .4);
	perspective: 400px;
}
.gn-countdown__num { display: block; font-family: var(--wp--preset--font-family--heading); font-size: 1.9rem; font-weight: 700; line-height: 1.1; color: var(--gn-ink); }
.gn-countdown__num.is-flip { animation: gn-flip .55s var(--gn-ease); }
@keyframes gn-flip { 0% { transform: rotateX(-90deg); opacity: 0; } 100% { transform: rotateX(0); opacity: 1; } }
.gn-countdown__label { font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; opacity: .65; }
.gn-countdown.is-expired { display: none; }
.has-text-align-center .gn-countdown, .gn-center .gn-countdown { justify-content: center; }
.gn-topbar { padding: .55rem 1rem; text-align: center; color: #fff; background: var(--gn-rose); font-size: var(--wp--preset--font-size--s); }
.gn-topbar .gn-countdown { margin: 0; justify-content: center; gap: .4rem; display: inline-flex; vertical-align: middle; }
.gn-topbar .gn-countdown__unit { min-width: 0; padding: .1rem .5rem; background: rgba(255, 255, 255, .18); box-shadow: none; }
.gn-topbar .gn-countdown__num { color: #fff; font-size: 1rem; display: inline; }
.gn-topbar .gn-countdown__label { font-size: .6rem; margin-left: .2rem; }
.gn-topbar:has(.gn-countdown.is-expired) { display: none; }

/* --------------------------------------------------------------------------
   Video
   -------------------------------------------------------------------------- */
.gn-video { border-radius: var(--gn-radius); overflow: hidden; box-shadow: var(--gn-shadow); background: var(--gn-ink); }
.gn-video iframe { display: block; }
.gn-video-wrap { perspective: 1600px; }

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */
.gn-footer { font-size: var(--wp--preset--font-size--s); }
.gn-footer a { color: inherit; text-decoration: none; }
.gn-footer a:hover { color: var(--gn-rose); }
.gn-footer .wp-block-navigation { gap: 1.4rem; }
.gn-crown img { width: 96px; filter: drop-shadow(0 18px 24px rgba(184, 40, 90, .35)); animation: gn-bob 6s ease-in-out infinite; }
.gn-disclaimer { font-size: .72rem; opacity: .6; line-height: 1.6; }

/* Legal pages */
.gn-legal h2 { font-size: var(--wp--preset--font-size--xl); margin-top: 2.4em; }
.gn-legal h3 { font-size: var(--wp--preset--font-size--l); margin-top: 1.8em; }
.gn-legal { overflow-wrap: anywhere; }

/* --------------------------------------------------------------------------
   Motion: reveal, 3D section entrance, tilt, marquee
   JS adds .gn-js to <html>; without JS everything is visible.
   -------------------------------------------------------------------------- */
.gn-js [data-reveal] {
	opacity: 0;
	transform: translate3d(0, 42px, 0);
	transition: opacity 1s var(--gn-ease), transform 1.1s var(--gn-ease);
	transition-delay: calc(var(--gn-i, 0) * 110ms);
}
.gn-js [data-reveal="left"] { transform: translate3d(-60px, 0, 0); }
.gn-js [data-reveal="right"] { transform: translate3d(60px, 0, 0); }
.gn-js [data-reveal="zoom"] { transform: scale(.9); }
.gn-js [data-reveal="flip"] { transform: perspective(1200px) rotateX(24deg) translate3d(0, 60px, -60px); transform-origin: 50% 100%; }
.gn-js [data-reveal="card"] { transform: perspective(1200px) rotateY(-18deg) rotateX(10deg) translate3d(0, 50px, -80px); transform-origin: 0 50%; }
.gn-js [data-reveal].is-in { opacity: 1; transform: none; }

/* Whole sections tip in from 3D space as they enter the viewport */
@supports (animation-timeline: view()) {
	.gn-js .gn-section[data-depth] > .gn-depth {
		animation: gn-depth linear both;
		animation-timeline: view();
		animation-range: entry 0% cover 30%;
		transform-origin: 50% 0%;
	}
	@keyframes gn-depth {
		from { transform: perspective(1600px) rotateX(9deg) translate3d(0, 70px, -120px); opacity: .35; }
		to { transform: none; opacity: 1; }
	}
}

[data-tilt] { transform-style: preserve-3d; will-change: transform; }
[data-tilt] > * { transform: translateZ(30px); }
[data-tilt] .gn-tilt-glare {
	position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: 3;
	background: radial-gradient(circle at var(--gx, 50%) var(--gy, 50%), rgba(255, 255, 255, .45), transparent 55%);
	opacity: 0; transition: opacity .4s;
}
[data-tilt]:hover .gn-tilt-glare { opacity: 1; }

.gn-marquee { overflow: hidden; white-space: nowrap; padding-block: 1.1rem; background: var(--gn-ink); color: #f6efe9; mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.gn-marquee__track { display: inline-flex; gap: 3rem; animation: gn-marquee 32s linear infinite; font-family: var(--wp--preset--font-family--heading); font-style: italic; font-size: 1.35rem; }
.gn-marquee__track span::after { content: "✦"; margin-left: 3rem; color: var(--gn-rose); font-style: normal; }
@keyframes gn-marquee { to { transform: translateX(-50%); } }

/* Scroll progress */
.gn-progress { position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 100; transform-origin: 0 50%; transform: scaleX(0); background: linear-gradient(90deg, var(--gn-rose), #f6a9c3); pointer-events: none; }
@supports (animation-timeline: scroll()) {
	.gn-progress { animation: gn-progress linear both; animation-timeline: scroll(root); }
	@keyframes gn-progress { to { transform: scaleX(1); } }
}

/* Mobile sticky CTA */
.gn-sticky-cta {
	position: fixed; left: 1rem; right: 1rem; bottom: 1rem; z-index: 60; display: none;
	transform: translateY(150%); transition: transform .6s var(--gn-ease);
}
.gn-sticky-cta a {
	display: block; text-align: center; padding: 1rem 1.4rem; border-radius: 999px; text-decoration: none;
	background: var(--gn-rose); color: #fff; font-weight: 500; box-shadow: var(--gn-shadow-rose);
}
.gn-sticky-cta.is-visible { transform: none; }
@media (max-width: 781px) { .gn-sticky-cta { display: block; } }

/* --------------------------------------------------------------------------
   3D page transitions (cross-document View Transitions)
   -------------------------------------------------------------------------- */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: gn-vt-out .6s var(--gn-ease) both; transform-origin: 50% 50%; }
::view-transition-new(root) { animation: gn-vt-in .7s var(--gn-ease) both; transform-origin: 50% 50%; }
@keyframes gn-vt-out { to { opacity: 0; transform: perspective(1400px) rotateY(-14deg) translateZ(-180px) translateX(-6%); } }
@keyframes gn-vt-in { from { opacity: 0; transform: perspective(1400px) rotateY(14deg) translateZ(-180px) translateX(6%); } }

/* --------------------------------------------------------------------------
   Responsive
   -------------------------------------------------------------------------- */
@media (max-width: 781px) {
	.gn-hero { min-height: auto; padding-top: 2.5rem !important; }
	.gn-hero .wp-block-columns { flex-direction: column-reverse; }
	.gn-hero__media img { transform: none; }
	.gn-split.is-reversed-mobile { flex-direction: column-reverse; }
	.gn-frame::before { inset: 10px -10px -10px 10px; }
	.gn-countdown__unit { min-width: 62px; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
	.gn-js [data-reveal] { opacity: 1; transform: none; }
	@view-transition { navigation: none; }
}

/* Full-width sections sit flush against each other */
.wp-block-post-content > .alignfull, .wp-block-post-content > .gn-topbar { margin-block: 0 !important; }
