/* ==========================================================================
   Anielsko – "Lekko jak piórko"
   A descent from a golden-hour sky to a wedding in the garden.
   Paper, gold hairlines, Bodoni Moda + WindSong + Manrope. Light by design.
   ========================================================================== */

:root {
	--paper: #f7f2e9;
	--paper-2: #f2ebdf;
	--paper-3: #e8ddcb;
	--ink: #2a1c12;
	--ink-2: #5b4838;
	--muted: #7f6b58;
	--gold: #b08a3e;
	--gold-2: #d9b974;
	--gold-3: #85652a;
	--sky: #c9d3e0;
	--haze: #f9e2c6;
	--line: rgba(42, 28, 18, 0.14);
	--line-2: rgba(42, 28, 18, 0.28);

	--display: "Bodoni Moda", Didot, "Bodoni 72", "Times New Roman", serif;
	--script: WindSong, "Snell Roundhand", cursive;
	--sans: Manrope, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	/* The name as in the logo: thin geometric capitals; other letters (a renamed brand) fall back to Manrope. */
	--brand: "Anielsko Logo", Manrope, system-ui, sans-serif;
	--brand-ls: 0.26em;

	--g: clamp(1.15rem, 3.6vw, 3rem);
	--container: 90rem;
	--header-h: 5.4rem;

	--ease: cubic-bezier(0.22, 0.7, 0.2, 1);
	--ease-out: cubic-bezier(0.16, 1, 0.3, 1);
	--ease-io: cubic-bezier(0.65, 0, 0.35, 1);

	--fs-mast: clamp(3.2rem, 13.6vw, 19rem);
	--fs-xl: clamp(3rem, 1.1rem + 6.2vw, 9rem);
	--fs-l: clamp(2.35rem, 1.2rem + 3.6vw, 5.4rem);
	--fs-m: clamp(1.55rem, 1.1rem + 1.3vw, 2.5rem);
}

/* ---------------------------------------------------------------- base */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }

body {
	margin: 0;
	background: var(--paper);
	color: var(--ink);
	font-family: var(--sans);
	font-size: 1.0625rem;
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: clip;
}
body.is-locked { overflow: hidden; }

/* paper grain */
body::after {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 2000;
	pointer-events: none;
	background-image: url("../img/grain.png");
	background-size: 180px 180px;
	opacity: 0.07;
	mix-blend-mode: multiply;
}

img, svg, video, canvas { max-width: 100%; height: auto; display: block; }
img { font-style: italic; color: var(--muted); }
a { color: inherit; text-decoration-color: rgba(133, 101, 42, 0.45); text-underline-offset: 0.2em; }
a:hover { text-decoration-color: var(--gold-3); }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
:focus-visible { outline: 2px solid var(--gold-3); outline-offset: 4px; border-radius: 2px; }
::selection { background: rgba(217, 185, 116, 0.45); color: var(--ink); }

h1, h2, h3, h4 {
	font-family: var(--display);
	font-weight: 400;
	line-height: 1.04;
	letter-spacing: -0.012em;
	margin: 0 0 0.5em;
	text-wrap: balance;
}
h1 em, h2 em, h3 em { font-style: italic; color: var(--gold-3); }
p { margin: 0 0 1.2em; }

.screen-reader-text, .skip-link {
	position: absolute !important;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}
.skip-link:focus {
	left: 1rem;
	top: 1rem;
	width: auto;
	height: auto;
	clip-path: none;
	z-index: 3000;
	padding: 0.75rem 1.1rem;
	background: var(--ink);
	color: var(--paper);
	border-radius: 999px;
}

.ani-container { width: min(100% - 2 * var(--g), var(--container)); margin-inline: auto; }
.ani-container--narrow { max-width: 46rem; }

/* ---------------------------------------------------------------- type */

.ani-label {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin: 0 0 1.6rem;
	font: 600 0.68rem/1.4 var(--sans);
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--gold-3);
}
/* the name inside a heading, in the logo's lettering */
.ani-brandword > span, .ani-brandname { font-family: var(--brand); font-style: normal; font-size: 0.8em; letter-spacing: 0.14em; text-transform: uppercase; }
/* the name above a page title, in the logo's lettering */
.ani-label--brand { font: 400 0.8rem/1.4 var(--brand); letter-spacing: 0.34em; }
.ani-label::before { content: ""; width: 2.6rem; height: 1px; background: currentColor; opacity: 0.7; flex: none; }
.ani-eyebrow { font: 600 0.68rem/1.4 var(--sans); letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold-3); margin-bottom: 1.2rem; }

.ani-xl, .ani-l, .ani-m { font-family: var(--display); font-weight: 400; margin: 0 0 0.4em; }
.ani-xl { font-size: var(--fs-xl); line-height: 0.94; letter-spacing: -0.025em; }
.ani-l { font-size: var(--fs-l); line-height: 0.98; letter-spacing: -0.02em; }
.ani-m { font-size: var(--fs-m); line-height: 1.08; }
.ani-xl em, .ani-l em, .ani-m em { font-style: italic; color: var(--gold-3); letter-spacing: -0.03em; }
.ani-lead { font-size: clamp(1.1rem, 1rem + 0.4vw, 1.3rem); line-height: 1.65; color: var(--ink-2); max-width: 40rem; }

.ani-head { margin-bottom: clamp(3rem, 6vw, 5.5rem); }
.ani-head--split { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 2rem 4rem; }
.ani-head--split > div { max-width: 52rem; }
.ani-head--center { text-align: center; display: grid; justify-items: center; }
.ani-head--center .ani-label::after { content: ""; width: 2.6rem; height: 1px; background: currentColor; opacity: 0.7; }
.ani-head__text { max-width: 30rem; margin: 0; color: var(--ink-2); font-size: 1.02rem; line-height: 1.7; }

/* words that rise into place */
.w { display: inline-block; overflow: hidden; vertical-align: bottom; padding: 0 0.04em 0.1em; margin: 0 -0.04em -0.1em; }
.w > span { display: inline-block; transform: translateY(112%); transition: transform 1.1s var(--ease-out); transition-delay: calc(var(--i, 0) * 60ms); }
.is-in .w > span { transform: none; }

[data-reveal] { opacity: 0; transform: translateY(28px); transition: opacity 1s var(--ease-out), transform 1.1s var(--ease-out); }
[data-reveal].is-in { opacity: 1; transform: none; }
[data-reveal="words"] { opacity: 1; transform: none; }
[data-reveal="mask"] { opacity: 1; transform: none; background: transparent !important; }
[data-reveal="mask"] img { clip-path: inset(100% 0 0 0); transform: scale(1.18); transition: clip-path 1.5s var(--ease-out), transform 2s var(--ease-out); }
[data-reveal="mask"].is-in img { clip-path: inset(0 0 0 0); transform: none; }
[data-reveal="stagger"] { opacity: 1; transform: none; }
[data-reveal="stagger"] > * { opacity: 0; transform: translateY(28px); transition: opacity 1s var(--ease-out), transform 1.1s var(--ease-out); transition-delay: calc(var(--i, 0) * 110ms); }
[data-reveal="stagger"].is-in > * { opacity: 1; transform: none; }
html:not(.js) [data-reveal], html:not(.js) [data-reveal="stagger"] > * { opacity: 1; transform: none; }
html:not(.js) [data-reveal="mask"] img { clip-path: none; transform: none; }
html:not(.js) .w > span { transform: none; }

/* ---------------------------------------------------------------- buttons */

.ani-btn {
	--bg: transparent;
	--fg: var(--ink);
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.9rem;
	padding: 1.15rem 1.9rem;
	border-radius: 999px;
	background: var(--bg);
	color: var(--fg);
	font: 600 0.72rem/1 var(--sans);
	letter-spacing: 0.2em;
	text-transform: uppercase;
	text-decoration: none;
	overflow: hidden;
	isolation: isolate;
	transition: transform 0.6s var(--ease-out), background-color 0.4s, color 0.4s, border-color 0.4s;
	will-change: transform;
}
.ani-btn > span { position: relative; z-index: 1; }
.ani-btn .ani-icon { position: relative; z-index: 1; width: 17px; height: 17px; transition: transform 0.6s var(--ease-out); }
.ani-btn:hover .ani-icon { transform: translateX(4px); }
.ani-btn--ink, .ani-btn--primary { --bg: var(--ink); --fg: var(--paper); }
.ani-btn--ink::before, .ani-btn--primary::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	background: radial-gradient(circle at var(--bx, 50%) 120%, var(--gold) 0%, var(--gold-3) 45%, transparent 70%);
	opacity: 0;
	transform: scale(0.6);
	transition: opacity 0.5s, transform 0.8s var(--ease-out);
}
.ani-btn--ink:hover::before, .ani-btn--primary:hover::before { opacity: 1; transform: scale(1.4); }
.ani-btn--line { border: 1px solid var(--line-2); }
.ani-btn--line:hover { --bg: var(--ink); --fg: var(--paper); border-color: var(--ink); }
.ani-btn--light { --bg: var(--paper); --fg: var(--ink); }

.ani-pill {
	display: inline-flex;
	align-items: center;
	padding: 0.85rem 1.35rem;
	border: 1px solid currentColor;
	border-radius: 999px;
	font: 600 0.66rem/1 var(--sans);
	letter-spacing: 0.22em;
	text-transform: uppercase;
	text-decoration: none;
	transition: background-color 0.4s, color 0.4s, border-color 0.4s;
}
.ani-pill:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }

.ani-round {
	width: 3.3rem;
	height: 3.3rem;
	border-radius: 50%;
	border: 1px solid var(--line-2);
	display: inline-grid;
	place-items: center;
	transition: background-color 0.3s, color 0.3s, border-color 0.3s, transform 0.5s var(--ease-out);
}
.ani-round .ani-icon { width: 19px; height: 19px; }
.ani-round .ani-icon.is-flipped { transform: scaleX(-1); }
.ani-round:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.ani-round:disabled { opacity: 0.35; pointer-events: none; }

.ani-chip {
	display: inline-flex;
	align-items: center;
	padding: 0.6rem 1.05rem;
	border: 1px solid var(--line-2);
	border-radius: 999px;
	font: 500 0.88rem/1 var(--sans);
	text-decoration: none;
	transition: background-color 0.3s, color 0.3s, border-color 0.3s;
}
.ani-chip:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }

.ani-icon { flex: none; }

/* ---------------------------------------------------------------- angel */

.ani-angel { --angel-ink: var(--ink); --angel-gold: var(--gold); width: 4.5rem; height: auto; overflow: visible; }
.ani-angel path, .ani-angel circle { stroke: var(--angel-ink); }
.ani-angel .ani-angel__halo, .ani-angel .ani-angel__chevron { stroke: var(--angel-gold); }
.ani-angel.is-animated path, .ani-angel.is-animated circle { stroke-dasharray: 1; stroke-dashoffset: 1; animation: ani-draw 1.1s var(--ease-out) forwards; }
.ani-angel.is-animated .ani-angel__halo { animation-delay: 0.05s; animation-duration: 0.8s; filter: drop-shadow(0 0 6px rgba(217, 185, 116, 0.9)); }
.ani-angel.is-animated .ani-angel__head { animation-delay: 0.3s; }
.ani-angel.is-animated .ani-angel__w1 { animation-delay: 0.55s; }
.ani-angel.is-animated .ani-angel__w2 { animation-delay: 0.8s; }
.ani-angel.is-animated .ani-angel__leg { animation-delay: 1s; animation-duration: 0.7s; }
.ani-angel.is-animated .ani-angel__chevron { animation-delay: 1.15s; animation-duration: 0.8s; }
@keyframes ani-draw { to { stroke-dashoffset: 0; } }

/* ---------------------------------------------------------------- header */

.ani-header {
	position: fixed;
	inset: 0 0 auto;
	z-index: 60;
	color: var(--ink);
	transition: transform 0.7s var(--ease-out), color 0.5s, background-color 0.5s;
}
.ani-header::before {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(247, 242, 233, 0.78);
	-webkit-backdrop-filter: blur(14px) saturate(1.2);
	backdrop-filter: blur(14px) saturate(1.2);
	border-bottom: 1px solid var(--line);
	opacity: 0;
	transition: opacity 0.5s;
}
.ani-header.is-scrolled::before { opacity: 1; }
.admin-bar .ani-header, .admin-bar .ani-menu { top: var(--wp-admin--admin-bar--height, 32px); }
@media screen and (max-width: 600px) { .admin-bar .ani-header, .admin-bar .ani-menu { top: 0; } }
.ani-header.is-hidden { transform: translateY(-105%); }
.ani-header.is-light { color: #fffaf2; }
.ani-header.is-light::before { opacity: 0; }
.ani-header.is-light .ani-pill:hover { background: #fffaf2; color: var(--ink); border-color: #fffaf2; }
.ani-header__inner {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2rem;
	height: var(--header-h);
	padding: 0 var(--g);
}
.ani-logo { display: inline-flex; align-items: center; gap: 0.8rem; text-decoration: none; color: inherit; min-width: 0; flex: 0 1 auto; }
.ani-logo__angel { width: 1.9rem; --angel-ink: currentColor; }
.ani-logo__word { font: 400 1.02rem/1.2 var(--brand); letter-spacing: 0.34em; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.ani-logo__angel { flex: none; }
@media (max-width: 359px) { .ani-logo__word { letter-spacing: 0.2em; } }
.ani-nav, .ani-header__actions { flex: none; }
.ani-nav__list a, .ani-pill, .ani-burger__label { white-space: nowrap; }
.ani-header.nav-hidden .ani-nav { display: none; }
.ani-logo__img { max-height: 2.8rem; width: auto; }
.ani-nav { display: none; }
.ani-nav__list, .ani-menu__list, .ani-footer__list { list-style: none; margin: 0; padding: 0; }
.ani-nav__list { display: flex; gap: clamp(1.4rem, 2.4vw, 2.6rem); }
.ani-nav__list a {
	position: relative;
	font: 600 0.66rem/1 var(--sans);
	letter-spacing: 0.24em;
	text-transform: uppercase;
	text-decoration: none;
	padding: 0.6rem 0;
}
.ani-nav__list a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0.15rem;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: right;
	transition: transform 0.6s var(--ease-out);
}
.ani-nav__list a:hover::after, .ani-nav__list .current-menu-item > a::after { transform: scaleX(1); transform-origin: left; }
.ani-header__actions { display: flex; align-items: center; gap: 1.4rem; }
.ani-header__actions .ani-pill { display: none; }
.ani-burger { display: inline-flex; align-items: center; gap: 0.8rem; padding: 0.6rem 0; }
.ani-burger__lines { display: grid; gap: 6px; width: 28px; }
.ani-burger__lines i { display: block; height: 1px; background: currentColor; transition: transform 0.5s var(--ease-out), width 0.5s var(--ease-out); }
.ani-burger__lines i:last-child { width: 70%; justify-self: end; }
.ani-burger:hover .ani-burger__lines i:last-child { width: 100%; }
.ani-burger__label { font: 600 0.66rem/1 var(--sans); letter-spacing: 0.24em; text-transform: uppercase; }
.ani-burger[aria-expanded="true"] .ani-burger__lines i:first-child { transform: translateY(3.5px) rotate(45deg); }
.ani-burger[aria-expanded="true"] .ani-burger__lines i:last-child { width: 100%; transform: translateY(-3.5px) rotate(-45deg); }
@media (min-width: 720px) { .ani-header__actions .ani-pill { display: inline-flex; } }
@media (min-width: 1180px) { .ani-nav { display: block; } }

/* ---------------------------------------------------------------- menu */

.ani-menu {
	position: fixed;
	inset: 0;
	z-index: 55;
	background: var(--paper);
	overflow: hidden auto;
	clip-path: inset(0 0 100% 0);
	transition: clip-path 0.9s var(--ease-io);
}
.ani-menu.is-open { clip-path: inset(0 0 0 0); }
.ani-menu[hidden] { display: block; visibility: hidden; }
.ani-menu.is-open[hidden] { visibility: visible; }
.ani-menu__sky { position: absolute; inset: 0 0 auto; height: 70%; background: radial-gradient(120% 90% at 78% 0%, rgba(249, 226, 198, 0.9), rgba(201, 211, 224, 0.5) 45%, rgba(247, 242, 233, 0) 75%); pointer-events: none; }
.ani-menu__inner {
	position: relative;
	min-height: 100%;
	display: grid;
	align-content: center;
	gap: 3rem;
	padding: calc(var(--header-h) + 2rem) var(--g) 3rem;
}
.ani-menu__list { counter-reset: m; }
.ani-menu__list li { counter-increment: m; overflow: hidden; }
.ani-menu__list a {
	display: inline-flex;
	align-items: baseline;
	gap: 1.2rem;
	font: 400 clamp(2.6rem, 1.6rem + 4.6vw, 6.6rem)/1.08 var(--display);
	letter-spacing: -0.02em;
	text-decoration: none;
	transform: translateY(105%);
	transition: transform 1s var(--ease-out), color 0.4s;
}
.ani-menu__list a::before { content: counter(m, decimal-leading-zero); font: 600 0.7rem/1 var(--sans); letter-spacing: 0.2em; color: var(--gold-3); transform: translateY(-1.6em); }
.ani-menu__list a:hover { font-style: italic; color: var(--gold-3); }
.ani-menu.is-open .ani-menu__list a { transform: none; }
.ani-menu.is-open .ani-menu__list li:nth-child(2) a { transition-delay: 0.06s; }
.ani-menu.is-open .ani-menu__list li:nth-child(3) a { transition-delay: 0.12s; }
.ani-menu.is-open .ani-menu__list li:nth-child(4) a { transition-delay: 0.18s; }
.ani-menu.is-open .ani-menu__list li:nth-child(5) a { transition-delay: 0.24s; }
.ani-menu.is-open .ani-menu__list li:nth-child(6) a { transition-delay: 0.3s; }
.ani-menu__aside { display: grid; gap: 1.4rem; align-content: end; opacity: 0; transform: translateY(20px); transition: opacity 0.8s 0.3s, transform 0.9s 0.3s var(--ease-out); }
.ani-menu.is-open .ani-menu__aside { opacity: 1; transform: none; }
.ani-menu__script { font: 400 clamp(2.4rem, 1.8rem + 2vw, 3.6rem)/1 var(--script); color: var(--gold); margin: 0; }
.ani-menu__contact { display: grid; gap: 0.4rem; margin: 0; }
.ani-menu__contact a { text-decoration: none; font-size: 1.05rem; }
.ani-menu__contact span { color: var(--muted); font-size: 0.92rem; }
.ani-menu__social { display: flex; gap: 1.6rem; margin: 0; }
.ani-menu__social a { display: inline-flex; align-items: center; gap: 0.5rem; font: 600 0.68rem/1 var(--sans); letter-spacing: 0.2em; text-transform: uppercase; text-decoration: none; }
.ani-menu__social .ani-icon { width: 18px; height: 18px; color: var(--gold-3); }
@media (min-width: 1024px) {
	.ani-menu__inner { grid-template-columns: 1.4fr 0.6fr; align-items: end; padding-bottom: 5rem; }
}

/* ---------------------------------------------------------------- preloader & veil */

.ani-pre {
	position: fixed;
	inset: 0;
	z-index: 2500;
	display: none;
	place-items: center;
	background: var(--paper);
	transition: clip-path 1.1s var(--ease-io);
	clip-path: inset(0 0 0 0);
}
.is-pre .ani-pre { display: grid; }
.ani-pre.is-done { clip-path: inset(0 0 100% 0); }
/* failsafes: never leave the page covered if the script cannot run */
.is-pre .ani-pre { animation: ani-uncover 0.8s ease 7s forwards; }
.is-entering .ani-veil { animation: ani-unveil 0.6s ease 3.5s forwards; }
@keyframes ani-uncover { to { clip-path: inset(0 0 100% 0); visibility: hidden; } }
@keyframes ani-unveil { to { opacity: 0; visibility: hidden; } }
.ani-pre__inner { display: grid; justify-items: center; gap: 1.4rem; }
.ani-pre__angel { width: 5.2rem; }
.ani-pre__word { margin: 0; font: 400 1.05rem/1 var(--brand); letter-spacing: 0.52em; text-transform: uppercase; padding-left: 0.52em; max-width: 92vw; white-space: nowrap; overflow: hidden; }
.ani-pre__word .l { display: inline-block; opacity: 0; transform: translateY(0.6em); animation: ani-pre-l 0.9s var(--ease-out) forwards; animation-delay: calc(0.6s + var(--i, 0) * 70ms); }
@keyframes ani-pre-l { to { opacity: 1; transform: none; } }
.ani-pre__line { width: 9rem; height: 1px; background: var(--line); overflow: hidden; }
.ani-pre__line i { display: block; height: 100%; background: var(--gold); transform: scaleX(0); transform-origin: left; animation: ani-pre-line 1.6s var(--ease-io) 0.3s forwards; }
@keyframes ani-pre-line { to { transform: none; } }

.ani-veil {
	position: fixed;
	inset: 0;
	z-index: 2400;
	display: grid;
	place-items: center;
	background: var(--paper);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.5s var(--ease);
}
.ani-veil.is-on, .is-entering .ani-veil { opacity: 1; pointer-events: auto; }
.ani-veil__feather { width: 2.4rem; height: auto; animation: ani-veil-float 2.4s ease-in-out infinite; }
@keyframes ani-veil-float {
	0%, 100% { transform: translate(-10px, -6px) rotate(-18deg); }
	50% { transform: translate(10px, 6px) rotate(14deg); }
}

/* ---------------------------------------------------------------- cursor */

.ani-cursor { position: fixed; left: 0; top: 0; z-index: 1900; pointer-events: none; opacity: 0; transition: opacity 0.4s; }
.ani-cursor.is-on { opacity: 1; }
.ani-cursor__dot, .ani-cursor__ring { position: absolute; left: 0; top: 0; border-radius: 50%; will-change: transform; }
.ani-cursor__dot { width: 6px; height: 6px; margin: -3px 0 0 -3px; background: var(--gold); }
.ani-cursor__ring {
	width: 38px;
	height: 38px;
	margin: -19px 0 0 -19px;
	border: 1px solid rgba(176, 138, 62, 0.75);
	display: grid;
	place-items: center;
	transition: width 0.45s var(--ease-out), height 0.45s var(--ease-out), margin 0.45s var(--ease-out), background-color 0.4s, border-color 0.4s;
}
.ani-cursor__ring span { font: 600 0.56rem/1 var(--sans); letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink); opacity: 0; transition: opacity 0.3s; white-space: nowrap; }
.ani-cursor.is-link .ani-cursor__ring { width: 58px; height: 58px; margin: -29px 0 0 -29px; background: rgba(217, 185, 116, 0.16); }
.ani-cursor.is-label .ani-cursor__ring { width: 92px; height: 92px; margin: -46px 0 0 -46px; background: rgba(247, 242, 233, 0.86); border-color: var(--gold); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.ani-cursor.is-label .ani-cursor__ring span { opacity: 1; }
.ani-cursor.is-down .ani-cursor__ring { width: 28px; height: 28px; margin: -14px 0 0 -14px; }
.ani-cursor.is-hidden { opacity: 0; }

/* ---------------------------------------------------------------- feathers */

.ani-feathers { position: fixed; inset: 0; z-index: 40; pointer-events: none; overflow: hidden; }
.ani-feather { position: absolute; left: 0; top: 0; width: auto; max-width: none; transform-origin: 50% 50%; will-change: transform; opacity: 0; transition: opacity 1.2s; }
.ani-feathers.is-on .ani-feather { opacity: 1; }
.ani-feather--main { height: min(34vh, 300px); filter: drop-shadow(0 22px 16px rgba(80, 52, 20, 0.16)); }
.ani-feathers.is-on .ani-feather--far { opacity: 0.7; }
.ani-feather--far { height: min(14vh, 120px); filter: blur(0.6px); }
.ani-feathers.is-on .ani-feather--near { opacity: var(--near-o, 0.42); }
.ani-feather--near { height: min(72vh, 660px); filter: blur(7px); }

.ani-guide { position: fixed; right: max(0.9rem, calc(var(--g) * 0.45)); top: 22vh; bottom: 18vh; width: 22px; z-index: 30; pointer-events: none; opacity: 0; transition: opacity 0.8s; display: none; }
.ani-guide.is-on { opacity: 1; }
.ani-guide__line { position: absolute; left: 50%; top: 0; bottom: 0; width: 1px; background: linear-gradient(rgba(176, 138, 62, 0), rgba(176, 138, 62, 0.4) 12%, rgba(176, 138, 62, 0.4) 88%, rgba(176, 138, 62, 0)); }
.ani-guide__feather { position: absolute; left: -2px; top: 0; width: 26px; height: auto; max-width: none; transform-origin: 50% 50%; will-change: transform; filter: drop-shadow(0 6px 6px rgba(80, 52, 20, 0.18)); }
@media (min-width: 1024px) and (hover: hover) { .ani-guide { display: block; } }

/* ---------------------------------------------------------------- leaf shadows (komorebi) */

.ani-shade { position: absolute; inset: -12% -8%; z-index: 0; pointer-events: none; overflow: hidden; -webkit-mask-image: radial-gradient(70% 60% at 85% 10%, #000 20%, transparent 75%); mask-image: radial-gradient(70% 60% at 85% 10%, #000 20%, transparent 75%); }
.ani-shade i { position: absolute; inset: 0; background: url("../img/komorebi.webp") center / cover no-repeat; mix-blend-mode: multiply; opacity: 0.2; transform-origin: 70% 0%; animation: ani-sway 13s ease-in-out infinite alternate; }
.ani-shade i + i { opacity: 0.12; transform: scale(1.25) rotate(8deg); filter: blur(6px); animation-duration: 17s; animation-delay: -5s; }
.ani-shade--soft { -webkit-mask-image: radial-gradient(60% 60% at 10% 20%, #000 15%, transparent 72%); mask-image: radial-gradient(60% 60% at 10% 20%, #000 15%, transparent 72%); }
@keyframes ani-sway {
	0% { transform: rotate(-1.6deg) translate3d(-1%, 0, 0) scale(1.04); }
	100% { transform: rotate(1.4deg) translate3d(1.2%, 1%, 0) scale(1.06); }
}

/* ==========================================================================
   1. Niebo – the sky above a sea of clouds, the descent and the landing
   ========================================================================== */

.ani-hero { position: relative; }
.ani-hero__stage { position: relative; height: 100vh; height: 100svh; overflow: hidden; isolation: isolate; background: #efe5d6; }
.ani-hero__land { position: absolute; inset: 0; z-index: 0; margin: 0; overflow: hidden; }
.ani-hero__land img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 62%; transform: scale(1.25); filter: saturate(0.95) sepia(0.06); }
.ani-hero__land::before,
.ani-hero__land::after { content: ""; position: absolute; left: 0; right: 0; z-index: 1; pointer-events: none; }
.ani-hero__land::before { top: 0; height: 34vh; background: linear-gradient(rgba(28, 18, 10, 0.6), rgba(28, 18, 10, 0)); }
.ani-hero__land::after { bottom: 0; height: 60vh; background: linear-gradient(rgba(28, 18, 10, 0), rgba(28, 18, 10, 0.62)); }

/* CSS sky for browsers without WebGL (and the first instant before it starts) */
.ani-hero__fallback {
	position: absolute;
	inset: 0;
	z-index: 1;
	background:
		radial-gradient(60% 40% at 77% 52%, rgba(255, 236, 196, 0.95), rgba(255, 236, 196, 0) 70%),
		linear-gradient(180deg, #c6d0e0 0%, #e7e2df 34%, #f9e2c6 56%, #efe8ea 64%, #e4e0ea 100%);
}
.ani-hero__sky { position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; opacity: 0; transition: opacity 1.4s var(--ease); }
.has-sky .ani-hero__sky { opacity: 1; }

.ani-hero__copy { position: absolute; inset: 0; z-index: 3; pointer-events: none; }
.ani-hero__copy a { pointer-events: auto; }
.ani-hero__kicker {
	position: absolute;
	left: var(--g);
	top: calc(var(--header-h) + 2.2rem);
	margin: 0;
	font: 600 0.66rem/1.7 var(--sans);
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--ink-2);
	z-index: 2;
}
.ani-hero__kicker em { display: block; font: italic 400 1.4rem/1.25 var(--display); letter-spacing: 0; text-transform: none; color: var(--ink); }
.ani-hero__mast {
	position: absolute;
	left: 0;
	right: 0;
	top: 59.5%;
	margin: 0;
	transform: translateY(-100%);
	text-align: center;
	font: 400 var(--fs-mast)/0.74 var(--brand);
	letter-spacing: var(--brand-ls);
	text-transform: uppercase;
	color: var(--ink);
	white-space: nowrap;
	z-index: 1;
	font-size: min(var(--fs-mast), calc(108vw / var(--chars, 8)));
}
.ani-hero__letters { display: inline-block; padding-left: var(--brand-ls); }
.ani-hero__letters .l { display: inline-block; will-change: transform; }
.ani-hero__mist { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; opacity: 0; transition: opacity 1.4s; }
.has-sky .ani-hero__mist { opacity: 1; }
.ani-hero__script {
	position: absolute;
	right: calc(var(--g) + 3vw);
	top: calc(59.5% - 2.2vw);
	margin: 0;
	z-index: 2;
	font: 400 clamp(2.5rem, 6.4vw, 8.4rem)/1 var(--script);
	color: var(--gold);
	transform: rotate(-4deg);
	white-space: nowrap;
	-webkit-mask-image: linear-gradient(90deg, #000 45%, transparent 55%);
	mask-image: linear-gradient(90deg, #000 45%, transparent 55%);
	-webkit-mask-size: 240% 100%;
	mask-size: 240% 100%;
	-webkit-mask-position: var(--mask, 0%) 0;
	mask-position: var(--mask, 0%) 0;
}
.ani-hero__lead { position: absolute; left: var(--g); bottom: clamp(1.8rem, 5vh, 3rem); z-index: 2; max-width: 25rem; margin: 0; font-size: 1rem; line-height: 1.65; color: var(--ink); text-shadow: 0 0 22px rgba(255, 250, 242, 0.95), 0 0 6px rgba(255, 250, 242, 0.8); }
.ani-hero__actions { position: absolute; left: 50%; bottom: clamp(1.6rem, 4.6vh, 2.8rem); z-index: 2; transform: translateX(-50%); }
.ani-hero__cue {
	position: absolute;
	right: var(--g);
	bottom: clamp(1.8rem, 5vh, 3rem);
	z-index: 2;
	display: flex;
	align-items: center;
	gap: 1rem;
	font: 600 0.64rem/1 var(--sans);
	letter-spacing: 0.26em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--ink-2);
}
.ani-hero__cue i { position: relative; width: 1px; height: 52px; background: rgba(42, 28, 18, 0.18); overflow: hidden; }
.ani-hero__cue i::after { content: ""; position: absolute; inset: 0; background: var(--gold); transform: translateY(-100%); animation: ani-cue 2.4s var(--ease-io) infinite; }
@keyframes ani-cue { 0% { transform: translateY(-100%); } 60%, 100% { transform: translateY(100%); } }

.ani-hero__landing {
	position: absolute;
	left: var(--g);
	bottom: 9vh;
	z-index: 4;
	margin: 0;
	max-width: 12ch;
	color: #fffaf2;
	font: 400 clamp(3rem, 8.6vw, 10rem)/0.9 var(--display);
	letter-spacing: -0.02em;
	pointer-events: none;
	visibility: hidden;
}
.ani-hero__landing em { color: #f2dba6; }
.ani-hero__landing .w > span { transition: none; transform: none; }

/* entrance: GSAP sets the start states while the preloader or the veil covers the page */
.ani-hero__letters .l > span { display: inline-block; }

/* laptops and tablets: the lead sits above the button, both on the left, so they never overlap */
@media (min-width: 768px) and (max-width: 1279px) {
	.ani-hero__lead { bottom: calc(clamp(1.6rem, 4.6vh, 2.8rem) + 5.2rem); max-width: 30rem; }
	.ani-hero__actions { left: var(--g); transform: none; }
}
@media (max-width: 767px) {
	.ani-hero__mast { top: 50%; font-size: min(clamp(2.9rem, 13.8vw, 4.7rem), calc(110vw / var(--chars, 8))); }
	.ani-hero__script { top: calc(50% + 0.6rem); right: var(--g); font-size: clamp(2.4rem, 12vw, 3.8rem); }
	.ani-hero__kicker { top: calc(var(--header-h) + 1rem); }
	.ani-hero__lead { right: var(--g); bottom: 7.4rem; font-size: 0.95rem; max-width: none; }
	.ani-hero__actions { left: var(--g); transform: none; bottom: 2rem; }
	.ani-hero__cue { bottom: 2.6rem; }
	.ani-hero__cue span { display: none; }
	.ani-hero__landing { bottom: 12vh; font-size: clamp(2.8rem, 13vw, 4.4rem); }
}

/* ==========================================================================
   2. Miejsce – a sentence lit word by word, two photos at different depths
   ========================================================================== */

.ani-place { position: relative; padding: clamp(7rem, 15vw, 13rem) 0 clamp(6rem, 11vw, 10rem); overflow: hidden; isolation: isolate; }
.ani-place__grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: clamp(1rem, 2vw, 2rem); }
.ani-place__label { grid-column: 1 / -1; }
.ani-place__text {
	grid-column: 1 / -1;
	margin: 0 0 clamp(3rem, 7vw, 6rem);
	font: 400 clamp(1.9rem, 1rem + 3.3vw, 4.7rem)/1.12 var(--display);
	letter-spacing: -0.02em;
	text-wrap: pretty;
}
.ani-place__text .wd { opacity: 0.14; transition: opacity 0.5s var(--ease), color 0.5s; }
.ani-place__text em.wd { font-style: italic; color: var(--gold-3); }
.ani-place__text .wd.is-lit { opacity: 1; }
html:not(.js) .ani-place__text .wd { opacity: 1; }
.ani-place__img { margin: 0; overflow: hidden; background: var(--paper-3); will-change: transform; }
.ani-place__img img { width: 100%; height: 100%; object-fit: cover; }
.ani-place__img--tall { grid-column: 8 / span 4; grid-row: 3 / span 2; aspect-ratio: 3 / 4; align-self: start; }
.ani-place__img--wide { grid-column: 2 / span 5; grid-row: 3; aspect-ratio: 4 / 3; border-radius: 6px; align-self: start; margin-top: 2rem; }
.ani-place__note { grid-column: 2 / span 5; grid-row: 4; align-self: start; margin: 2.6rem 0 0; max-width: 28rem; color: var(--ink-2); font-size: 1.02rem; }
.ani-facts { grid-column: 1 / -1; grid-row: 5; list-style: none; margin: clamp(4rem, 8vw, 7rem) 0 0; padding: 2.4rem 0 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; border-top: 1px solid var(--line); }
.ani-fact { display: grid; gap: 0.6rem; }
.ani-fact__value { font: 400 clamp(3rem, 2rem + 4vw, 6.6rem)/0.9 var(--display); letter-spacing: -0.03em; display: flex; align-items: baseline; gap: 0.35rem; }
.ani-fact__value small { font: italic 400 0.36em/1 var(--display); color: var(--gold-3); letter-spacing: 0; }
.ani-fact__label { font-size: 0.92rem; color: var(--muted); max-width: 16rem; line-height: 1.5; }
@media (max-width: 1023px) {
	.ani-place__img--tall { grid-column: 6 / -1; grid-row: 3; }
	.ani-place__img--wide { grid-column: 1 / span 6; grid-row: 3; margin-top: 40%; }
	.ani-place__note { grid-column: 1 / -1; grid-row: 4; }
	.ani-facts { grid-template-columns: 1fr; gap: 1.6rem; }
	.ani-fact { grid-template-columns: auto 1fr; align-items: end; gap: 1.2rem; }
}

/* ==========================================================================
   3. Jeden dzień – the horizontal film
   ========================================================================== */

.ani-day { position: relative; background: var(--day-bg, var(--paper)); color: var(--ink); --day-line: rgba(42, 28, 18, 0.22); }
.ani-day__pin { position: relative; height: 100vh; height: 100svh; overflow: hidden; }
.ani-day__sky { position: absolute; left: 0; right: 0; top: calc(var(--header-h) - 1.4rem); height: 15vh; pointer-events: none; z-index: 0; }
.ani-day__arc { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.ani-day__arc path { fill: none; stroke: var(--day-line); stroke-width: 1; stroke-dasharray: 0.004 0.008; vector-effect: non-scaling-stroke; }
.ani-day__sun {
	position: absolute;
	left: 0;
	top: 0;
	width: 3.4rem;
	height: 3.4rem;
	margin: -1.7rem 0 0 -1.7rem;
	border-radius: 50%;
	background: radial-gradient(circle at 40% 38%, #fff6dc 0%, #f3d791 38%, #d9a24e 72%);
	box-shadow: 0 0 40px 14px rgba(243, 202, 120, 0.55), 0 0 120px 40px rgba(243, 202, 120, 0.25);
	will-change: transform;
	transition: background 0.6s, box-shadow 0.6s;
}
.ani-day.is-night .ani-day__sun { background: radial-gradient(circle at 36% 36%, #ffffff 0%, #e9e6f2 45%, #bdb8cf 80%); box-shadow: 0 0 30px 10px rgba(225, 222, 240, 0.45), 0 0 90px 30px rgba(225, 222, 240, 0.2); }
.ani-day__track { position: absolute; z-index: 1; top: 0; left: 0; height: 100%; display: flex; align-items: center; gap: clamp(5rem, 9vw, 11rem); padding: calc(var(--header-h) + 3rem) var(--g) 4rem; will-change: transform; }
.ani-day__intro { flex: 0 0 min(46rem, 82vw); }
.ani-day__title { margin-bottom: 0.5em; }
.ani-day__hint { display: inline-flex; align-items: center; gap: 1rem; margin: 0; font: 600 0.66rem/1.4 var(--sans); letter-spacing: 0.26em; text-transform: uppercase; color: var(--gold-3); }
.ani-day__hint .ani-icon { width: 18px; height: 18px; animation: ani-nudge 2s var(--ease-io) infinite; }
@keyframes ani-nudge { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(8px); } }
.ani-day__panel { position: relative; flex: 0 0 auto; display: grid; grid-template-columns: auto minmax(14rem, 21rem); justify-content: start; align-items: end; gap: clamp(1.6rem, 3vw, 3rem); }
.ani-day__time {
	position: absolute;
	left: -0.06em;
	top: -0.62em;
	z-index: 0;
	margin: 0;
	font: italic 400 clamp(6rem, 3rem + 11vw, 15rem)/1 var(--display);
	letter-spacing: -0.04em;
	color: transparent;
	-webkit-text-stroke: 1px var(--day-line);
	pointer-events: none;
	white-space: nowrap;
}
.ani-day__img { position: relative; z-index: 1; margin: 0; width: clamp(15rem, 26vw, 25rem); aspect-ratio: 3 / 4; }
.ani-day__img img { width: 100%; height: 115%; object-fit: cover; will-change: transform; }
.ani-day__panel:nth-of-type(even) .ani-day__img { margin-bottom: 8vh; }
.ani-day__copy { position: relative; z-index: 1; padding-bottom: 1rem; }
.ani-day__clock { margin: 0 0 0.8rem; font: 600 0.68rem/1 var(--sans); letter-spacing: 0.28em; color: var(--gold-3); }
.ani-day__name { font-size: var(--fs-m); margin: 0 0 0.6rem; }
.ani-day__text { margin: 0; color: var(--ink-2); font-size: 0.98rem; line-height: 1.65; }
.ani-day__end { flex: 0 0 auto; padding: 0 6vw 0 0; }
.ani-day__angel { width: 4.4rem; opacity: 0.7; }
.ani-day__progress { position: absolute; left: var(--g); right: var(--g); bottom: 2.2rem; height: 1px; background: var(--day-line); }
.ani-day__progress i { display: block; height: 100%; background: var(--gold); transform-origin: left; transform: scaleX(0); }
.ani-day.is-night { color: #f6efe4; --day-line: rgba(246, 239, 228, 0.3); }
.ani-day.is-night .ani-day__text { color: rgba(246, 239, 228, 0.78); }
.ani-day.is-night .ani-day__clock, .ani-day.is-night .ani-day__hint { color: var(--gold-2); }
.ani-day__name, .ani-day__text, .ani-day__clock { transition: color 0.6s; }
@media (max-width: 767px) {
	.ani-day__panel { grid-template-columns: 1fr; align-items: start; width: 78vw; }
	.ani-day__img { width: 78vw; aspect-ratio: 4 / 5; }
	.ani-day__panel:nth-of-type(even) .ani-day__img { margin-bottom: 0; }
	.ani-day__time { top: -0.5em; font-size: 7rem; }
	.ani-day__track { gap: 14vw; }
	.ani-day__sky { height: 14vh; }
}

/* ==========================================================================
   4. Oferta – a typographic index; photos surface under the cursor (WebGL)
   ========================================================================== */

.ani-offer { position: relative; padding: clamp(6rem, 12vw, 11rem) 0; }
.ani-offer__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.ani-offer__item { position: relative; border-bottom: 1px solid var(--line); }
.ani-offer__link {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 4.5rem minmax(0, 1fr) minmax(0, 22rem) 3.4rem;
	align-items: center;
	gap: clamp(1rem, 2.4vw, 2.6rem);
	padding: clamp(1.8rem, 3vw, 2.8rem) 0;
	text-decoration: none;
	color: inherit;
}
.ani-offer__num { font: italic 400 1.25rem/1 var(--display); color: var(--gold-3); }
.ani-offer__title { font: 400 var(--fs-l)/1 var(--display); letter-spacing: -0.025em; transition: transform 0.8s var(--ease-out), color 0.5s, font-style 0s; }
.ani-offer__text { color: var(--ink-2); font-size: 0.96rem; line-height: 1.6; transition: color 0.5s; }
.ani-offer__go { width: 3.4rem; height: 3.4rem; border-radius: 50%; border: 1px solid var(--line-2); display: grid; place-items: center; transition: background-color 0.4s, color 0.4s, transform 0.6s var(--ease-out); }
.ani-offer__go .ani-icon { width: 18px; height: 18px; }
.ani-offer__item:hover .ani-offer__title, .ani-offer__link:focus-visible .ani-offer__title { font-style: italic; color: var(--gold-3); transform: translateX(1.4rem); }
.ani-offer__item:hover .ani-offer__go { background: var(--ink); color: var(--paper); transform: rotate(-45deg); }
.ani-offer__list:hover .ani-offer__item:not(:hover) .ani-offer__title { color: rgba(42, 28, 18, 0.32); }
.ani-offer__thumb { display: none; }
@media (max-width: 1023px), (hover: none) {
	.ani-offer__item { display: grid; grid-template-columns: clamp(4.2rem, 16vw, 7rem) minmax(0, 1fr); align-items: start; column-gap: clamp(1rem, 4vw, 2rem); padding: 1.6rem 0; }
	.ani-offer__thumb { display: block; grid-column: 1; grid-row: 1; margin: 0.3rem 0 0; aspect-ratio: 3 / 4; }
	.ani-offer__thumb img { width: 100%; height: 100%; object-fit: cover; }
	.ani-offer__link { grid-column: 2; grid-row: 1; grid-template-columns: minmax(0, 1fr) 2.6rem; grid-template-areas: "num go" "title go" "text text"; gap: 0.5rem 1rem; padding: 0; }
	.ani-offer__num { grid-area: num; font-size: 1rem; }
	.ani-offer__title { grid-area: title; font-size: clamp(1.9rem, 1.3rem + 3vw, 3rem); }
	.ani-offer__text { grid-area: text; font-size: 0.92rem; }
	.ani-offer__go { grid-area: go; width: 2.6rem; height: 2.6rem; align-self: start; }
	.ani-offer__item:hover .ani-offer__title { transform: none; }
}

/* ==========================================================================
   5. Album – an endless table of photos you can drag
   ========================================================================== */

.ani-album { position: relative; padding: clamp(6rem, 12vw, 10rem) 0 clamp(3rem, 6vw, 5rem); background: var(--paper-2); overflow: hidden; }
.ani-album__window {
	position: relative;
	height: min(86vh, 54rem);
	overflow: hidden;
	cursor: grab;
	touch-action: pan-y;
	outline: none;
	-webkit-user-select: none;
	user-select: none;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent), linear-gradient(transparent, #000 9%, #000 91%, transparent);
	-webkit-mask-composite: source-in;
	mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent), linear-gradient(transparent, #000 9%, #000 91%, transparent);
	mask-composite: intersect;
}
.ani-album__window:focus-visible { box-shadow: inset 0 0 0 2px var(--gold); }
.ani-album__window.is-dragging { cursor: grabbing; }
.ani-album__plane { position: absolute; inset: 0; }
.ani-album__tile {
	position: absolute;
	left: 0;
	top: 0;
	display: block;
	overflow: hidden;
	border-radius: 4px;
	background: var(--paper-3);
	box-shadow: 0 30px 50px -36px rgba(42, 28, 18, 0.5);
	will-change: transform;
	-webkit-user-drag: none;
}
.ani-album__tile img { width: 100%; height: 100%; object-fit: cover; pointer-events: none; transition: transform 1.4s var(--ease-out), filter 0.6s; }
.ani-album__tile:hover img { transform: scale(1.07); }
.ani-album__tile:focus-visible { outline-offset: -4px; }
.ani-album__hint {
	position: absolute;
	left: 50%;
	top: 50%;
	z-index: 2;
	margin: 0;
	transform: translate(-50%, -50%);
	pointer-events: none;
	transition: opacity 0.6s;
}
.ani-album__hint span { display: inline-flex; align-items: center; gap: 0.9rem; padding: 1.1rem 1.6rem; border-radius: 999px; background: rgba(247, 242, 233, 0.88); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); font: 600 0.66rem/1 var(--sans); letter-spacing: 0.26em; text-transform: uppercase; box-shadow: 0 20px 40px -24px rgba(42, 28, 18, 0.5); }
.ani-album__hint span::before, .ani-album__hint span::after { content: "←"; font: 400 1rem/1 var(--sans); letter-spacing: 0; color: var(--gold-3); }
.ani-album__hint span::after { content: "→"; }
.ani-album.is-touched .ani-album__hint { opacity: 0; }
html:not(.js) .ani-album__plane, .no-album .ani-album__plane { position: static; display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: 1rem; padding: 0 var(--g); }
html:not(.js) .ani-album__tile, .no-album .ani-album__tile { position: relative; aspect-ratio: 4 / 3; }
html:not(.js) .ani-album__window, .no-album .ani-album__window { height: auto; -webkit-mask-image: none; mask-image: none; cursor: auto; }
html:not(.js) .ani-album__hint, .no-album .ani-album__hint { display: none; }

/* ==========================================================================
   6. Księga gości – the open guest book
   ========================================================================== */

.ani-guest { position: relative; padding: clamp(6rem, 12vw, 10rem) 0; overflow: hidden; isolation: isolate; }
.ani-guest .ani-container { position: relative; z-index: 1; }
.ani-book {
	--pg-l: linear-gradient(90deg, #fbf8f1 0%, #f6efe3 82%, #ebe1cf 96%, #e2d6c1 100%);
	--pg-r: linear-gradient(90deg, #e2d6c1 0%, #ece3d2 4%, #f7f1e6 18%, #fcf9f3 100%);
	position: relative;
	display: grid;
	grid-template-columns: 1fr 1fr;
	width: min(100%, 66rem);
	margin: 0 auto;
	aspect-ratio: 16 / 10.4;
	perspective: 2600px;
	filter: drop-shadow(0 44px 40px rgba(60, 40, 20, 0.2)) drop-shadow(0 6px 8px rgba(60, 40, 20, 0.12));
}
.ani-book__left, .ani-book__right { position: relative; }
.ani-book__paper { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 1rem; text-align: center; padding: 3rem; background: var(--pg-l); border-radius: 8px 0 0 8px; box-shadow: inset -1px 0 0 rgba(42, 28, 18, 0.08); }
.ani-book__angel { width: 3.6rem; }
.ani-book__heading { margin: 0.6rem 0 0; font: 400 clamp(1.8rem, 1.2rem + 1.6vw, 2.8rem)/1 var(--display); }
.ani-book__sub { margin: 0.5rem 0 0; padding-left: 0.34em; font: 400 clamp(1.05rem, 0.9rem + 0.5vw, 1.4rem)/1 var(--brand); letter-spacing: 0.34em; text-transform: uppercase; color: var(--gold); }
.ani-book__right::after { content: ""; position: absolute; top: 3px; bottom: 3px; right: -4px; width: 6px; border-radius: 0 3px 3px 0; background: repeating-linear-gradient(90deg, #efe6d6 0 1px, #d9ccb6 1px 2px); z-index: -1; }
.ani-book__leaf {
	position: absolute;
	inset: 0;
	transform-origin: left center;
	transform-style: preserve-3d;
	transition: transform 1.25s cubic-bezier(0.645, 0.045, 0.355, 1);
	z-index: calc(50 - var(--n, 0));
}
.ani-book__leaf.is-flipped { transform: rotateY(-180deg); }
.ani-book__leaf.is-flipped.is-settled { z-index: calc(60 + var(--n, 0)); }
.ani-book__face { position: absolute; inset: 0; margin: 0; -webkit-backface-visibility: hidden; backface-visibility: hidden; display: flex; flex-direction: column; justify-content: center; padding: clamp(1.6rem, 4.5vw, 3.8rem); overflow: hidden; }
.ani-book__face--front { background: var(--pg-r); border-radius: 0 8px 8px 0; }
.ani-book__face--front::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0, 0, 0, 0.08), rgba(0, 0, 0, 0) 14%); pointer-events: none; }
.ani-book__face--back { transform: rotateY(180deg); background: var(--pg-l); border-radius: 8px 0 0 8px; align-items: center; }
.ani-book__no { position: absolute; top: 1.6rem; right: 2rem; font: italic 400 1rem/1 var(--display); color: var(--gold-3); }
.ani-book__quote { margin: 0 0 1.6rem; }
.ani-book__quote p { margin: 0; font: italic 400 clamp(1.05rem, 0.8rem + 0.9vw, 1.7rem)/1.45 var(--display); color: var(--ink); }
.ani-book__quote p::before { content: "„"; }
.ani-book__quote p::after { content: "”"; }
.ani-book__by { display: grid; gap: 0.2rem; }
.ani-book__sign { font: 400 clamp(1.9rem, 1.3rem + 1.8vw, 3.1rem)/1.1 var(--script); color: var(--gold-3); }
.ani-book__ctx { font: 600 0.64rem/1.4 var(--sans); letter-spacing: 0.24em; text-transform: uppercase; color: var(--muted); }
.ani-book__photo { width: 74%; aspect-ratio: 4 / 5; padding: 0.7rem 0.7rem 2.4rem; background: #fffdf8; box-shadow: 0 18px 30px -18px rgba(42, 28, 18, 0.45); transform: rotate(-3deg); }
.ani-book__photo img { width: 100%; height: 100%; object-fit: cover; filter: sepia(0.12) saturate(0.95); }
.ani-book__leaf:nth-child(even) .ani-book__photo { transform: rotate(2.4deg); }
.ani-book__nav { display: flex; justify-content: center; align-items: center; gap: 1.6rem; margin-top: 2.6rem; }
.ani-book__count { margin: 0; font: italic 400 1.15rem/1 var(--display); min-width: 5rem; text-align: center; }
.ani-book__count span { color: var(--gold-3); }
.ani-book__right { cursor: pointer; }
@media (max-width: 767px) {
	.ani-book { grid-template-columns: 1fr; aspect-ratio: 3 / 4.2; width: min(100%, 26rem); perspective: 1800px; }
	.ani-book__left { display: none; }
	.ani-book__leaf.is-flipped { transform: rotateY(-180deg) translateZ(1px); opacity: 0; transition: transform 1.1s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.4s 0.7s; }
	.ani-book__face--front { border-radius: 8px; }
}

/* ==========================================================================
   7. Terminy – seasons and months
   ========================================================================== */

.ani-date {
	--season-bg: #f7efdc;
	--season-accent: var(--gold-3);
	position: relative;
	padding: clamp(6rem, 12vw, 10rem) 0;
	background: var(--season-bg);
	transition: background-color 1.4s var(--ease);
	overflow: hidden;
	isolation: isolate;
}
.ani-date[data-season="spring"] { --season-bg: #f6ebe6; --season-accent: #a25d63; }
.ani-date[data-season="summer"] { --season-bg: #f7eedb; --season-accent: #8e6a26; }
.ani-date[data-season="autumn"] { --season-bg: #f2e2cd; --season-accent: #98552a; }
.ani-date[data-season="winter"] { --season-bg: #eceef1; --season-accent: #5d6b80; }
.ani-date__air { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; pointer-events: none; }
.ani-date__grid { position: relative; z-index: 1; display: grid; gap: clamp(2rem, 5vw, 4rem); grid-template-columns: minmax(0, 1fr); }
.ani-date__head .ani-xl { margin-bottom: 0.3em; }
.ani-date__head .ani-xl em { color: var(--season-accent); transition: color 1s; }
.ani-date__tabs { display: flex; flex-wrap: wrap; gap: 0.4rem 2.2rem; }
.ani-date__tab {
	position: relative;
	padding: 0.2rem 0 0.6rem;
	font: 400 clamp(2rem, 1.2rem + 2.8vw, 4.2rem)/1 var(--display);
	letter-spacing: -0.02em;
	color: rgba(42, 28, 18, 0.3);
	transition: color 0.5s;
}
.ani-date__tab::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: var(--season-accent); transform: scaleX(0); transform-origin: left; transition: transform 0.9s var(--ease-out); }
.ani-date__tab:hover { color: rgba(42, 28, 18, 0.6); }
.ani-date__tab[aria-selected="true"] { color: var(--ink); font-style: italic; }
.ani-date__tab[aria-selected="true"]::after { transform: none; }
.ani-date__panels { position: relative; }
.ani-date__panel { display: grid; gap: clamp(1.6rem, 4vw, 4rem); align-items: center; grid-template-columns: minmax(10rem, 0.8fr) minmax(0, 1.2fr); }
.ani-date__panel[hidden] { display: none; }
.ani-date__panel.is-active .ani-date__img img, .ani-date__panel.is-active .ani-date__copy { animation: ani-season-in 1.1s var(--ease-out) both; }
.ani-date__panel.is-active .ani-date__copy { animation-delay: 0.12s; }
@keyframes ani-season-in { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
.ani-date__img { margin: 0; aspect-ratio: 3 / 4; max-height: 70vh; }
.ani-date__img img { width: 100%; height: 100%; object-fit: cover; }
.ani-date__desc { font: 400 clamp(1.3rem, 1rem + 1vw, 2rem)/1.35 var(--display); margin: 0 0 2rem; max-width: 30rem; }
.ani-date__months-label { font: 600 0.64rem/1 var(--sans); letter-spacing: 0.26em; text-transform: uppercase; color: var(--season-accent); margin: 0 0 1rem; }
.ani-date__months { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.6rem; }
.ani-date__months .ani-chip:hover { background: var(--season-accent); border-color: var(--season-accent); color: #fff; }
.ani-date__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 1.2rem 2rem; margin: 0; }
.ani-date__phone { display: inline-flex; align-items: center; gap: 0.7rem; text-decoration: none; font: 400 1.25rem/1 var(--display); }
.ani-date__phone .ani-icon { width: 18px; height: 18px; color: var(--season-accent); }
@media (min-width: 1024px) {
	.ani-date__grid { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); grid-template-areas: "head panels" "tabs panels" "cta panels"; align-items: start; column-gap: 6rem; }
	.ani-date__head { grid-area: head; }
	.ani-date__tabs { grid-area: tabs; flex-direction: column; align-items: flex-start; gap: 0.2rem; }
	.ani-date__panels { grid-area: panels; align-self: center; }
	.ani-date__cta { grid-area: cta; margin-top: 1rem; }
}
@media (max-width: 599px) {
	.ani-date__panel { grid-template-columns: 1fr; }
	.ani-date__img { max-width: 70%; }
}

/* ==========================================================================
   Footer
   ========================================================================== */

.ani-footer { position: relative; background: var(--paper); border-top: 1px solid var(--line); padding-top: clamp(4rem, 8vw, 7rem); overflow: hidden; }
.ani-footer__invite { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.4rem 3rem; }
.ani-footer__script { margin: 0; font: 400 clamp(3rem, 2rem + 4vw, 6.4rem)/1 var(--script); color: var(--gold); transform: rotate(-3deg); }
.ani-footer__ask { display: inline-flex; align-items: center; gap: 1.2rem; font: 400 clamp(1.6rem, 1.1rem + 1.6vw, 2.8rem)/1 var(--display); text-decoration: none; padding-bottom: 0.5rem; border-bottom: 1px solid var(--line-2); transition: border-color 0.4s, color 0.4s; }
.ani-footer__ask .ani-icon { width: 26px; height: 26px; transition: transform 0.6s var(--ease-out); }
.ani-footer__ask:hover { color: var(--gold-3); border-color: var(--gold-3); }
.ani-footer__ask:hover .ani-icon { transform: translateX(8px); }
.ani-footer__word { text-align: center; line-height: 1; padding-top: clamp(2.5rem, 6vw, 5rem); padding-bottom: clamp(1.2rem, 2.4vw, 2.2rem); pointer-events: none; -webkit-user-select: none; user-select: none; overflow: hidden; }
.ani-footer__word span {
	display: inline-block;
	font: 400 clamp(3.4rem, 14.2vw, 20rem)/0.9 var(--brand);
	font-size: min(clamp(3.4rem, 14.2vw, 20rem), calc(113vw / var(--chars, 8)));
	white-space: nowrap;
	letter-spacing: var(--brand-ls);
	text-transform: uppercase;
	color: transparent;
	-webkit-text-stroke: 1px rgba(176, 138, 62, 0.55);
	background-image: linear-gradient(100deg, #8a6a2b 0%, #b08a3e 40%, #e3c77e 70%, #b08a3e 100%);
	background-size: var(--fill, 0%) 100%;
	background-repeat: no-repeat;
	-webkit-background-clip: text;
	background-clip: text;
	padding: 0.02em 0.02em 0.04em var(--brand-ls);
}
.ani-footer__inner { display: grid; gap: 2.6rem; padding: clamp(3rem, 6vw, 5rem) 0 3rem; border-top: 1px solid var(--line); }
.ani-footer__angel { width: 2.8rem; margin-bottom: 1.2rem; }
.ani-footer__tagline { max-width: 24rem; color: var(--ink-2); margin-bottom: 0.6rem; font-size: 0.98rem; }
.ani-footer__owner { margin: 0; font: italic 400 1.3rem/1 var(--display); color: var(--gold-3); }
.ani-footer__label { font: 600 0.64rem/1 var(--sans); letter-spacing: 0.26em; text-transform: uppercase; color: var(--gold-3); margin-bottom: 1.2rem; }
.ani-footer__list { display: grid; gap: 0.55rem; }
.ani-footer__list a, .ani-footer__line { text-decoration: none; transition: color 0.3s; }
.ani-footer__list a:hover, .ani-footer__line:hover { color: var(--gold-3); }
.ani-footer__line { display: flex; align-items: flex-start; gap: 0.75rem; margin-bottom: 0.7rem; line-height: 1.4; }
.ani-footer__line .ani-icon { width: 18px; height: 18px; color: var(--gold-3); margin-top: 0.15em; }
.ani-footer__line small { display: block; font-size: 0.85em; color: var(--muted); }
.ani-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; padding: 1.6rem 0 2rem; border-top: 1px solid var(--line); font-size: 0.8rem; color: var(--muted); }
.ani-footer__bottom p { margin: 0; display: flex; gap: 1.6rem; }
.ani-footer__bottom a { text-decoration: none; }
.ani-footer__bottom a:hover { color: var(--ink); }
@media (min-width: 768px) { .ani-footer__inner { grid-template-columns: 1.6fr 1fr 1.2fr 1fr; gap: 2rem; } }

/* ==========================================================================
   Sub-pages: page head, prose, gallery, contact and form, offer, 404
   ========================================================================== */

.ani-page-head { position: relative; padding: calc(var(--header-h) + clamp(4rem, 10vw, 8rem)) 0 clamp(3rem, 6vw, 5rem); overflow: hidden; isolation: isolate; }
.ani-page-head::before { content: ""; position: absolute; inset: 0 0 auto; height: 120%; z-index: -1; background: radial-gradient(80% 70% at 82% 0%, rgba(249, 226, 198, 0.85), rgba(201, 211, 224, 0.35) 45%, rgba(247, 242, 233, 0) 72%); }
.ani-page-head .ani-shade i { opacity: 0.11; }
.ani-page-head .ani-shade i + i { opacity: 0.06; }
.ani-page-head__inner { position: relative; z-index: 1; display: grid; gap: 2.4rem; align-items: end; }
.ani-page-head__title { font-size: var(--fs-xl); line-height: 0.94; letter-spacing: -0.03em; margin: 0 0 0.3em; max-width: 14ch; }
.ani-page-head__lead { margin: 0; }
.ani-page-head__media { margin: 0; aspect-ratio: 3 / 4; width: min(100%, 24rem); }
.ani-page-head__media img { width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 1024px) {
	.ani-page-head--image .ani-page-head__inner { grid-template-columns: minmax(0, 1fr) minmax(16rem, 24rem); }
	.ani-page-head--image .ani-page-head__media { justify-self: end; }
}

.ani-page { padding-bottom: clamp(5rem, 10vw, 9rem); }
.ani-prose { font-size: 1.0625rem; }
.ani-prose > *:first-child { margin-top: 0; }
.ani-prose h2 { font-size: var(--fs-m); margin-top: 1.8em; }
.ani-prose h3 { font-size: 1.6rem; margin-top: 1.5em; }
.ani-prose .ani-lead, .ani-prose > p.ani-lead { font: 400 clamp(1.4rem, 1.1rem + 1vw, 2.1rem)/1.35 var(--display); color: var(--ink); max-width: none; margin-bottom: 1.6em; }
.ani-prose blockquote, .ani-prose .wp-block-quote { margin: 2.6rem 0; padding: 0 0 0 1.6rem; border-left: 1px solid var(--gold); font: italic 400 clamp(1.5rem, 1.1rem + 1.2vw, 2.4rem)/1.3 var(--display); }
.ani-prose blockquote p { margin: 0 0 0.6em; }
.ani-prose blockquote cite { display: block; font: 600 0.68rem/1.4 var(--sans); letter-spacing: 0.22em; text-transform: uppercase; font-style: normal; color: var(--gold-3); }
.ani-prose ul, .ani-prose ol { padding-left: 1.2em; }
.ani-prose li { margin-bottom: 0.4em; }
.ani-prose figure { margin: 2.4rem 0; }
.ani-prose figcaption { font-size: 0.85rem; color: var(--muted); margin-top: 0.6rem; }
.ani-prose .wp-block-image img, .ani-prose .wp-block-columns img { border-radius: 6px; }
.ani-prose .wp-block-columns { gap: 2.4rem; }
.ani-prose a { text-decoration-thickness: 1px; }
.ani-entry .alignwide { width: min(100vw - 2 * var(--g), 72rem); margin-left: 50%; transform: translateX(-50%); }
.ani-entry .alignfull { width: 100vw; margin-left: 50%; transform: translateX(-50%); }

/* gallery block → mosaic with the lightbox */
.ani-entry .wp-block-gallery, .ani-mosaic {
	display: grid !important;
	grid-template-columns: repeat(2, 1fr);
	grid-auto-rows: clamp(140px, 30vw, 240px);
	grid-auto-flow: dense;
	gap: 0.7rem !important;
	margin: 2.4rem 0;
	width: min(100vw - 2 * var(--g), 80rem);
	margin-left: 50%;
	transform: translateX(-50%);
}
.ani-entry .wp-block-gallery .wp-block-image, .ani-mosaic .wp-block-image { margin: 0 !important; width: auto !important; height: 100%; overflow: hidden; border-radius: 4px; cursor: zoom-in; background: var(--paper-3); }
.ani-entry .wp-block-gallery .wp-block-image img { width: 100% !important; height: 100% !important; object-fit: cover; transition: transform 1.4s var(--ease-out); border-radius: 0; }
.ani-entry .wp-block-gallery .wp-block-image:hover img { transform: scale(1.06); }
.ani-entry .wp-block-gallery .wp-block-image figcaption { display: none; }
.ani-entry .wp-block-gallery .wp-block-image:nth-child(5n + 1) { grid-row: span 2; }
@media (min-width: 768px) {
	.ani-entry .wp-block-gallery, .ani-mosaic { grid-template-columns: repeat(4, 1fr); grid-auto-rows: clamp(150px, 17vw, 270px); }
	.ani-entry .wp-block-gallery .wp-block-image:nth-child(7n + 1) { grid-column: span 2; grid-row: span 2; }
	.ani-entry .wp-block-gallery .wp-block-image:nth-child(7n + 4) { grid-row: span 2; }
	.ani-entry .wp-block-gallery .wp-block-image:nth-child(7n + 6) { grid-column: span 2; }
}

/* ==========================================================================
   Strona „O nas”
   ========================================================================== */

.ani-about { position: relative; padding: clamp(1rem, 3vw, 3rem) 0 clamp(6rem, 11vw, 10rem); overflow: hidden; isolation: isolate; }
.ani-about__grid { position: relative; z-index: 1; display: grid; gap: clamp(3.5rem, 7vw, 7rem); align-items: center; }
.ani-about__title { max-width: 13ch; margin-bottom: 0.6em; }
.ani-about__prose p { margin: 0 0 1.1em; max-width: 36rem; font-size: clamp(1.02rem, 0.98rem + 0.2vw, 1.15rem); line-height: 1.75; color: var(--ink-2); }
.ani-about__prose p:first-child { font: 400 clamp(1.3rem, 1.05rem + 0.8vw, 1.85rem)/1.4 var(--display); color: var(--ink); letter-spacing: -0.01em; }
.ani-about__media { position: relative; padding-bottom: 3rem; }
.ani-about__img { margin: 0; overflow: hidden; }
.ani-about__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ani-about__img--tall { width: min(80%, 27rem); aspect-ratio: 3 / 4; margin-left: auto; }
.ani-about__img--small { position: absolute; left: 0; bottom: 0; width: min(54%, 19rem); aspect-ratio: 4 / 3; border-radius: 6px; border: 6px solid var(--paper); box-shadow: 0 40px 70px -40px rgba(42, 28, 18, 0.6); }
@media (min-width: 1024px) { .ani-about__grid { grid-template-columns: 1.08fr 0.92fr; } }

.ani-about-rhythm { padding: clamp(6rem, 12vw, 11rem) 0; background: var(--paper-2); text-align: center; }
.ani-about-rhythm .ani-xl { max-width: 13ch; margin-inline: auto; }
.ani-about-rhythm__text { max-width: 48rem; margin: 2.4rem auto 0; font: 400 clamp(1.35rem, 1rem + 1.3vw, 2.35rem)/1.38 var(--display); letter-spacing: -0.01em; text-wrap: pretty; }
.ani-about-rhythm__text .wd { opacity: 0.16; transition: opacity 0.5s var(--ease); }
.ani-about-rhythm__text .wd.is-lit { opacity: 1; }
html:not(.js) .ani-about-rhythm__text .wd, .is-still .ani-about-rhythm__text .wd { opacity: 1; }

.ani-about-why { padding: clamp(6rem, 12vw, 10rem) 0 clamp(4rem, 8vw, 7rem); }
.ani-about-why__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.ani-about-why__list li { display: grid; grid-template-columns: clamp(2.6rem, 6vw, 4.5rem) minmax(0, 1fr); align-items: baseline; gap: clamp(1rem, 2.4vw, 2rem); padding: clamp(1.3rem, 2.6vw, 2.2rem) 0; border-bottom: 1px solid var(--line); }
.ani-about-why__num { font: italic 400 clamp(1rem, 0.9rem + 0.4vw, 1.3rem)/1 var(--display); color: var(--gold-3); }
.ani-about-why__text { font: 400 clamp(1.7rem, 1.05rem + 2.6vw, 3.8rem)/1.04 var(--display); letter-spacing: -0.02em; }
.ani-about-why .ani-facts { margin-top: clamp(4rem, 8vw, 6.5rem); }
@media (max-width: 1023px) { .ani-about-why .ani-facts { grid-template-columns: 1fr; } }

.ani-about-quote { position: relative; padding: clamp(5rem, 10vw, 9rem) 0; text-align: center; background: radial-gradient(70% 80% at 50% 100%, rgba(249, 226, 198, 0.8), rgba(247, 242, 233, 0) 72%); }
.ani-about-quote__inner { display: grid; justify-items: center; }
.ani-about-quote__angel { width: 3.6rem; margin-bottom: 2.2rem; }
.ani-about-quote__text { margin: 0; max-width: 42rem; }
.ani-about-quote__text p { margin: 0; font: italic 400 clamp(1.5rem, 1.05rem + 1.8vw, 2.9rem)/1.32 var(--display); text-wrap: balance; }
.ani-about-quote__by { margin: 1.6rem 0 2.8rem; font: 400 clamp(2.4rem, 1.8rem + 2vw, 3.8rem)/1 var(--script); color: var(--gold); }
.ani-about-quote__cta { margin: 0; }

.ani-gallery-cta { display: flex; justify-content: center; margin-top: clamp(1rem, 3vw, 2.5rem); }

/* buttons kept from pages built in Divi */
.ani-builder-btn { margin: 1.6rem 0; }

/* lightbox */
.ani-lb { position: fixed; inset: 0; width: 100vw; height: 100vh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: rgba(247, 242, 233, 0.97); color: var(--ink); display: none; place-items: center; z-index: 2600; }
.ani-lb[open] { display: grid; }
.ani-lb::backdrop { background: transparent; }
.ani-lb__figure { margin: 0; display: grid; justify-items: center; gap: 1.2rem; width: 100%; padding: 0 var(--g); }
.ani-lb__img { max-width: min(90vw, 1400px); max-height: 80vh; width: auto; height: auto; object-fit: contain; border-radius: 4px; box-shadow: 0 50px 90px -40px rgba(42, 28, 18, 0.6); opacity: 0; transform: scale(0.97); transition: opacity 0.6s var(--ease), transform 0.8s var(--ease-out); }
.ani-lb__img.is-shown { opacity: 1; transform: none; }
.ani-lb__caption { font: italic 400 1.15rem/1.4 var(--display); color: var(--ink-2); min-height: 1.6em; text-align: center; }
.ani-lb__count { position: absolute; left: var(--g); top: 1.6rem; font: 600 0.66rem/1 var(--sans); letter-spacing: 0.24em; color: var(--gold-3); }
.ani-lb__btn { position: absolute; width: 3.3rem; height: 3.3rem; border-radius: 50%; border: 1px solid var(--line-2); display: grid; place-items: center; transition: background-color 0.3s, color 0.3s; }
.ani-lb__btn:hover { background: var(--ink); color: var(--paper); }
.ani-lb__btn .ani-icon { width: 19px; height: 19px; }
.ani-lb__btn--close { right: var(--g); top: 1.1rem; }
.ani-lb__btn--prev { left: var(--g); top: 50%; transform: translateY(-50%); }
.ani-lb__btn--next { right: var(--g); top: 50%; transform: translateY(-50%); }
.ani-lb__btn--prev .ani-icon { transform: scaleX(-1); }
@media (max-width: 767px) { .ani-lb__btn--prev, .ani-lb__btn--next { top: auto; bottom: 1.4rem; transform: none; } }

/* contact page + form */
.ani-contact { display: grid; gap: 3rem; }
.ani-contact__angel { width: 3.2rem; margin-bottom: 1.6rem; }
.ani-contact__intro { font: 400 clamp(1.4rem, 1.1rem + 0.8vw, 1.9rem)/1.35 var(--display); }
.ani-contact__list { margin: 0 0 1.8rem; display: grid; gap: 1.3rem; }
.ani-contact__list dt { font: 600 0.64rem/1 var(--sans); letter-spacing: 0.24em; text-transform: uppercase; color: var(--gold-3); margin-bottom: 0.4rem; }
.ani-contact__list dd { margin: 0; font-size: 1.05rem; }
.ani-contact__list a { text-decoration: none; }
.ani-contact__list a:hover { color: var(--gold-3); }
.ani-contact__social { display: flex; gap: 1.6rem; }
.ani-contact__social a { display: inline-flex; align-items: center; gap: 0.5rem; text-decoration: none; font: 600 0.68rem/1 var(--sans); letter-spacing: 0.2em; text-transform: uppercase; }
.ani-contact__social .ani-icon { width: 18px; height: 18px; color: var(--gold-3); }
@media (min-width: 1024px) { .ani-contact { grid-template-columns: 0.8fr 1.2fr; gap: 6rem; } }

.ani-form-wrap { max-width: 46rem; }
.ani-form__notice { padding: 1.2rem 1.4rem; border-radius: 6px; margin-bottom: 2rem; font-size: 0.95rem; }
.ani-form__notice strong { display: block; margin-bottom: 0.2rem; }
.ani-form__notice.is-ok { background: rgba(142, 155, 130, 0.18); border: 1px solid rgba(142, 155, 130, 0.6); }
.ani-form__notice.is-error { background: rgba(176, 138, 62, 0.12); border: 1px solid rgba(176, 138, 62, 0.6); }
.ani-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.ani-form__grid { display: grid; gap: 1.6rem 2.2rem; }
.ani-field { margin: 0; display: grid; gap: 0.4rem; }
.ani-field label { font: 600 0.64rem/1.4 var(--sans); letter-spacing: 0.22em; text-transform: uppercase; color: var(--muted); }
.ani-field label span { color: var(--gold-3); }
.ani-field input:not([type="checkbox"]), .ani-field select, .ani-field textarea {
	width: 100%;
	border: 0;
	border-bottom: 1px solid var(--line-2);
	background: transparent;
	padding: 0.85rem 0;
	font: 400 1.1rem/1.4 var(--sans);
	color: var(--ink);
	border-radius: 0;
	transition: border-color 0.3s;
}
.ani-field textarea { resize: vertical; min-height: 8rem; }
.ani-field input:focus, .ani-field select:focus, .ani-field textarea:focus { outline: none; border-bottom-color: var(--gold-3); box-shadow: 0 1px 0 0 var(--gold-3); }
.ani-field--check { grid-template-columns: auto 1fr; align-items: start; gap: 0.8rem; }
.ani-field--check label { text-transform: none; letter-spacing: 0; font: 400 0.88rem/1.55 var(--sans); color: var(--ink-2); }
.ani-field--check input { width: 1.15rem; height: 1.15rem; margin-top: 0.2rem; accent-color: var(--gold-3); }
.ani-form__actions { margin: 2.2rem 0 0; }
@media (min-width: 640px) { .ani-form__grid { grid-template-columns: 1fr 1fr; } .ani-field--full { grid-column: 1 / -1; } }

.ani-offer-cta { display: grid; justify-items: center; text-align: center; gap: 1.4rem; padding: 3rem 0 4rem; }
.ani-offer-others { padding-bottom: 2rem; }
.ani-offer-others__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.7rem; }
.ani-offer-others__list a { display: inline-flex; align-items: center; gap: 0.6rem; padding: 0.75rem 1.2rem; border: 1px solid var(--line-2); border-radius: 999px; text-decoration: none; font-size: 0.92rem; transition: background-color 0.3s, color 0.3s; }
.ani-offer-others__list a:hover { background: var(--ink); color: var(--paper); }
.ani-offer-others__list .ani-icon { width: 16px; height: 16px; }

.ani-post-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 2.6rem; }
.ani-post-list__date { font: 600 0.66rem/1 var(--sans); letter-spacing: 0.2em; text-transform: uppercase; color: var(--muted); }
.ani-post-list__title { font-size: 2rem; margin: 0.4rem 0; }
.ani-post-list__title a { text-decoration: none; }
.ani-post-list__title a:hover { color: var(--gold-3); }
.ani-post-list__excerpt { margin: 0; color: var(--ink-2); }

.ani-404 { min-height: 86vh; display: grid; place-items: center; text-align: center; padding: calc(var(--header-h) + 2rem) var(--g) 4rem; background: radial-gradient(70% 60% at 50% 0%, rgba(249, 226, 198, 0.8), rgba(201, 211, 224, 0.3) 50%, rgba(247, 242, 233, 0) 80%); }
.ani-404__inner { display: grid; justify-items: center; }
.ani-404__angel { width: 4.4rem; margin-bottom: 1.6rem; }
.ani-404__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem; }

/* ==========================================================================
   Reduced motion: the same story, still. Nothing moves on its own.
   ========================================================================== */

.ani-reduce-motion *, .ani-reduce-motion *::before, .ani-reduce-motion *::after { animation-duration: 0.001s !important; animation-iteration-count: 1 !important; transition-duration: 0.001s !important; scroll-behavior: auto !important; }
.is-still [data-reveal], .is-still [data-reveal="stagger"] > * { opacity: 1 !important; transform: none !important; clip-path: none !important; }
.is-still [data-reveal="mask"] img { transform: none !important; clip-path: none !important; }
.is-still .w > span { transform: none !important; }
.is-still .ani-hero [data-hero-fade], .is-still .ani-hero__script, .is-still .ani-hero__letters .l { opacity: 1 !important; transform: none !important; -webkit-mask: none !important; mask: none !important; }
.is-still .ani-hero__script { transform: rotate(-4deg) !important; }
.is-still .ani-place__text .wd { opacity: 1; }
.is-still .ani-shade i, .is-still .ani-hero__cue i::after, .is-still .ani-day__hint .ani-icon { animation: none !important; }
.is-still .ani-feathers, .is-still .ani-guide, .is-still .ani-cursor, .is-still .ani-day__sky, .is-still .ani-day__progress { display: none !important; }
.is-still .ani-day__pin, html:not(.js) .ani-day__pin { height: auto; overflow: visible; }
.is-still .ani-day__track, html:not(.js) .ani-day__track { position: relative; flex-direction: column; align-items: stretch; gap: 5rem; padding: 6rem var(--g); }
.is-still .ani-day__intro, html:not(.js) .ani-day__intro { flex: none; }
.is-still .ani-day__end, html:not(.js) .ani-day__end, html:not(.js) .ani-day__sky, html:not(.js) .ani-day__progress { display: none; }
.is-still .ani-album__plane { position: static; display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: 1rem; padding: 0 var(--g); }
.is-still .ani-album__tile { position: relative; aspect-ratio: 4 / 3; transform: none !important; width: auto !important; height: auto !important; }
.is-still .ani-album__window { height: auto; -webkit-mask-image: none; mask-image: none; cursor: auto; }
.is-still .ani-album__hint { display: none; }

/* Print */
@media print {
	.ani-header, .ani-menu, .ani-pre, .ani-veil, .ani-feathers, .ani-guide, .ani-cursor, .ani-hero__sky, .ani-hero__mist, .ani-date__air, .ani-shade { display: none !important; }
	[data-reveal], [data-reveal="stagger"] > * { opacity: 1 !important; transform: none !important; clip-path: none !important; }
	.w > span { transform: none !important; }
}

/* ==========================================================================
   Delicate frames (2.3.0): no arched "windows". The photo rests on a light
   passe-partout; a gold hairline draws itself around it as it comes into view
   and four tiny sparkles light up in the corners. Light as a feather.
   ========================================================================== */

.ani-frame {
	--fp: clamp(0.55rem, 0.9vw, 0.85rem);
	--fline: clamp(0.25rem, 0.42vw, 0.4rem);
	position: relative;
	overflow: visible !important;
	padding: var(--fp);
	border-radius: 3px;
	background: linear-gradient(165deg, #fffdf9 0%, #fbf6ec 55%, #f4ecdd 100%) !important;
	box-shadow:
		inset 0 1px 0 rgba(255, 255, 255, 0.8),
		0 0 0 1px rgba(176, 138, 62, 0.12),
		0 2px 4px rgba(60, 40, 20, 0.04),
		0 38px 70px -38px rgba(60, 40, 20, 0.45),
		0 14px 28px -18px rgba(60, 40, 20, 0.2);
	transition: box-shadow 0.8s var(--ease), translate 0.8s var(--ease);
}
.ani-frame__in { position: relative; display: block; width: 100%; height: 100%; overflow: hidden; border-radius: 2px; background: var(--paper-3); }
.ani-frame__in img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ani-day__img .ani-frame__in img { height: 115%; }

/* the gold hairline, drawn from the four corners */
.ani-frame::before {
	content: "";
	position: absolute;
	inset: var(--fline);
	z-index: 2;
	pointer-events: none;
	--g1: rgba(217, 185, 116, 0.95);
	--g2: rgba(176, 138, 62, 0.85);
	background:
		linear-gradient(90deg, var(--g1), var(--g2)) left top / 0 1px no-repeat,
		linear-gradient(180deg, var(--g1), var(--g2)) right top / 1px 0 no-repeat,
		linear-gradient(270deg, var(--g1), var(--g2)) right bottom / 0 1px no-repeat,
		linear-gradient(0deg, var(--g1), var(--g2)) left bottom / 1px 0 no-repeat;
	transition: background-size 1.8s var(--ease-out) 0.35s;
}
/* four sparkles on the hairline's corners */
.ani-frame::after {
	content: "";
	position: absolute;
	inset: calc(var(--fline) - 6px);
	z-index: 3;
	pointer-events: none;
	--spark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cdefs%3E%3CradialGradient id='g'%3E%3Cstop offset='0' stop-color='%23fff8e6'/%3E%3Cstop offset='.55' stop-color='%23e3c27e'/%3E%3Cstop offset='1' stop-color='%23b08a3e'/%3E%3C/radialGradient%3E%3C/defs%3E%3Cpath fill='url(%23g)' d='M12 0c.9 6.7 4.4 10.6 12 12-7.6 1.4-11.1 5.3-12 12-.9-6.7-4.4-10.6-12-12 7.6-1.4 11.1-5.3 12-12z'/%3E%3C/svg%3E");
	background: var(--spark) left top / 13px 13px no-repeat, var(--spark) right top / 13px 13px no-repeat, var(--spark) left bottom / 13px 13px no-repeat, var(--spark) right bottom / 13px 13px no-repeat;
	opacity: 0;
	transform: scale(0.6) rotate(-20deg);
	filter: drop-shadow(0 0 4px rgba(243, 214, 145, 0.9));
	transition: opacity 0.9s var(--ease) 1.6s, transform 1.2s var(--ease-out) 1.6s;
}
.ani-frame.is-in::before, .ani-frame:not([data-reveal])::before, html:not(.js) .ani-frame::before {
	background-size: 100% 1px, 1px 100%, 100% 1px, 1px 100%;
}
.ani-frame.is-in::after, .ani-frame:not([data-reveal])::after, html:not(.js) .ani-frame::after { opacity: 1; transform: none; }
.ani-frame.is-in::after { animation: ani-sparkle 5.5s var(--ease-io) 3.2s infinite; }
@keyframes ani-sparkle { 0%, 70%, 100% { opacity: 1; filter: drop-shadow(0 0 4px rgba(243, 214, 145, 0.9)); } 80% { opacity: 0.55; filter: drop-shadow(0 0 1px rgba(243, 214, 145, 0.4)); } 88% { opacity: 1; filter: drop-shadow(0 0 9px rgba(255, 236, 190, 1)); } }
@media (hover: hover) {
	.ani-frame:hover { box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8), 0 0 0 1px rgba(176, 138, 62, 0.22), 0 2px 4px rgba(60, 40, 20, 0.04), 0 50px 90px -40px rgba(60, 40, 20, 0.5), 0 18px 34px -18px rgba(60, 40, 20, 0.24); }
}
/* the thumbnail in the phone list of offers: a whisper of the same frame */
.ani-frame--mini { --fp: 0.28rem; --fline: 0.12rem; }
.ani-frame--mini::after { display: none; }
/* night panels of the day film: the mat dims a little with the dusk */
.ani-day.is-night .ani-frame { background: linear-gradient(165deg, #f7efe2, #e9dcc6) !important; }
/* the small photo laid over the tall one on "O nas" */
.ani-about__img--small.ani-frame { border: 0; }
.is-still .ani-frame::before, .is-still .ani-frame::after { transition: none; animation: none !important; }

/* ==========================================================================
   Dojazd (2.3.0): a feather glides along the chosen route from the region down
   to the gate. Paper map in hairlines (OpenStreetMap), then the drone photo with
   the way in and the logo above the house. Labels are HTML on top of the SVG.
   ========================================================================== */

.ani-dj { position: relative; padding: clamp(6rem, 12vw, 10rem) 0 clamp(4rem, 8vw, 7rem); background: linear-gradient(180deg, var(--paper) 0%, #f3ebdd 100%); }
.ani-dj__head { margin-bottom: clamp(1.5rem, 3vw, 2.5rem); }
.ani-dj__track { position: relative; height: 420vh; }
.ani-dj__stick { position: sticky; top: 0; height: 100vh; height: 100svh; box-sizing: border-box; padding-top: var(--header-h); display: flex; }
.ani-dj__stage { display: grid; grid-template-columns: minmax(16.5rem, 22rem) minmax(0, 1fr); gap: clamp(1.5rem, 3.4vw, 4rem); align-items: center; padding-block: 1rem 1.8rem; }
.ani-dj__frame { margin: 0; height: min(100%, 48rem); min-height: 20rem; }
.ani-dj__in { position: relative; overflow: hidden; isolation: isolate; background: radial-gradient(120% 90% at 50% 40%, #fbf7ef 0%, #f4ecdd 70%, #ede1cb 100%); }
.ani-dj__in::after { content: ""; position: absolute; inset: 0; z-index: 5; pointer-events: none; background: url("../img/grain.png"); opacity: 0.18; mix-blend-mode: multiply; }
.ani-dj__in::before { content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; box-shadow: inset 0 0 70px 10px rgba(237, 225, 203, calc(0.9 * (1 - var(--photo, 0)))), inset 0 0 0 1px rgba(176, 138, 62, 0.12); }

/* the map */
.ani-dj__map { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; display: block; z-index: 1; }
.ani-dj__map path { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.ani-dj__reg path, .ani-dj__loc path { vector-effect: non-scaling-stroke; }
.ani-dj__reg { opacity: var(--reg, 1); }
.ani-dj__loc { opacity: var(--loc, 0); }
.ani-dj__river { stroke: #b6c6c8; stroke-width: 1.3; }
.ani-dj__main { stroke: #d9c49b; stroke-width: 1.1; }
.ani-dj__mway-c { stroke: #e2cd9c; stroke-width: 4.2; }
.ani-dj__mway { stroke: #fffaf0; stroke-width: 1.5; }
.ani-dj__map .ani-dj__woods { fill: #e2e1c9; stroke: #d7d6ba; stroke-width: 0.6; opacity: 0.85; }
.ani-dj__minor { stroke: #e3d7c0; stroke-width: 1; }
.ani-dj__mid { stroke: #d8c39a; stroke-width: 1.6; }
.ani-dj__major { stroke: #ccb17c; stroke-width: 2.3; }
.ani-dj__route { stroke: #d6bb80; stroke-dasharray: 1 1; opacity: 0.6; transition: opacity 0.6s, stroke 0.6s; }
.ani-dj__route.is-on { opacity: 0.95; stroke: #ccab62; }
.ani-dj__trail-g { stroke: rgba(255, 236, 190, 0.95); stroke-dasharray: 1 1; }
.ani-dj__trail { stroke: #a8802f; stroke-dasharray: 1 1; }

/* the drone photo, then the way in */
.ani-dj__photo { position: absolute; left: 0; top: 0; z-index: 2; opacity: var(--photo, 0); transform-origin: 0 0; will-change: transform, opacity; }
.ani-dj__photo img { display: block; width: 100%; height: 100%; max-width: none; object-fit: fill; filter: saturate(1.02); }
.ani-dj__walk { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.ani-dj__walk path { fill: none; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 1 1; }
.ani-dj__walk-g { stroke: rgba(255, 244, 214, 0.5); }
.ani-dj__walk-l { stroke: #eab65a; }

/* labels and marks (HTML over the map; JS places them, CSS keeps them light) */
.ani-dj__marks { position: absolute; inset: 0; z-index: 4; pointer-events: none; }
.ani-dj__marks > * { position: absolute; left: 0; top: 0; will-change: transform; transition: opacity 0.5s; }
.ani-dj__marks > .is-out { opacity: 0 !important; visibility: hidden; }
.ani-dj__marks > .is-hid { opacity: 0 !important; }
.ani-dj__marks b, .ani-dj__marks small, .ani-dj__hamlet { --halo: #f7f1e6; text-shadow: 0 0 2px var(--halo), 0 0 6px var(--halo), 0 0 12px var(--halo); }

.ani-dj__town { opacity: var(--reg, 1); }
.ani-dj__town i { position: absolute; left: -3.5px; top: -3.5px; width: 7px; height: 7px; border-radius: 50%; background: #fffaf0; box-shadow: 0 0 0 1.5px var(--gold-2); }
.ani-dj__town b { position: absolute; left: 10px; top: -0.62em; white-space: nowrap; font: italic 400 0.92rem/1 var(--display); color: var(--muted); }
.ani-dj__town.is-origin b { font-size: clamp(1.05rem, 0.9rem + 0.5vw, 1.4rem); color: var(--ink); top: -0.66em; }
.ani-dj__town.is-origin i { width: 9px; height: 9px; left: -4.5px; top: -4.5px; background: var(--gold); box-shadow: 0 0 0 2px #fffaf0, 0 0 0 3px rgba(176, 138, 62, 0.45); }
.ani-dj__town small { position: absolute; left: 11px; top: 0.85rem; white-space: nowrap; font: 600 0.56rem/1 var(--sans); letter-spacing: 0.18em; text-transform: uppercase; color: var(--gold-3); }
.ani-dj__town.is-sel i::after { content: ""; position: absolute; inset: -7px; border-radius: 50%; border: 1px solid var(--gold); animation: ani-dj-ping 2.6s var(--ease-out) infinite; }
.ani-dj__town.is-edge b { color: var(--gold-3); }
.ani-dj__town.is-right b, .ani-dj__town.is-right small { left: auto; right: 10px; }
.ani-dj__shield { translate: -50% -50%; opacity: calc(var(--reg, 1) * 0.95); padding: 0.2rem 0.42rem 0.18rem; border-radius: 999px; background: #fffaf0; border: 1px solid #dcc390; font: 700 0.54rem/1 var(--sans); letter-spacing: 0.08em; color: var(--gold-3); }
.ani-dj__shield.is-a { background: linear-gradient(180deg, #fffaf0, #f6ead0); border-color: #c9a457; }
.ani-dj__hamlet { translate: -50% -50%; opacity: var(--loc, 0); white-space: nowrap; font: 600 0.58rem/1 var(--sans); letter-spacing: 0.24em; text-transform: uppercase; color: #8c7a63; }
.ani-dj__turn { opacity: calc(var(--loc, 0) * (1 - var(--photo, 0))); }
.ani-dj__turn::before { content: ""; position: absolute; left: -4px; top: -4px; width: 8px; height: 8px; border-radius: 50%; background: #fffaf0; box-shadow: 0 0 0 1.5px var(--gold); }
.ani-dj__turn b { position: absolute; right: 10px; top: -1.55em; white-space: nowrap; font: italic 400 0.92rem/1 var(--display); color: var(--gold-3); }
.ani-dj__turn.is-off { opacity: 0 !important; }

.ani-dj__gate { opacity: 0; transition: opacity 0.8s var(--ease); }
.ani-dj__gate.is-on { opacity: 1; }
.ani-dj__gate i { position: absolute; left: -7px; top: -7px; width: 14px; height: 14px; border-radius: 50%; background: radial-gradient(circle, #fff8e6 0 35%, #e3c27e 36% 60%, rgba(227, 194, 126, 0) 62%); }
.ani-dj__gate i::after { content: ""; position: absolute; inset: -6px; border-radius: 50%; border: 1.5px solid #fff1cc; animation: ani-dj-ping 2.4s var(--ease-out) infinite; }
.ani-dj__gate b { position: absolute; left: 14px; top: -2.1em; white-space: nowrap; padding: 0.42rem 0.75rem 0.4rem; border-radius: 999px; background: rgba(255, 251, 243, 0.94); border: 1px solid rgba(176, 138, 62, 0.45); font: 600 0.58rem/1 var(--sans); letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink); text-shadow: none; box-shadow: 0 10px 22px -12px rgba(42, 28, 18, 0.5); }

/* the logo of the place: an angel seal hanging over the exact spot */
.ani-dj__home { width: 0; height: 0; z-index: 2; transform-origin: 0 0; }
.ani-dj__home::before { content: ""; position: absolute; left: -0.5px; bottom: 0; width: 1px; height: 22px; background: linear-gradient(to top, rgba(176, 138, 62, 0.95), rgba(176, 138, 62, 0.15)); }
.ani-dj__home::after { content: ""; position: absolute; left: -3.5px; top: -3.5px; width: 7px; height: 7px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 0 2px #fffaf0, 0 0 10px 2px rgba(243, 214, 145, 0.9); }
.ani-dj__seal, .ani-dj__halo { position: absolute; left: -30px; bottom: 20px; width: 60px; height: 60px; border-radius: 50%; }
.ani-dj__seal { display: grid; place-items: center; background: radial-gradient(circle at 34% 28%, #fffef9 0%, #faf3e4 55%, #eedfbf 100%); box-shadow: 0 0 0 1px rgba(176, 138, 62, 0.6), 0 0 0 4px rgba(255, 251, 242, 0.95), 0 0 0 5px rgba(176, 138, 62, 0.32), 0 16px 26px -12px rgba(60, 40, 20, 0.55), 0 0 30px 4px rgba(243, 214, 145, 0.55); }
.ani-dj__angel { width: 36px; margin-top: 2px; --angel-ink: #8a6a2c; --angel-gold: #c49a4b; }
.ani-dj__halo { border: 1px solid rgba(217, 185, 116, 0.85); animation: ani-dj-halo 3.8s var(--ease-out) infinite; }
.ani-dj__halo + .ani-dj__halo { animation-delay: 1.9s; }
.ani-dj__name { position: absolute; left: 40px; bottom: 38px; white-space: nowrap; }
.ani-dj__name b { display: block; font: 400 1.32rem/1 var(--brand); letter-spacing: 0.26em; text-transform: uppercase; color: var(--ink); }
.ani-dj__name small { display: block; margin-top: 0.4rem; font: 400 1.45rem/1 var(--script); color: var(--gold-3); }
.ani-dj.is-photo .ani-dj__name b, .ani-dj.is-photo .ani-dj__name small { --halo: rgba(255, 248, 232, 0.95); }
.ani-dj__home.is-left .ani-dj__name { left: auto; right: 40px; text-align: right; }
.ani-dj__name { transition: opacity 0.6s var(--ease); }
.ani-dj__home.is-far .ani-dj__name { opacity: 0; }
.ani-dj.is-photo .ani-dj__name { bottom: 28px; padding: 0.6rem 0.95rem 0.5rem; border-radius: 8px; background: rgba(255, 251, 243, 0.94); box-shadow: 0 0 0 1px rgba(176, 138, 62, 0.35), 0 14px 26px -14px rgba(42, 28, 18, 0.55); }
.ani-dj.is-photo .ani-dj__home.is-left .ani-dj__name { right: 38px; }
.ani-dj__home.is-top .ani-dj__name { left: 0; right: auto; bottom: 90px; transform: translateX(calc(-50% + var(--nx, 0px))); text-align: center; }

.ani-dj__in .ani-dj__feather { position: absolute; width: 18px; height: 58px; max-width: none; overflow: visible; margin: -29px 0 0 -9px; transform-origin: 50% 50%; z-index: 3; filter: drop-shadow(0 4px 3px rgba(80, 52, 20, 0.35)) drop-shadow(0 0 6px rgba(255, 240, 200, 0.95)); }

@keyframes ani-dj-ping { from { transform: scale(0.6); opacity: 0.9; } to { transform: scale(2); opacity: 0; } }
@keyframes ani-dj-halo { from { transform: scale(1); opacity: 0.75; } to { transform: scale(2.4); opacity: 0; } }

/* the instruments in the corners */
.ani-dj__hud { position: absolute; inset: 0; z-index: 6; pointer-events: none; }
.ani-dj__alt { position: absolute; left: 1.1rem; top: 1rem; display: grid; gap: 0.25rem; padding: 0.6rem 0.85rem 0.55rem; border-radius: 6px; background: rgba(255, 251, 243, 0.82); box-shadow: 0 0 0 1px rgba(176, 138, 62, 0.25); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.ani-dj__alt small { font: 600 0.52rem/1 var(--sans); letter-spacing: 0.22em; text-transform: uppercase; color: var(--muted); }
.ani-dj__alt b { font: italic 400 1.2rem/1 var(--display); color: var(--ink); font-variant-numeric: lining-nums; }
.ani-dj__north { position: absolute; right: 1.1rem; top: 1rem; width: 2.5rem; height: 2.5rem; border-radius: 50%; display: grid; place-items: center; background: rgba(255, 251, 243, 0.82); box-shadow: 0 0 0 1px rgba(176, 138, 62, 0.3); }
.ani-dj__north svg { width: 14px; height: 22px; }
.ani-dj__north path { fill: #c9a457; }
.ani-dj__north i { position: absolute; top: -0.95rem; font: 700 0.56rem/1 var(--sans); letter-spacing: 0.1em; font-style: normal; color: var(--gold-3); }
.ani-dj__levels { position: absolute; right: 1rem; bottom: 1rem; z-index: 6; display: flex; gap: 0.25rem; padding: 0.25rem; border-radius: 999px; background: rgba(255, 251, 243, 0.86); box-shadow: 0 0 0 1px rgba(176, 138, 62, 0.25); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.ani-dj__levels button { padding: 0.55rem 0.8rem; border-radius: 999px; font: 600 0.56rem/1 var(--sans); letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-2); transition: background-color 0.4s, color 0.4s; }
.ani-dj__levels button.is-on { background: var(--ink); color: var(--paper); }
.ani-dj__caption { display: none; }
.ani-dj__credit { position: absolute; left: 1.1rem; bottom: 0.85rem; z-index: 6; font: 500 0.55rem/1.2 var(--sans); letter-spacing: 0.04em; color: rgba(91, 72, 56, 0.75); text-shadow: 0 0 4px #f7f1e6; }
.ani-dj.is-photo .ani-dj__credit { color: rgba(255, 250, 240, 0.85); text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); }

/* the side: where from, the way, the three stages */
.ani-dj__ask { margin: 0 0 1rem; font: 600 0.66rem/1.4 var(--sans); letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold-3); }
.ani-dj__pick { display: grid; gap: 0.55rem; }
.ani-dj__from { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; width: 100%; padding: 0.95rem 1.25rem; border: 1px solid var(--line-2); border-radius: 999px; background: rgba(255, 253, 248, 0.55); text-align: left; transition: background-color 0.45s, color 0.45s, border-color 0.45s, box-shadow 0.45s; }
.ani-dj__from b { font: italic 400 1.22rem/1 var(--display); }
.ani-dj__from small { font: 600 0.6rem/1 var(--sans); letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
.ani-dj__from:hover { border-color: var(--gold); }
.ani-dj__from[aria-pressed="true"] { background: var(--ink); color: var(--paper); border-color: var(--ink); box-shadow: 0 16px 30px -18px rgba(42, 28, 18, 0.65); }
.ani-dj__from[aria-pressed="true"] small { color: var(--gold-2); }
.ani-dj__via { margin: 1.1rem 0 1.6rem; min-height: 5em; font-size: 0.93rem; line-height: 1.65; color: var(--ink-2); }
.ani-dj__steps { list-style: none; margin: 0; padding: 1.3rem 0 0; display: grid; gap: 0.95rem; border-top: 1px solid var(--line); }
.ani-dj__steps li { display: grid; grid-template-columns: 2rem 1fr; gap: 0.5rem; opacity: 0.42; transition: opacity 0.6s var(--ease); }
.ani-dj__steps li.is-done { opacity: 0.68; }
.ani-dj__steps li.is-on { opacity: 1; }
.ani-dj__steps b { font: italic 400 1.1rem/1.25 var(--display); color: var(--gold-3); }
.ani-dj__steps span { font-size: 0.86rem; line-height: 1.55; color: var(--ink-2); }
.ani-dj__steps strong { display: block; margin-bottom: 0.15rem; font: 400 1.12rem/1.25 var(--display); color: var(--ink); }

/* go there */
.ani-dj__go { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem 2.5rem; margin-top: clamp(1rem, 2vw, 2rem); padding-top: clamp(2rem, 4vw, 3rem); border-top: 1px solid var(--line); }
.ani-dj__go-t { margin: 0 0 0.4rem; font: 400 var(--fs-m)/1.1 var(--display); }
.ani-dj__go-s { margin: 0; font-size: 0.85rem; color: var(--muted); }
.ani-dj__apps { display: flex; flex-wrap: wrap; gap: 0.7rem; }
.ani-dj__copy .ani-icon { width: 16px; height: 16px; }

/* phones and tablets: the map fills the stage, the towns are three buttons above it */
@media (max-width: 1023px) {
	.ani-dj__track { height: 340vh; }
	.ani-dj__stage { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); gap: 0.75rem; align-items: stretch; padding-block: 0.6rem 1rem; width: min(100% - 1.5rem, var(--container)); }
	.ani-dj__side > :not(.ani-dj__pick) { display: none; }
	.ani-dj__pick { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.4rem; }
	.ani-dj__from { flex-direction: column; align-items: center; justify-content: center; gap: 0.32rem; padding: 0.62rem 0.3rem 0.58rem; border-radius: 14px; text-align: center; }
	.ani-dj__from b { font-size: 1.02rem; }
	.ani-dj__from small { font-size: 0.5rem; letter-spacing: 0.08em; }
	.ani-dj__frame { height: 100%; min-height: 0; }
	.ani-dj__levels { display: none; }
	.ani-dj__alt { left: 0.7rem; top: 0.7rem; padding: 0.45rem 0.65rem 0.42rem; }
	.ani-dj__alt b { font-size: 1rem; }
	.ani-dj__north { right: 0.7rem; top: 0.7rem; width: 2.1rem; height: 2.1rem; }
	.ani-dj__caption { display: block; position: absolute; left: 0.7rem; right: 0.7rem; bottom: 1.7rem; z-index: 6; padding: 0.7rem 0.9rem; border-radius: 10px; background: rgba(255, 251, 243, 0.9); box-shadow: 0 0 0 1px rgba(176, 138, 62, 0.25), 0 12px 24px -16px rgba(42, 28, 18, 0.5); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); font-size: 0.8rem; line-height: 1.45; color: var(--ink-2); transition: opacity 0.4s; }
	.ani-dj__caption:empty { opacity: 0; }
	.ani-dj__caption strong { font: 400 0.98rem/1.2 var(--display); color: var(--ink); margin-right: 0.35rem; }
	.ani-dj__credit { left: 0.7rem; bottom: 0.55rem; font-size: 0.5rem; }
	.ani-dj__town:not(.is-origin), .ani-dj__shield:not(.is-a) { display: none; }
	.ani-dj__home.is-top .ani-dj__name, .ani-dj.is-photo .ani-dj__name { padding: 0.5rem 0.8rem 0.42rem; border-radius: 8px; background: rgba(255, 251, 243, 0.92); box-shadow: 0 0 0 1px rgba(176, 138, 62, 0.3); }
	.ani-dj__name b { font-size: 1.1rem; }
	.ani-dj__name small { font-size: 1.25rem; }
	.ani-dj__gate b { font-size: 0.52rem; }
	.ani-dj__go { flex-direction: column; align-items: stretch; }
	.ani-dj__apps { display: grid; grid-template-columns: 1fr 1fr; }
	.ani-dj__apps .ani-btn { justify-content: center; padding-inline: 1rem; }
	.ani-dj__apps .ani-btn:first-child, .ani-dj__apps .ani-dj__copy { grid-column: 1 / -1; }
}

/* calm mode and no JavaScript: no flight; the levels switch the view */
html.is-still .ani-dj__track, html:not(.js) .ani-dj__track { height: auto; }
html.is-still .ani-dj__stick, html:not(.js) .ani-dj__stick { position: relative; height: auto; padding-top: 0; }
html.is-still .ani-dj__frame, html:not(.js) .ani-dj__frame { height: min(72vh, 44rem); min-height: 24rem; }
html.is-still .ani-dj__levels { display: flex; }
html:not(.js) .ani-dj__photo { --photo: 1; width: 100%; height: 100%; }
html:not(.js) .ani-dj__photo img { object-fit: cover; }
html:not(.js) .ani-dj__marks, html:not(.js) .ani-dj__hud, html:not(.js) .ani-dj__levels, html:not(.js) .ani-dj__walk, html:not(.js) .ani-dj__map { display: none; }
@media (max-width: 1023px) {
	html.is-still .ani-dj__frame, html:not(.js) .ani-dj__frame { height: 68vh; min-height: 22rem; }
	html.is-still .ani-dj__levels { left: 0.7rem; right: auto; top: auto; bottom: 1.7rem; }
	html.is-still .ani-dj__caption { display: none; }
}
.is-still .ani-dj__halo, .is-still .ani-dj__gate i::after, .is-still .ani-dj__town.is-sel i::after { animation: none; opacity: 0; }

/* the guest book: a quiet link to all the reviews on Google */
.ani-book__more { margin: 1.6rem 0 0; text-align: center; }
.ani-book__more a { display: inline-flex; align-items: center; gap: 0.7rem; font: 600 0.66rem/1 var(--sans); letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink-2); text-decoration: none; padding-bottom: 0.35rem; border-bottom: 1px solid var(--line-2); transition: color 0.3s, border-color 0.3s; }
.ani-book__more a:hover { color: var(--ink); border-color: var(--gold); }
.ani-book__stars { color: var(--gold); letter-spacing: 0.12em; font-size: 0.8rem; }

/* ==========================================================================
   Film (2.3.0): the venue's minute, vertical, in a delicate frame
   ========================================================================== */
.ani-film { position: relative; padding: clamp(5rem, 10vw, 9rem) 0; }
.ani-film__wrap { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: clamp(2.5rem, 7vw, 8rem); align-items: center; }
.ani-film__text { max-width: 34rem; }
.ani-film__text .ani-head__text { margin-bottom: 2.2rem; }
.ani-film__frame { margin: 0; width: clamp(16rem, 27vw, 24rem); aspect-ratio: 9 / 16; }
.ani-film__frame .ani-frame__in { position: relative; background: #1c140e; }
.ani-film video { display: block; width: 100%; height: 100%; object-fit: cover; cursor: pointer; }
.ani-film__play { position: absolute; left: 50%; top: 50%; width: 4.6rem; height: 4.6rem; margin: -2.3rem 0 0 -2.3rem; border-radius: 50%; display: grid; place-items: center; background: rgba(255, 251, 243, 0.9); color: var(--ink); box-shadow: 0 0 0 1px rgba(176, 138, 62, 0.5), 0 0 0 7px rgba(255, 251, 243, 0.22), 0 18px 30px -14px rgba(0, 0, 0, 0.55); transition: opacity 0.5s, transform 0.6s var(--ease-out); }
.ani-film__play .ani-icon { width: 22px; height: 22px; margin-left: 3px; }
.ani-film.is-playing .ani-film__play { opacity: 0; transform: scale(0.85); pointer-events: none; }
.ani-film__i-pause { display: none; }
.ani-film.is-playing .ani-film__i-play { display: none; }
.ani-film.is-playing .ani-film__i-pause { display: block; margin-left: 0; }
.ani-film.is-playing .ani-film__play:focus-visible { opacity: 1; transform: none; pointer-events: auto; }
.ani-film__corner { position: absolute; right: 0.8rem; bottom: 1.6rem; width: 2.6rem; height: 2.6rem; border-radius: 50%; display: grid; place-items: center; background: rgba(28, 20, 14, 0.45); color: #fffaf0; box-shadow: 0 0 0 1px rgba(255, 250, 240, 0.35); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); transition: background-color 0.4s; }
.ani-film__corner svg { width: 18px; height: 18px; }
.ani-film__corner:hover { background: rgba(28, 20, 14, 0.7); }
.ani-film .ani-film__wave { opacity: 0; transition: opacity 0.4s; }
.ani-film .ani-film__x { transition: opacity 0.4s; }
.ani-film [aria-pressed="true"] .ani-film__wave { opacity: 1; }
.ani-film [aria-pressed="true"] .ani-film__x { opacity: 0; }
.ani-film__sound-btn .ani-film__wave { opacity: 0.35; }
.ani-film__bar { position: absolute; left: 1rem; right: 4rem; bottom: 2.9rem; height: 1px; background: rgba(255, 251, 243, 0.3); pointer-events: none; }
.ani-film__bar i { display: block; width: 100%; height: 100%; transform-origin: 0 50%; transform: scaleX(var(--p, 0)); background: linear-gradient(90deg, #f3d691, #fffaf0); }
@media (max-width: 860px) {
	.ani-film__wrap { grid-template-columns: minmax(0, 1fr); justify-items: center; }
	.ani-film__text { justify-self: stretch; }
	.ani-film__sound-btn { display: none; }
	.ani-film__frame { width: min(80vw, 22rem); }
}

/* ==========================================================================
   Touch life (2.3.0): phones get what the cursor gives on a desktop
   ========================================================================== */
.ani-guide { display: block; }
@media (max-width: 1023px), (hover: none) {
	.ani-guide { right: 3px; top: 26vh; bottom: 20vh; width: 14px; }
	.ani-guide__feather { left: -1px; width: 15px; }
}
.ani-tap { position: fixed; left: 0; top: 0; z-index: 1900; width: 46px; height: 46px; margin: -23px 0 0 -23px; border-radius: 50%; border: 1px solid var(--gold); background: radial-gradient(circle, rgba(243, 214, 145, 0.35), rgba(217, 185, 116, 0.08) 70%); pointer-events: none; animation: ani-tap 0.8s var(--ease-out) forwards; }
@keyframes ani-tap { from { transform: scale(0.35); opacity: 1; } to { transform: scale(1.7); opacity: 0; } }
@media (hover: none) {
	.ani-offer__item.is-active .ani-offer__title { font-style: italic; color: var(--gold-3); }
	.ani-offer__item.is-active .ani-offer__go { background: var(--ink); color: var(--paper); transform: rotate(-45deg); }
	.ani-offer__item.is-active .ani-offer__thumb { transform: scale(1.06) rotate(-1.5deg); }
	.ani-offer__thumb { transition: transform 0.8s var(--ease-out); }
	.ani-offer__list.has-active .ani-offer__item:not(.is-active) .ani-offer__title { color: rgba(42, 28, 18, 0.38); }
}
.is-still .ani-tap { display: none; }

/* the landed feather rides inside the landing line (scrolls with it natively on iPhone) */
.ani-hero__landing .ani-feather.is-landed { opacity: 1; transition: none; pointer-events: none; }

/* ==========================================================================
   Language switch PL | EN (2.4.0)
   ========================================================================== */
.ani-lang { display: inline-flex; align-items: center; font: 600 0.66rem/1 var(--sans); letter-spacing: 0.22em; }
.ani-lang > * { position: relative; padding: 0.55rem 0.5rem 0.55rem 0.62rem; color: inherit; text-decoration: none; }
.ani-lang > * + *::before { content: ""; position: absolute; left: 0; top: 50%; width: 1px; height: 0.8rem; margin-top: -0.4rem; background: currentColor; opacity: 0.35; }
.ani-lang a { opacity: 0.55; transition: opacity 0.3s; }
.ani-lang a:hover, .ani-lang a:focus-visible { opacity: 1; }
.ani-lang__on::after { content: ""; position: absolute; left: 0.62rem; right: 0.5rem; bottom: 0.25rem; height: 1px; background: currentColor; opacity: 0.7; }
.ani-lang--header { margin-right: 0.4rem; }
.ani-lang--menu { margin: 0 0 1.6rem -0.62rem; font-size: 0.8rem; }
@media (max-width: 767px) { .ani-lang--header { margin-right: 0; letter-spacing: 0.16em; } .ani-lang--header > * { padding-inline: 0.45rem 0.4rem; } }
/* narrow phones: the burger icon alone, so the logo keeps its whole name beside PL | EN */
@media (max-width: 479px) { .ani-lang--header ~ .ani-burger .ani-burger__label { display: none; } .ani-header__actions { gap: 0.9rem; } }

/* the form's answer and its waiting state (2.4.0) */
.ani-field.is-bad input, .ani-field.is-bad textarea, .ani-field.is-bad select { border-color: #b4542a !important; box-shadow: 0 0 0 1px #b4542a; }
.ani-field--check.is-bad label { color: #b4542a; }
.ani-form__msg { margin: 1rem 0 0; padding: 0.9rem 1.1rem; border-radius: 6px; font-size: 0.92rem; background: rgba(142, 155, 130, 0.18); }
.ani-form__msg.is-error { background: rgba(180, 84, 42, 0.1); color: #8a3a17; }
.ani-btn.is-busy { pointer-events: none; opacity: 0.75; }
.ani-btn.is-busy > span::after { content: ""; display: inline-block; width: 0.8em; height: 0.8em; margin-left: 0.7em; vertical-align: -0.1em; border: 1.5px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: ani-spin 0.8s linear infinite; }
@keyframes ani-spin { to { transform: rotate(360deg); } }
.ani-form__done { display: grid; justify-items: center; gap: 1.2rem; padding: clamp(2.5rem, 6vw, 4rem) 1.5rem; text-align: center; border-radius: 8px; background: linear-gradient(165deg, #fffdf9, #f6eedf); box-shadow: 0 0 0 1px rgba(176, 138, 62, 0.25), 0 30px 60px -40px rgba(60, 40, 20, 0.45); }
.ani-form__done p { margin: 0; max-width: 28rem; font: italic 400 clamp(1.15rem, 1rem + 0.6vw, 1.5rem)/1.45 var(--display); color: var(--ink); }
.ani-form__done-mark { width: 3.4rem; height: 3.4rem; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #fffef9, #f3e6c8); box-shadow: 0 0 0 1px rgba(176, 138, 62, 0.6), 0 0 0 5px rgba(255, 251, 242, 0.9), 0 0 24px 4px rgba(243, 214, 145, 0.6); position: relative; }
.ani-form__done-mark::after { content: ""; position: absolute; left: 1.15rem; top: 0.8rem; width: 0.75rem; height: 1.35rem; border: solid var(--gold-3); border-width: 0 2px 2px 0; transform: rotate(40deg); }
