/* ============================================================
   MOTYW: embroidered-garden  (Haftowany Ogród) — motyw 13, v375
   Jasny len i OSOBNE, wycięte z tła hafty (Canva, 27.10.2026):
   glicynia, róże, perły, zasłony, willa, łabędzie, haftowani goście.
   Każdy ekran ma własną kompozycję — nie ma pełnych plansz z łukiem.
   Jednostki: --t-px = 1 px płótna szerokiego na 900 px; wysokość
   ekranu w px płótna podaje --t-H (różna dla każdego ekranu).
   Warstwy (app.js → screenLayers) liczą się w % wysokości ekranu,
   więc wszystko skaluje się razem z szerokością kolumny.
   ============================================================ */

body[data-theme="embroidered-garden"] {
  --rg-ink:     #5A1E2C;
  --rg-body:    #5C4146;
  --rg-accent:  #8E3346;
  --rg-line:    rgba(142, 51, 70, .42);
  --rg-muted:   #7E8468;
  --rg-cream:   #F4EEE4;
  --rg-card:    #F4EEE4;
  --rg-pale:    #F4EEE4;
  --t-btn-txt:  #FBF4EA;
  --t-pole:     rgba(252, 248, 241, .9);
  --t-perla:    radial-gradient(circle at 35% 30%, #FFFFFF 0%, #F6EFE2 38%, #DCCDB4 78%, #B9A88C 100%);
  --rg-script:  'Great Vibes', cursive;
  --rg-display: 'Cormorant Garamond', serif;
  --rg-serif:   'Cormorant Garamond', serif;
  --rg-ui:      'Poppins', sans-serif;
  --rg-text:    'Poppins', sans-serif;
  background: #F4EEE4 url("../assets/themes/embroidered-garden/len.webp") repeat;
  background-size: 512px 512px;
  color: var(--rg-body);
  font-family: var(--rg-text);
}
/* Len pod całym zaproszeniem — także pod sekcją Prezenty, która nie jest ekranem. */
body[data-theme="embroidered-garden"] #rgScreens {
  background: #F4EEE4 url("../assets/themes/embroidered-garden/len.webp") repeat;
  background-size: calc(var(--rg-w, 760px) * .57) auto;
}
body[data-theme="embroidered-garden"]::after { display: none; }
body[data-theme="embroidered-garden"] .rg-screen {
  --t-1p: calc(var(--rg-w, 760px) * 5 / 3 / 100);
  --t-px: calc(var(--rg-w, 760px) / 900);
  --t-H: 1500;
}
body[data-theme="embroidered-garden"] .rg-date     { --t-H: 3500; }
body[data-theme="embroidered-garden"] .rg-schedule { --t-H: 1500; }
body[data-theme="embroidered-garden"] .rg-story    { --t-H: 1500; }
body[data-theme="embroidered-garden"] .rg-location { --t-H: 2600; }
body[data-theme="embroidered-garden"] .rg-rsvp     { --t-H: 1340; }
body[data-theme="embroidered-garden"] .rg-outro    { --t-H: 1410; }
/* Hafty stoją osobno na lnie — ekrany nie muszą na siebie zachodzić. */
body[data-theme="embroidered-garden"] #rgScreens .rg-screen + .rg-screen { margin-top: 0; }
body[data-theme="embroidered-garden"] .rg-screen > .rg-bg { -webkit-mask-image: none; mask-image: none; overflow: visible; }
body[data-theme="embroidered-garden"] #rgScreens .rg-screen { background: transparent; }

/* ── RAMA PŁÓTNA ─────────────────────────────────────────────── */
body[data-theme="embroidered-garden"] .rg-screen {
  position: relative;
  padding-top: 0;
  padding-bottom: 0;
  min-height: 0;
  height: calc(var(--t-px) * var(--t-H));
  overflow: visible;
}
body[data-theme="embroidered-garden"] .rg-screen > .rg-bg { height: calc(var(--t-px) * var(--t-H)); }
body[data-theme="embroidered-garden"] .rg-screen > .rg-inner,
body[data-theme="embroidered-garden"] .rg-location > .rg-dress {
  position: absolute;
  left: 50%;
  translate: -50% 0;
  top: 0;
  width: var(--rg-w, 760px);
  max-width: 100vw;
  height: calc(var(--t-px) * var(--t-H));
  margin: 0;
  padding: 0;
  text-align: center;
  z-index: 3;
  background: none;
}
body[data-theme="embroidered-garden"] .rg-screen > .rg-inner > *,
body[data-theme="embroidered-garden"] .rg-card > *,
body[data-theme="embroidered-garden"] .rg-dress-inner > * {
  position: absolute;
  margin: 0 !important;
}
body[data-theme="embroidered-garden"] .rg-card {
  position: absolute;
  inset: 0;
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  translate: none;
}
body[data-theme="embroidered-garden"] .rg-card::before { content: none; }
body[data-theme="embroidered-garden"] .rg-h {
  left: 10%;
  width: 80%;
  translate: 0 -50%;
  font-family: var(--rg-display);
  font-style: italic;
  font-weight: 500;
  font-size: calc(var(--t-px) * 60);
  text-transform: none;
  letter-spacing: .01em;
  line-height: 1.1;
  color: var(--rg-ink);
  white-space: nowrap;
}
body[data-theme="embroidered-garden"] .rg-h::before,
body[data-theme="embroidered-garden"] .rg-h::after { content: none; }
body[data-theme="embroidered-garden"] .t-opis,
body[data-theme="embroidered-garden"] .rg-date .rg-sub,
body[data-theme="embroidered-garden"] .rg-location .rg-addr,
body[data-theme="embroidered-garden"] .rg-dress .rg-p {
  font-family: var(--rg-text);
  font-style: normal;
  font-weight: 300;
  letter-spacing: 0;
  text-transform: none;
  color: var(--rg-body);
  text-wrap: balance;
}

/* ── GŁĘBIA HAFTU ────────────────────────────────────────────
   Każdy haft rzuca miękki cień na len — wygląda na wypukłą,
   naszytą łatkę. Hafty nie jadą paralaksą (niosą układ tekstu);
   ruszają się tylko osobne drobiazgi z folderu ruch/. */
body[data-theme="embroidered-garden"] .rg-bg img { transform: none !important; animation: none; }
body[data-theme="embroidered-garden"] .rg-bg img:not([data-foto]):not([src*="zdjecie_pary"]) {
  filter: drop-shadow(0 calc(var(--t-px) * 5) calc(var(--t-px) * 6) rgba(84, 48, 36, .22));
}
body[data-theme="embroidered-garden"] .rg-bg img[src*="ruch/"] {
  transform: translate3d(0, calc(var(--rg-par, 0px) * var(--rg-depth, 1) * .6), 0) !important;
  filter: drop-shadow(0 3px 4px rgba(60, 30, 20, .24));
}
@keyframes t13-ikona {
  0%, 100% { translate: 0 0;   rotate: -2.5deg; }
  50%      { translate: 0 -6%; rotate: 2.5deg; }
}
@keyframes t13-zdjecie {
  0%, 100% { scale: 1; }
  50%      { scale: 1.03; }
}
/* Glicynia „wisi”: zasłona z glicynii i girlanda delikatnie się wydłużają. */
@keyframes t13-wisi {
  0%, 100% { scale: 1 1; }
  50%      { scale: 1 1.018; }
}
/* Łabędzie kołyszą się na wodzie. */
@keyframes t13-plynie {
  0%, 100% { translate: 0 0;    rotate: -.6deg; }
  50%      { translate: 0 -2.5%; rotate: .6deg; }
}
body[data-theme="embroidered-garden"] .rg-bg img[src*="05-location/kurtyna"],
body[data-theme="embroidered-garden"] .rg-bg img[src*="02-date/girlanda"] {
  transform-origin: 50% 0;
  animation: t13-wisi 9s ease-in-out infinite;
}
body[data-theme="embroidered-garden"] .rg-bg img[src*="02-date/girlanda"] { animation-duration: 11s; animation-delay: -4s; }
body[data-theme="embroidered-garden"] .rg-story .rg-bg img[data-foto],
body[data-theme="embroidered-garden"] .rg-story .rg-bg img[src*="04-story/zdjecie"] {
  animation: t13-zdjecie 16s ease-in-out infinite;
  object-fit: cover;
  border-radius: 50%;
}
@media (prefers-reduced-motion: reduce) {
  body[data-theme="embroidered-garden"] .rg-bg img,
  body[data-theme="embroidered-garden"] .rg-schedule .rg-item .ico { animation: none !important; }
}

/* ══ EKRAN 2 — IMIONA · POWITANIE · LICZNIK ════════════════════
   0–1500: imiona między upiętymi zasłonami, data, pod nimi willa.
   1430–2520: rama z glicynii i róż — „Świętujmy razem” i zaproszenie,
   pod ramą łabędzie. 2560–3500: girlanda z pereł, „Odliczamy dni”,
   trzy perłowe medaliony, pas róż. */
body[data-theme="embroidered-garden"] .rg-date .rg-names {
  --rg-fit-w: 1;
  left: 19%;
  width: 62%;
  top: calc(var(--t-px) * 450);
  translate: 0 -50%;
  font-family: var(--rg-script);
  font-weight: 400;
  font-size: calc(var(--t-px) * 92 * var(--rg-kw, 1));
  line-height: 1.02;
  letter-spacing: 0;
  color: var(--rg-ink);
  white-space: nowrap;
  overflow-wrap: normal;
}
body[data-theme="embroidered-garden"] .rg-date .rg-names > span:not(.amp) { display: block; }
body[data-theme="embroidered-garden"] .rg-date .rg-names .amp {
  display: block;
  font-size: .42em;
  line-height: 1.3;
  margin: 0;
  color: var(--rg-accent);
}
body[data-theme="embroidered-garden"] .rg-date .rg-dateline {
  left: 19%;
  width: 62%;
  top: calc(var(--t-px) * 672);
  translate: 0 -50%;
  font-family: var(--rg-display);
  font-style: italic;
  font-weight: 500;
  font-size: max(13px, calc(var(--t-px) * 32));
  line-height: 1.2;
  letter-spacing: .02em;
  text-transform: none;
  color: var(--rg-accent);
  text-wrap: balance;
}
body[data-theme="embroidered-garden"] .rg-date .rg-welcome-h {
  display: block;
  left: 22%;
  width: 56%;
  top: calc(var(--t-px) * 1745);
  translate: 0 -50%;
  font-family: var(--rg-script);
  font-weight: 400;
  font-size: calc(var(--t-px) * 64);
  line-height: 1.1;
  color: var(--rg-ink);
}
body[data-theme="embroidered-garden"] .rg-date .rg-sub {
  --rg-fit: 1;
  left: 24%;
  width: 52%;
  top: calc(var(--t-px) * 1810);
  max-height: calc(var(--t-px) * 420);
  overflow: hidden;
  font-family: var(--rg-display);
  font-style: italic;
  font-weight: 400;
  font-size: calc(max(12.5px, calc(var(--t-px) * 30)) * var(--rg-k, 1));
  line-height: 1.45;
  color: var(--rg-body);
}
body[data-theme="embroidered-garden"] .rg-date .rg-count-h {
  display: block;
  left: 15%;
  width: 70%;
  top: calc(var(--t-px) * 2840);
  translate: 0 -50%;
  font-family: var(--rg-display);
  font-style: italic;
  font-weight: 500;
  font-size: calc(var(--t-px) * 58);
  line-height: 1.1;
  color: var(--rg-ink);
}
body[data-theme="embroidered-garden"] .rg-date .rg-count {
  left: 15%;
  width: 70%;
  max-width: none;
  top: calc(var(--t-px) * 2910);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: calc(var(--t-px) * 30);
}
body[data-theme="embroidered-garden"] .rg-date .rg-count > div { text-align: center; }
body[data-theme="embroidered-garden"] .rg-date .rg-count .num {
  display: grid;
  place-items: center;
  aspect-ratio: 420 / 415;
  padding-top: 4%;
  background: url("../assets/themes/embroidered-garden/02-date/medalion.webp") center / contain no-repeat;
  filter: drop-shadow(0 calc(var(--t-px) * 4) calc(var(--t-px) * 5) rgba(84, 48, 36, .2));
  font-family: var(--rg-display);
  font-weight: 500;
  font-style: normal;
  font-size: max(20px, calc(var(--t-px) * 64));
  line-height: 1;
  color: var(--rg-ink);
}
body[data-theme="embroidered-garden"] .rg-date .rg-count .lbl {
  margin-top: calc(var(--t-px) * 14);
  font-family: var(--rg-text);
  font-weight: 500;
  font-size: max(9.5px, calc(var(--t-px) * 16));
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--rg-muted);
}

/* ══ EKRAN 3 — PLAN DNIA: IKONY · LINIA Z PEREŁ · GODZINY ═══════ */
/* Plan dnia nie ma planszy — ekran rośnie z liczbą punktów (1–6),
   zamiast zostawiać pustkę nad i pod krótką listą. */
body[data-theme="embroidered-garden"] .rg-schedule { height: auto; }
body[data-theme="embroidered-garden"] .rg-schedule > .rg-bg { height: 100%; }
body[data-theme="embroidered-garden"] .rg-schedule > .rg-inner {
  position: relative;
  left: auto;
  translate: none;
  margin: 0 auto;
  height: auto;
  padding: calc(var(--t-px) * 105) 0 calc(var(--t-px) * 140);
}
body[data-theme="embroidered-garden"] .rg-schedule > .rg-inner > * { position: relative; }
body[data-theme="embroidered-garden"] .rg-schedule .rg-h { left: auto; width: auto; top: auto; translate: none; font-size: calc(var(--t-px) * 64); }
body[data-theme="embroidered-garden"] .rg-schedule > .rg-inner::before {
  content: "";
  position: absolute;
  left: 50%;
  translate: -50% 0;
  top: calc(var(--t-px) * 192);
  width: calc(var(--t-px) * 380);
  height: calc(var(--t-px) * 25);
  background: url("../assets/themes/embroidered-garden/02-date/perly.webp") center / contain no-repeat;
}
body[data-theme="embroidered-garden"] .rg-schedule .rg-timeline {
  --rg-fit: 0;
  --t-ico: 128;
  --t-f: max(10.5px, calc(var(--t-px) * 22));
  left: auto;
  width: 76%;
  margin: calc(var(--t-px) * 95) auto 0 !important;
  height: auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: stretch;
  gap: 0;
  padding: 0;
  overflow: visible;
}
/* pionowa linia z kropek — przez całą listę, za perłami */
body[data-theme="embroidered-garden"] .rg-schedule .rg-timeline::before {
  content: "";
  position: absolute;
  left: calc(var(--t-px) * 263);
  top: calc(var(--t-px) * 50);
  bottom: calc(var(--t-px) * 50);
  width: 0;
  border-left: max(2px, calc(var(--t-px) * 3)) dotted rgba(142, 51, 70, .45);
}
body[data-theme="embroidered-garden"] .rg-schedule .rg-timeline::after { content: none; }
body[data-theme="embroidered-garden"] .rg-schedule .rg-timeline:has(.rg-item:nth-child(5)) { --t-ico: 112; }
body[data-theme="embroidered-garden"] .rg-schedule .rg-timeline:has(.rg-item:nth-child(6)) { --t-ico: 100; --t-f: max(10px, calc(var(--t-px) * 21)); }
body[data-theme="embroidered-garden"] .rg-schedule .rg-item {
  position: relative;
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: calc(var(--t-px) * 210) calc(var(--t-px) * 106) 1fr;
  align-items: center;
  gap: 0;
  margin: 0;
  padding: calc(var(--t-px) * 22 * var(--rg-k, 1)) 0;
  min-height: 0;
  text-align: left;
}
body[data-theme="embroidered-garden"] .rg-schedule .rg-item::before,
body[data-theme="embroidered-garden"] .rg-schedule .rg-item::after { content: none; }
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .ico {
  position: static;
  display: block;
  justify-self: center;
  width: 100%;
  height: calc(var(--t-px) * var(--t-ico) * var(--rg-k, 1));
  object-fit: contain;
  margin: 0;
  filter: drop-shadow(0 calc(var(--t-px) * 4) calc(var(--t-px) * 5) rgba(84, 48, 36, .22));
  animation: t13-ikona 7s ease-in-out infinite;
}
body[data-theme="embroidered-garden"] .rg-schedule .rg-item:nth-child(2n) .ico { animation-delay: -2.3s; }
body[data-theme="embroidered-garden"] .rg-schedule .rg-item:nth-child(3n) .ico { animation-delay: -4.6s; }
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .pearl {
  display: block;
  position: static;
  justify-self: center;
  width: calc(var(--t-px) * 22);
  height: calc(var(--t-px) * 22);
  min-width: 8px;
  min-height: 8px;
  border-radius: 50%;
  background: var(--t-perla);
  box-shadow: 0 1px 3px rgba(84, 48, 36, .35);
}
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .txt {
  position: static;
  margin: 0;
  padding: 0;
  text-align: left;
}
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .time,
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .desc,
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .godz,
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .nazwa {
  display: block;
  margin: 0;
  padding: 0;
  letter-spacing: 0;
  text-transform: none;
  font-style: normal;
}
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .godz::after,
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .nazwa::before { content: none; }
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .godz {
  font-family: var(--rg-display);
  font-weight: 600;
  font-size: calc(var(--t-f) * 1.5 * var(--rg-k, 1));
  line-height: 1.1;
  color: var(--rg-accent);
}
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .nazwa {
  font-family: var(--rg-text);
  font-weight: 500;
  font-size: max(9.5px, calc(var(--t-f) * .82 * var(--rg-k, 1)));
  letter-spacing: .16em;
  text-transform: uppercase;
  line-height: 1.35;
  color: var(--rg-ink);
}
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .desc {
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: calc(var(--t-f) * .9 * var(--rg-k, 1));
  line-height: 1.35;
  margin-top: .15em;
  color: var(--rg-body);
}
body[data-theme="embroidered-garden"] .rg-schedule .rg-item .desc:empty { display: none; }

/* ══ EKRAN 4 — HISTORIA W ŁUKU Z KWIATÓW ═══════════════════════
   Zdjęcie pary leży POD perłowym medalionem (warstwy w app.js). */
body[data-theme="embroidered-garden"] .rg-story .rg-heart,
body[data-theme="embroidered-garden"] .rg-story .rg-postcard,
body[data-theme="embroidered-garden"] .rg-story .rg-collage { display: none !important; }
body[data-theme="embroidered-garden"] .rg-story .rg-h { left: 25%; width: 50%; top: calc(var(--t-px) * 372); font-size: calc(var(--t-px) * 54); }
body[data-theme="embroidered-garden"] .rg-story .rg-cols {
  --rg-fit: 1;
  left: 27%;
  width: 46%;
  top: calc(var(--t-px) * 745);
  max-height: calc(var(--t-px) * 540);
  overflow: hidden;
  display: block;
  columns: auto;
  text-align: center;
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: calc(max(10.5px, calc(var(--t-px) * 20)) * var(--rg-k, 1));
  line-height: 1.55;
  color: var(--rg-body);
  text-wrap: balance;
}
body[data-theme="embroidered-garden"] .rg-story .rg-cols .rg-p,
body[data-theme="embroidered-garden"] .rg-outro .rg-cols .rg-p {
  --rg-fit: 0;
  display: inline;
  position: static;
  margin: 0;
  font: inherit;
  line-height: inherit;
  color: inherit;
}
body[data-theme="embroidered-garden"] .rg-story .rg-cols .rg-p:first-child::after,
body[data-theme="embroidered-garden"] .rg-outro .rg-cols .rg-p:first-child::after { content: " "; }

/* ══ EKRAN 5 — MIEJSCE NA LNIANEJ KARCIE + DRESS CODE ══════════ */
body[data-theme="embroidered-garden"] .rg-location .rg-loc-cards:empty { display: none; }
body[data-theme="embroidered-garden"] .rg-location .rg-card .rg-h { left: 25%; width: 50%; top: calc(var(--t-px) * 398); font-size: calc(var(--t-px) * 54); }
body[data-theme="embroidered-garden"] .rg-location .rg-map {
  left: calc(var(--t-px) * 215);
  width: calc(var(--t-px) * 470);
  top: calc(var(--t-px) * 448);
  height: calc(var(--t-px) * 300);
  aspect-ratio: auto;
  min-height: 0;
  border: calc(var(--t-px) * 6) solid #FBF7F0;
  border-radius: calc(var(--t-px) * 10);
  box-shadow: 0 0 0 1px rgba(142, 51, 70, .25), 0 calc(var(--t-px) * 6) calc(var(--t-px) * 14) rgba(84, 48, 36, .18);
  z-index: 1;
  background: rgba(255, 252, 245, .85);
}
body[data-theme="embroidered-garden"] .rg-location .rg-addr {
  --rg-fit: 1;
  left: calc(var(--t-px) * 205);
  width: calc(var(--t-px) * 490);
  top: calc(var(--t-px) * 782);
  max-height: calc(var(--t-px) * 115);
  overflow: hidden;
  font-size: calc(max(10.5px, calc(var(--t-px) * 21)) * var(--rg-k, 1));
  line-height: 1.38;
}
body[data-theme="embroidered-garden"] .rg-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 1.4em;
  min-height: 0;
  border: 0;
  border-radius: 999px;
  background: var(--rg-accent);
  color: var(--t-btn-txt);
  box-shadow: 0 calc(var(--t-px) * 4) calc(var(--t-px) * 10) rgba(90, 30, 44, .22);
  font-family: var(--rg-text);
  font-weight: 500;
  font-size: max(10px, calc(var(--t-px) * 18));
  letter-spacing: .16em;
  text-transform: uppercase;
  white-space: nowrap;
}
body[data-theme="embroidered-garden"] .rg-btn:hover { filter: brightness(.92); }
body[data-theme="embroidered-garden"] .rg-location .rg-btn {
  left: 50%;
  translate: -50% -50%;
  top: calc(var(--t-px) * 935);
  width: auto;
  min-width: calc(var(--rg-w, 760px) * .22);
  height: calc(var(--t-px) * 58);
}
body[data-theme="embroidered-garden"] .rg-location .rg-btn .rg-pin { display: none; }
body[data-theme="embroidered-garden"] .rg-location > .rg-dress { pointer-events: none; overflow: visible; }
body[data-theme="embroidered-garden"] .rg-location > .rg-dress::before,
body[data-theme="embroidered-garden"] .rg-location > .rg-dress::after { content: none; }
body[data-theme="embroidered-garden"] .rg-dress-inner {
  position: absolute;
  inset: 0;
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  pointer-events: auto;
}
body[data-theme="embroidered-garden"] .rg-dress .rg-h { top: calc(var(--t-px) * 1880); font-size: calc(var(--t-px) * 56); }
body[data-theme="embroidered-garden"] .rg-dress-grid {
  left: 50%;
  translate: -50% -50%;
  top: calc(var(--t-px) * 1965);
  width: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: calc(var(--t-px) * 24);
}
body[data-theme="embroidered-garden"] .rg-dress .rg-swatches { display: flex; flex-direction: row; gap: calc(var(--t-px) * 24); }
body[data-theme="embroidered-garden"] .rg-dress .rg-sw {
  width: calc(var(--t-px) * 46);
  height: calc(var(--t-px) * 46);
  border: calc(var(--t-px) * 5) solid #FBF7F0;
  box-shadow: 0 0 0 1px rgba(142, 51, 70, .22), 0 2px 6px rgba(84, 48, 36, .18);
}
body[data-theme="embroidered-garden"] .rg-dress-fig { display: none; }
body[data-theme="embroidered-garden"] .rg-dress .rg-p {
  --rg-fit: 1;
  left: calc(var(--t-px) * 180);
  width: calc(var(--t-px) * 540);
  top: calc(var(--t-px) * 2010);
  max-height: calc(var(--t-px) * 130);
  overflow: hidden;
  font-size: calc(max(10px, calc(var(--t-px) * 19)) * var(--rg-k, 1));
  line-height: 1.4;
}
body[data-theme="embroidered-garden"] #rgLocation { z-index: 3; }

/* ══ EKRAN 6 — RSVP: KOPERTA Z PIECZĘCIĄ I URNA KWIATÓW ═══════ */
body[data-theme="embroidered-garden"] .rg-rsvp .rg-h { left: 20%; width: 60%; top: calc(var(--t-px) * 490); font-size: calc(var(--t-px) * 66); }
body[data-theme="embroidered-garden"] .rg-rsvp .rg-q,
body[data-theme="embroidered-garden"] .rg-rsvp .rg-msg-label {
  left: 20%;
  width: 60%;
  translate: 0 -50%;
  font-family: var(--rg-text);
  font-style: normal;
  font-weight: 400;
  font-size: max(9.5px, calc(var(--t-px) * 16));
  line-height: 1.2;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--rg-muted);
}
body[data-theme="embroidered-garden"] .rg-rsvp .rg-q { top: calc(var(--t-px) * 570); }
body[data-theme="embroidered-garden"] .rg-rsvp .rg-msg-label { top: calc(var(--t-px) * 770); }
body[data-theme="embroidered-garden"] .rg-rsvp .rg-radios {
  left: 20%;
  width: 60%;
  top: calc(var(--t-px) * 655);
  translate: 0 -50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(var(--t-px) * 10);
}
body[data-theme="embroidered-garden"] .rg-rsvp .rg-radio {
  font-family: var(--rg-text);
  font-style: normal;
  font-weight: 300;
  font-size: max(11px, calc(var(--t-px) * 21));
  line-height: 1.2;
  color: var(--rg-body);
}
body[data-theme="embroidered-garden"] .rg-rsvp .rg-radio .dot { border-color: var(--rg-accent); }
body[data-theme="embroidered-garden"] .rg-rsvp .rg-sep {
  display: block;
  left: 36%;
  width: 28%;
  top: calc(var(--t-px) * 725);
  height: 0;
  border: 0;
  border-top: 1px solid var(--rg-line);
  background: none;
}
body[data-theme="embroidered-garden"] .rg-rsvp .rg-textarea {
  left: calc(var(--t-px) * 245);
  width: calc(var(--t-px) * 410);
  top: calc(var(--t-px) * 800);
  height: calc(var(--t-px) * 120);
  min-height: 0;
  resize: none;
  background: var(--t-pole);
  border: 1px solid var(--rg-line);
  border-radius: calc(var(--t-px) * 6);
  box-shadow: none;
  color: var(--rg-body);
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: max(11px, calc(var(--t-px) * 17));
}
body[data-theme="embroidered-garden"] .rg-rsvp .rg-textarea::placeholder { color: var(--rg-muted); opacity: .8; }
body[data-theme="embroidered-garden"] .rg-rsvp .rg-btn {
  left: 50%;
  translate: -50% -50%;
  top: calc(var(--t-px) * 990);
  width: auto;
  min-width: calc(var(--rg-w, 760px) * .26);
  height: calc(var(--t-px) * 62);
}
body[data-theme="embroidered-garden"] .rg-rsvp .rg-note {
  --t-notka: max(46%, 17em);
  left: calc((100% - var(--t-notka)) / 2);
  width: var(--t-notka);
  top: calc(var(--t-px) * 1080);
  translate: 0 -50%;
  font-family: var(--rg-text);
  font-style: normal;
  font-weight: 300;
  font-size: max(9.5px, calc(var(--t-px) * 15));
  line-height: 1.35;
  color: var(--rg-muted);
  text-wrap: balance;
}
@media (max-width: 359px) {
  body[data-theme="embroidered-garden"] .rg-rsvp .rg-note { --t-notka: max(46%, 18.5em); font-size: 9px; }
}

/* ══ EKRAN 7 — ZAKOŃCZENIE NAD OGRODEM ═════════════════════════ */
body[data-theme="embroidered-garden"] .rg-outro .rg-outro-card,
body[data-theme="embroidered-garden"] .rg-outro .rg-outro-fig { display: none; }
body[data-theme="embroidered-garden"] .rg-outro .rg-monogram {
  --rg-fit-w: 1;
  left: 22%;
  width: 56%;
  top: calc(var(--t-px) * 425);
  translate: 0 -50%;
  font-family: var(--rg-script);
  font-weight: 400;
  font-style: normal;
  font-size: calc(var(--t-px) * 72 * var(--rg-kw, 1));
  line-height: 1.1;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
  color: var(--rg-ink);
}
body[data-theme="embroidered-garden"] .rg-outro .rg-monogram .amp { color: var(--rg-accent); font-size: .6em; }
body[data-theme="embroidered-garden"] .rg-outro .rg-h {
  left: 20%;
  width: 60%;
  top: calc(var(--t-px) * 525);
  font-size: calc(var(--t-px) * 44);
  white-space: normal;
  text-wrap: balance;
}
body[data-theme="embroidered-garden"] .rg-outro .rg-cols {
  --rg-fit: 1;
  left: calc(var(--t-px) * 200);
  width: calc(var(--t-px) * 500);
  top: calc(var(--t-px) * 585);
  max-height: calc(var(--t-px) * 280);
  overflow: hidden;
  display: block;
  columns: auto;
  text-align: center;
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: calc(max(10px, calc(var(--t-px) * 19)) * var(--rg-k, 1));
  line-height: 1.5;
  color: var(--rg-body);
  text-wrap: balance;
}

/* ══ ODSŁONA — HAFTOWANE ZASŁONY ROZSUWAJĄ SIĘ NA BOKI ══════════
   Pod zasłonami leży ten sam widok co początek ekranu 2 (upięte
   zasłony, willa) — po rozsunięciu zostaje dokładnie to, co pod spodem. */
/* Na wysokich telefonach pod zasłonami zostaje sam len — jak podłoga sceny. */
body[data-theme="embroidered-garden"] .plate-reveal {
  align-items: flex-start;
  background: #F4EEE4 url("../assets/themes/embroidered-garden/len.webp") repeat;
  background-size: 300px 300px;
}
body[data-theme="embroidered-garden"] .plate-bleed { display: none; }
body[data-theme="embroidered-garden"] .plate-stage {
  width: min(100vw, var(--rg-w, 760px));
  height: calc(min(100vw, var(--rg-w, 760px)) * 5 / 3);
}
body[data-theme="embroidered-garden"] .plate-canvas .plate-layer { object-fit: fill; }
body[data-theme="embroidered-garden"] .plate-skrz {
  z-index: 3;
  transform: translateX(0) scaleX(1);
  filter: drop-shadow(0 8px 14px rgba(84, 48, 36, .25));
  transition: transform 1.6s cubic-bezier(.55, .02, .2, 1), opacity .5s linear;
}
body[data-theme="embroidered-garden"] .sk-lewo  { transform-origin: 0% 50%; }
body[data-theme="embroidered-garden"] .sk-prawo { transform-origin: 100% 50%; }
body[data-theme="embroidered-garden"] .plate-reveal.opening .sk-lewo {
  transform: translateX(-62%) scaleX(.55);
  opacity: 0;
  transition-delay: 0s, 1.15s;
}
body[data-theme="embroidered-garden"] .plate-reveal.opening .sk-prawo {
  transform: translateX(62%) scaleX(.55);
  opacity: 0;
  transition-delay: .08s, 1.2s;
}
body[data-theme="embroidered-garden"] .plate-reveal.opening .plate-layer { transform: none; opacity: 1; }
body[data-theme="embroidered-garden"] .plate-reveal.opening { opacity: 0; transition: opacity .45s ease 1.2s; }
body[data-theme="embroidered-garden"] .plate-reveal.opened { opacity: 0; }
body[data-theme="embroidered-garden"] .plate-reveal.opening .plate-cta { animation: none; opacity: 0; transition: opacity .3s; }
body[data-theme="embroidered-garden"] .plate-cta {
  --t-h: calc(min(100vw, var(--rg-w, 760px)) * 5 / 3);
  bottom: auto;
  top: calc(var(--t-h) * 0.64);
  z-index: 6;
  padding: .8em 1.8em;
  background: rgba(248, 243, 234, .95);
  box-shadow: 0 4px 18px rgba(0, 0, 0, .16);
  font-family: var(--rg-text);
  font-weight: 500;
  font-size: max(11px, calc(var(--t-h) * .0128));
  letter-spacing: .24em;
  text-transform: uppercase;
  color: #5A1E2C;
  opacity: 1;
  white-space: nowrap;
  animation: t13-cta 3.4s ease-in-out infinite;
}
@keyframes t13-cta { 0%, 100% { opacity: 1; } 50% { opacity: .8; } }
/* v396: zasłony odsłaniają PRAWDZIWY pierwszy ekran — pałac, imiona, datę i miejsce
   naraz. Wcześniej pod zasłonami leżał obrazek ekranu bez tekstów (otwarcie.webp),
   więc po rozsunięciu był sam pałac, a napisy pojawiały się dopiero po zniknięciu
   planszy. Teraz w chwili dotknięcia obrazek i tło planszy znikają, a zasłony
   rozsuwają się nad żywą stroną (teksty wchodzą razem z nimi — reveal-start). */
body[data-theme="embroidered-garden"] .plate-reveal { transition: background-color .2s linear; }
body[data-theme="embroidered-garden"] .plate-reveal.opening { background: transparent; }
body[data-theme="embroidered-garden"] .plate-canvas > img.plate-layer[src$="otwarcie.webp"] { transition: opacity .2s linear; }
body[data-theme="embroidered-garden"] .plate-reveal.opening .plate-canvas > img.plate-layer[src$="otwarcie.webp"] { opacity: 0; }
/* Telefon (ekran wyższy niż 3:5): zasłony na CAŁY ekran — bez pasa lnu pod spodem;
   plansza ma wysokość ekranu, boki zasłon wychodzą poza kadr. */
/* v397: komputer i tablet (ekran szerszy niż 3:5) — zasłony też na CAŁE okno.
   Każda połowa ma pół szerokości okna i pełną wysokość; obraz jest skalowany
   proporcjonalnie (cover, przypięty do góry), więc kantar z różami zostaje,
   a dół fałd się przycina — bez rozciągania haftu. */
@media (min-aspect-ratio: 3/5) {
  body[data-theme="embroidered-garden"] .plate-reveal { justify-content: center; overflow: hidden; }
  body[data-theme="embroidered-garden"] .plate-stage { flex: none; width: 100vw; height: 100svh; }
  body[data-theme="embroidered-garden"] .plate-canvas .plate-layer { object-fit: cover; object-position: center top; }
  body[data-theme="embroidered-garden"] .sk-lewo .plate-layer { object-position: right top; }
  body[data-theme="embroidered-garden"] .sk-prawo .plate-layer { object-position: left top; }
  body[data-theme="embroidered-garden"] .plate-cta { top: min(calc(100svh * .64), calc(100svh - 72px)); }
}
@media (max-aspect-ratio: 3/5) {
  body[data-theme="embroidered-garden"] .plate-reveal { justify-content: center; overflow: hidden; }
  body[data-theme="embroidered-garden"] .plate-stage { flex: none; width: 60svh; height: 100svh; }
  body[data-theme="embroidered-garden"] .plate-cta { top: min(calc(100svh * .64), calc(100svh - 72px)); }
}
@media (prefers-reduced-motion: reduce) {
  body[data-theme="embroidered-garden"] .plate-skrz,
  body[data-theme="embroidered-garden"] .plate-reveal.opening .plate-skrz { transition: opacity .3s linear; transform: none; }
}

/* ══ TELEFON ══════════════════════════════════════════════════
   Przy podłodze stopnia pisma opisy są względnie większe niż na
   płótnie — dostają szersze pola. */
@media (max-width: 480px) {
  body[data-theme="embroidered-garden"] .rg-story .rg-cols { left: 25%; width: 50%; font-size: calc(10px * var(--rg-k, 1)); }
  body[data-theme="embroidered-garden"] .rg-dress .rg-p { left: 17%; width: 66%; }
  body[data-theme="embroidered-garden"] .rg-outro .rg-cols { left: 20%; width: 60%; }
  body[data-theme="embroidered-garden"] .rg-location .rg-addr { left: 20%; width: 60%; }
}

/* ══ ELEMENTY RUCHOME ══════════════════════════════════════════
   Drobne hafty (motyle, trzmiel, gałązka róży, płatki) na marginesach —
   każdy w innej fazie i tempie. */
@keyframes t13-galaz {
  0%, 100% { rotate: -3deg; }
  50%      { rotate: 3.5deg; }
}
@keyframes t13-skrzydla {
  0%, 100% { scale: 1 1; }
  50%      { scale: .28 1; }
}
@keyframes t13-lot-a {
  0%   { translate: 0 0;                                              rotate: -8deg; }
  25%  { translate: calc(var(--t-px) * 90) calc(var(--t-px) * -75);   rotate: 12deg; }
  50%  { translate: calc(var(--t-px) * 30) calc(var(--t-px) * -160);  rotate: -4deg; }
  75%  { translate: calc(var(--t-px) * -45) calc(var(--t-px) * -60);  rotate: 10deg; }
  100% { translate: 0 0;                                              rotate: -8deg; }
}
@keyframes t13-lot-b {
  0%   { translate: 0 0;                                              rotate: 8deg; }
  30%  { translate: calc(var(--t-px) * -75) calc(var(--t-px) * -90);  rotate: -10deg; }
  60%  { translate: calc(var(--t-px) * -15) calc(var(--t-px) * -180); rotate: 6deg; }
  100% { translate: 0 0;                                              rotate: 8deg; }
}
@keyframes t13-platek {
  0%   { translate: 0 0;                                                rotate: 0deg;   opacity: 0; }
  6%   {                                                                                opacity: .95; }
  30%  { translate: calc(var(--t-px) * 45) calc(var(--t-px) * 450);     rotate: 110deg; }
  55%  { translate: calc(var(--t-px) * -38) calc(var(--t-px) * 840);    rotate: 220deg; }
  80%  { translate: calc(var(--t-px) * 30) calc(var(--t-px) * 1230);    rotate: 330deg; opacity: .9; }
  100% { translate: calc(var(--t-px) * -15) calc(var(--t-px) * 1500);   rotate: 420deg; opacity: 0; }
}
body[data-theme="embroidered-garden"] .rg-bg img[src*="ruch/galaz"] {
  transform-origin: 50% 0%;
  animation: t13-galaz 7.5s ease-in-out infinite;
}
body[data-theme="embroidered-garden"] .rg-bg img[src*="ruch/motyl"] {
  animation: t13-skrzydla .42s ease-in-out infinite, t13-lot-a 16s ease-in-out infinite;
}
body[data-theme="embroidered-garden"] .rg-bg img[src*="ruch/motyl_2"] {
  animation: t13-skrzydla .38s ease-in-out infinite, t13-lot-b 19s ease-in-out infinite;
}
body[data-theme="embroidered-garden"] .rg-bg img[src*="ruch/platek"] {
  opacity: 0;
  animation: t13-platek 17s linear infinite;
}
body[data-theme="embroidered-garden"] .rg-bg img[src*="ruch/platek_2"] { animation-duration: 21s; animation-delay: -7s; }
body[data-theme="embroidered-garden"] .rg-bg img[src*="ruch/platek_3"] { animation-duration: 19s; animation-delay: -12s; }
body[data-theme="embroidered-garden"] .rg-bg img[src*="ruch/platek_4"] { animation-duration: 23s; animation-delay: -4s; }
@media (prefers-reduced-motion: reduce) {
  body[data-theme="embroidered-garden"] .rg-bg img[src*="ruch/"] { animation: none !important; }
  body[data-theme="embroidered-garden"] .rg-bg img[src*="ruch/platek"] { display: none; }
}

/* Gdy nad RSVP stoją Prezenty (z kopertą na dole ramki), druga koperta
   tuż pod nią byłaby powtórzeniem — RSVP zostaje wtedy bez niej. */
body[data-theme="embroidered-garden"] #rgGifts:not([hidden]) + #rgRsvp .rg-bg img[src*="06-rsvp/koperta"] { display: none; }
/* Prezenty: kokarda na planszy zastępuje ikonkę nad nagłówkiem. */
body[data-theme="embroidered-garden"] #rgGifts .rg-gifts-orn { display: none; }

/* ══ v408 (uwagi Dawida) ══════════════════════════════════════════
   Plan dnia: haftowane pnącza róż po obu bokach, jak w RSVP i zakończeniu.
   Kafel 166×584 px wycięty z ramki RSVP i zszyty tak, żeby powtarzał się
   bez szwu — plan dnia rośnie z liczbą punktów, pnącza razem z nim.
   Końce wygaszone, żeby nie urywały się na krawędzi sekcji. */
body[data-theme="embroidered-garden"] .rg-schedule > .rg-bg::before,
body[data-theme="embroidered-garden"] .rg-schedule > .rg-bg::after {
  content: "";
  position: absolute;
  top: calc(var(--t-px) * 40);
  bottom: calc(var(--t-px) * 40);
  width: calc(var(--t-px) * 104);
  background-repeat: repeat-y;
  background-size: 100% auto;
  pointer-events: none;
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 calc(var(--t-px) * 120), #000 calc(100% - var(--t-px) * 120), transparent 100%);
          mask-image: linear-gradient(180deg, transparent 0, #000 calc(var(--t-px) * 120), #000 calc(100% - var(--t-px) * 120), transparent 100%);
  filter: drop-shadow(0 1px 1.5px rgba(80, 60, 40, .18));
}
body[data-theme="embroidered-garden"] .rg-schedule > .rg-bg::before {
  left: calc(var(--t-px) * 14);
  background-image: url("../assets/themes/embroidered-garden/03-schedule/pnacze_l.webp");
}
body[data-theme="embroidered-garden"] .rg-schedule > .rg-bg::after {
  right: calc(var(--t-px) * 14);
  background-image: url("../assets/themes/embroidered-garden/03-schedule/pnacze_p.webp");
}

/* Dress code wyżej (uwaga Dawida): pod kurtyną z glicynii było ok. 80 px
   pustego lnu, zanim zaczynał się nagłówek. Kurtyna podjeżdża o 40 px
   do łąki lawendy, nagłówek, próbki, opis i goście o 80 px, a ekran jest
   o 80 px krótszy (2600 → 2520; warstwy przeliczone w js/app.js). */
body[data-theme="embroidered-garden"] .rg-location { --t-H: 2520; }
body[data-theme="embroidered-garden"] .rg-dress .rg-h { top: calc(var(--t-px) * 1800); }
body[data-theme="embroidered-garden"] .rg-dress-grid { top: calc(var(--t-px) * 1885); }
body[data-theme="embroidered-garden"] .rg-dress .rg-p { top: calc(var(--t-px) * 1930); }

/* Zakończenie (uwaga Dawida): imiona jedno pod drugim — „Imię", pod nim
   „&", pod nim „Imię" — a dopiero potem nagłówek i tekst. W jednej linii
   z „&" na końcu wiersza sekcja wyglądała na pustą. */
body[data-theme="embroidered-garden"] .rg-outro .rg-monogram {
  top: calc(var(--t-px) * 395);
  font-size: calc(var(--t-px) * 66 * var(--rg-kw, 1));
  line-height: 1.12;
}
body[data-theme="embroidered-garden"] .rg-outro .rg-monogram > span { display: block; }
body[data-theme="embroidered-garden"] .rg-outro .rg-monogram .amp { font-family: var(--rg-display); font-style: italic; font-size: .5em; line-height: 1.5; }
body[data-theme="embroidered-garden"] .rg-outro .rg-h { top: calc(var(--t-px) * 548); }
body[data-theme="embroidered-garden"] .rg-outro .rg-cols { top: calc(var(--t-px) * 612); max-height: calc(var(--t-px) * 255); }

/* Ekran 2, rama „Świętujmy razem" (uwaga Dawida): tekst stał u góry ramy,
   pod nim było puste płótno, a pod ramą łabędzie. Łabędzie usunięte, w dole
   ramy haftowany toast (warstwa toast.webp, 1967–2300 px), nagłówek i zdanie
   podjeżdżają, a zdanie ma pole kończące się nad toastem. */
body[data-theme="embroidered-garden"] .rg-date .rg-welcome-h { top: calc(var(--t-px) * 1712); }
body[data-theme="embroidered-garden"] .rg-date .rg-sub { top: calc(var(--t-px) * 1772); max-height: calc(var(--t-px) * 185); }
/* Bez łabędzi pod ramą zostawał pas pustego lnu — dolna część ekranu
   (girlanda, „Odliczamy dni", licznik, pas róż) podjeżdża o 120 px,
   ekran 3500 → 3380 (warstwy przeliczone w js/app.js). */
body[data-theme="embroidered-garden"] .rg-date { --t-H: 3380; }
body[data-theme="embroidered-garden"] .rg-date .rg-count-h { top: calc(var(--t-px) * 2720); }
body[data-theme="embroidered-garden"] .rg-date .rg-count { top: calc(var(--t-px) * 2790); }

/* Historia (uwaga Dawida): nagłówek, medalion ze zdjęciem i tekst niżej,
   tak żeby wypełniały cały łuk (wcześniej dół łuku był pusty). Medalion
   +100 px (warstwy w js/app.js), nagłówek +85 px, tekst wyśrodkowany
   w polu 870–1310 px. */
body[data-theme="embroidered-garden"] .rg-screen.rg-story .rg-h { top: calc(var(--t-px) * 457); }
body[data-theme="embroidered-garden"] .rg-screen.rg-story .rg-cols { top: calc(var(--t-px) * 1080); translate: 0 -50%; max-height: calc(var(--t-px) * 440); }

/* v414 (uwaga Dawida): rama „Świętujmy razem" bez toastu i niższa — tyle,
   ile potrzeba na nagłówek i zdanie. Z ramy wycięty pas 298 px pliku
   z boków (rama_n.webp, szew zszyty przenikaniem), rama ma 725 zamiast
   972 px płótna. Wszystko pod nią podjeżdża o 247 px, ekran 3380 → 3133
   (warstwy przeliczone w js/app.js). */
body[data-theme="embroidered-garden"] .rg-date { --t-H: 3133; }
body[data-theme="embroidered-garden"] .rg-date .rg-count-h { top: calc(var(--t-px) * 2473); }
body[data-theme="embroidered-garden"] .rg-date .rg-count { top: calc(var(--t-px) * 2543); }
body[data-theme="embroidered-garden"] .rg-screen.rg-date .rg-welcome-h { top: calc(var(--t-px) * 1745); }
body[data-theme="embroidered-garden"] .rg-screen.rg-date .rg-sub { top: calc(var(--t-px) * 1805); }
