/* ============================================================
   MOTYW: italian-linen  (Włoski Len) — motyw 10
   5 ekranów: paski, cytryny, basen, koperta, RSVP z zakończeniem.

   14.10 — PRZEBUDOWA WG PLIKU ZBIORCZEGO
   „włoskie minimalistyczne / z tekstem full zaproszenie włoskie.svg"
   (900 × 7354,3; górne krawędzie plansz: 0 / 1487,1 / 2935 / 4364,6
   / 5870,3). Co pokazało porównanie z tym, co było na stronie:
     • tekst w pliku jest GRANATOWY (#002266), przyciski kobaltowe
       (#003FA3), pole wiadomości #F2F0E4 — u nas cały motyw szedł
       oliwkową zielenią z innego zaproszenia,
     • kroje: The Seasons (nagłówki), NewIconScript (imiona,
       kaligrafia) i Now-Light (opisy) — zamienniki jak w motywie 7,
       który ma te same kroje: Bodoni Moda, Great Vibes, Poppins 300,
     • sekcje szły wyśrodkowaną kolumną, więc historia, lokalizacja
       i RSVP rozpychały się do 137–163 % płótna, a teksty lądowały
       na zdjęciach (nagłówek „Historia pary" na fotografii, słowa od
       pary na drzewku cytrynowym),
     • historia nie miała żółtego tła z planszy i pokazywała ramkę
       z koronki z innego motywu,
     • harmonogram miał ikonki i faliste linie WRYSOWANE w tło pod
       cztery punkty (zob. parts.scheduleLayout w js/app.js),
     • brakowało białego pasa „Save the date" pod harmonogramem
       i nazwy miejsca pod licznikiem.
   Każdy blok tekstu stoi ŚRODKIEM na środku swojego pola
   (top = środek pola, translate 0 −50 %), więc przy krótszym i dłuższym
   tekście jest zawsze pośrodku. Jednostki: --il-1p = 1 % wysokości
   płótna, --il-px = 1 piksel pliku (szerokość 900).
   ============================================================ */

body[data-theme="italian-linen"] {
  --rg-ink:      #002266;      /* nagłówki, imiona, opisy */
  --rg-body:     #002266;
  --rg-accent:   #003FA3;      /* przyciski z planszy */
  --rg-line:     #C9D3E6;
  --rg-pale:     #FFF6C7;
  --rg-cream:    #FFFFFF;
  --rg-card:     #FFFFFF;
  --rg-muted:    #5A6B8C;
  --il-pole:     #F2F0E4;      /* pole wiadomości */

  --rg-script:   'Great Vibes', cursive;        /* NewIconScript */
  --rg-display:  'Bodoni Moda', serif;          /* The Seasons */
  --rg-serif:    'Bodoni Moda', serif;
  --rg-ui:       'Poppins', sans-serif;         /* Now-Light */
  --rg-text:     'Poppins', sans-serif;

  background: #FFFFFF;
  color: var(--rg-body);
  font-family: var(--rg-text);
}
body[data-theme="italian-linen"] #rgScreens { background: #FFFFFF; }
body[data-theme="italian-linen"] .rg-screen {
  --il-1p: calc(var(--rg-w, 760px) * 5 / 3 / 100);
  --il-px: calc(var(--rg-w, 760px) / 900);
}
body[data-theme="italian-linen"] .rg-screen .rg-bg {
  object-fit: cover;
  object-position: center;
}

/* ══════════════════════════════════════════════════════════════
   RUCH GRAFIK
   Warstwy, na których stoi tekst (tła z papierem, kopertą, kartą RSVP),
   nie jadą paralaksą ani „oddechem" — tekst zawsze trzyma się grafiki.
   Ruszają się elementy żywe: cytryny, drzewko w donicy, zdjęcia, ikonki
   harmonogramu. Tylko translate/rotate/scale — `transform` należy do
   paralaksy i animacji wejścia.
   ══════════════════════════════════════════════════════════════ */
body[data-theme="italian-linen"] .rg-bg img { transform: none !important; }

@keyframes il-oddech {
  0%, 100% { scale: 1; }
  50%      { scale: 1.016; }
}
@keyframes il-cytryna {
  0%, 100% { rotate: -2.4deg; }
  50%      { rotate: 2.4deg; }
}
@keyframes il-drzewko {
  0%, 100% { rotate: -1.4deg; }
  50%      { rotate: 1.4deg; }
}
@keyframes il-unos {
  0%, 100% { translate: 0 0;     scale: 1; }
  50%      { translate: 0 -0.7%; scale: 1.01; }
}
@keyframes il-ramka {
  0%, 100% { translate: 0 0; }
  50%      { translate: 0 -0.35%; }
}
@keyframes il-ikona {
  0%, 100% { translate: 0 0;   rotate: -2deg; }
  50%      { translate: 0 -5%; rotate: 2deg; }
}
/* Ekran 1: tapeta z cytrynami oddycha, papier z imionami STOI —
   podstawa dawała mu dryf (przesuw o 2 % i obrót o 1,1°), więc imiona
   i data jeździły razem z nim. */
body[data-theme="italian-linen"] .rg-bg img[src$="01-start/papier.webp"] { animation: none; }
body[data-theme="italian-linen"] .rg-bg img[src$="01-start/tlo.webp"] {
  animation: il-oddech 30s ease-in-out infinite;
}
/* Cytryny w rogach tabliczki harmonogramu i u dołu planszy. */
body[data-theme="italian-linen"] .rg-bg img[src$="02-schedule/limonki_1.webp"] {
  animation: il-ramka 9s ease-in-out infinite;
}
body[data-theme="italian-linen"] .rg-bg img[src$="02-schedule/limonki_2.webp"] {
  transform-origin: 50% 100%;
  animation: il-unos 11s ease-in-out infinite -3s;
}
/* Historia: plaster cytryny na spinaczu i gałązka kołyszą się,
   zdjęcia lekko unoszą (każde w innej fazie). */
body[data-theme="italian-linen"] .rg-bg img[src$="03-story/limonki_2.webp"] {
  transform-origin: 50% 80%;
  animation: il-cytryna 6.5s ease-in-out infinite;
}
body[data-theme="italian-linen"] .rg-bg img[src$="03-story/limonki_1.webp"] {
  transform-origin: 85% 30%;
  animation: il-cytryna 8s ease-in-out infinite -2s;
}
body[data-theme="italian-linen"] .rg-story .rg-bg img[data-foto],
body[data-theme="italian-linen"] .rg-story .rg-bg img[src*="03-story/zdjecie"],
body[data-theme="italian-linen"] .rg-story .rg-bg img[data-warstwa*="03-story/zdjecie"] {
  animation: il-unos 12s ease-in-out infinite;
}
body[data-theme="italian-linen"] .rg-story .rg-bg img[src*="zdjecie_2"],
body[data-theme="italian-linen"] .rg-story .rg-bg img[data-warstwa*="zdjecie_2"] { animation-delay: -4s; }
body[data-theme="italian-linen"] .rg-story .rg-bg img[src*="zdjecie_3"],
body[data-theme="italian-linen"] .rg-story .rg-bg img[data-warstwa*="zdjecie_3"] { animation-delay: -8s; }
/* Lokalizacja: zdjęcia unoszą się, plaster cytryny na mapie kołysze. */
body[data-theme="italian-linen"] .rg-location .rg-bg img[src*="zdjecie_lokalizacja"],
body[data-theme="italian-linen"] .rg-location .rg-bg img[data-warstwa*="zdjecie_lokalizacja"] {
  animation: il-unos 11s ease-in-out infinite;
}
body[data-theme="italian-linen"] .rg-location .rg-bg img[src*="zdjecie_lokalizacja_2"],
body[data-theme="italian-linen"] .rg-location .rg-bg img[data-warstwa*="zdjecie_lokalizacja_2"] { animation-delay: -5s; }
/* RSVP: cytryny z kokardkami w rogach karty i drzewko w donicy
   (kołysze się wokół donicy, nie wokół środka). */
body[data-theme="italian-linen"] .rg-bg img[src$="05-rsvp/limonka_1.webp"] {
  transform-origin: 50% 10%;
  animation: il-cytryna 6.5s ease-in-out infinite;
}
body[data-theme="italian-linen"] .rg-bg img[src$="05-rsvp/limonka_1.webp"] + img[src$="05-rsvp/limonka_1.webp"] {
  animation-delay: -2.6s;
}
body[data-theme="italian-linen"] .rg-bg img[src$="05-rsvp/limonka_2.webp"] {
  transform-origin: 50% 78%;
  animation: il-drzewko 7.5s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
  body[data-theme="italian-linen"] .rg-location .rg-card::after,
  body[data-theme="italian-linen"] .rg-bg img,
  body[data-theme="italian-linen"] .rg-schedule .rg-item .ico { animation: none !important; }
}

/* ══════════════════════════════════════════════════════════════
   RAMA PŁÓTNA — każda sekcja ma dokładnie wymiar planszy 900 × 1500,
   a teksty stoją w niej bezwzględnie (procent płótna).
   ══════════════════════════════════════════════════════════════ */
body[data-theme="italian-linen"] .rg-date,
body[data-theme="italian-linen"] .rg-schedule,
body[data-theme="italian-linen"] .rg-story,
body[data-theme="italian-linen"] .rg-location,
body[data-theme="italian-linen"] .rg-rsvp {
  position: relative;
  padding-top: 0;
  padding-bottom: 0;
  min-height: calc(var(--il-1p) * 100);
  height: calc(var(--il-1p) * 100);
}
body[data-theme="italian-linen"] .rg-date > .rg-bg,
body[data-theme="italian-linen"] .rg-schedule > .rg-bg,
body[data-theme="italian-linen"] .rg-story > .rg-bg,
body[data-theme="italian-linen"] .rg-location > .rg-bg,
body[data-theme="italian-linen"] .rg-rsvp > .rg-bg {
  height: calc(var(--il-1p) * 100);
}
body[data-theme="italian-linen"] .rg-date > .rg-inner,
body[data-theme="italian-linen"] .rg-schedule > .rg-inner,
body[data-theme="italian-linen"] .rg-story > .rg-inner,
body[data-theme="italian-linen"] .rg-location > .rg-inner,
body[data-theme="italian-linen"] .rg-rsvp > .rg-inner,
body[data-theme="italian-linen"] .rg-location > .rg-dress,
body[data-theme="italian-linen"] .rg-outro-inline {
  position: absolute;
  left: 50%;
  translate: -50% 0;
  top: 0;
  width: var(--rg-w, 760px);
  max-width: 100vw;
  height: calc(var(--il-1p) * 100);
  margin: 0;
  padding: 0;
  text-align: center;
  z-index: 3;
}
body[data-theme="italian-linen"] .rg-date > .rg-inner > *,
body[data-theme="italian-linen"] .rg-schedule > .rg-inner > *,
body[data-theme="italian-linen"] .rg-story > .rg-inner > *,
body[data-theme="italian-linen"] .rg-location > .rg-inner > *,
body[data-theme="italian-linen"] .rg-rsvp .rg-card > *,
body[data-theme="italian-linen"] .rg-dress-inner > *,
body[data-theme="italian-linen"] .rg-outro-inline .rg-inner > * {
  position: absolute;
  /* `!important`, bo podstawa daje niektórym blokom margines z wyższą
     specyficznością (np. opis dress code'u +34 px) — a tu każde pole
     stoi środkiem na swoim miejscu. */
  margin: 0 !important;
}

/* Zakładka między ekranami liczona od płótna, nie od okna. Bazowe 7vw
   na telefonie to 4,2 % płótna, ale na monitorze 1440 px — 100 px, czyli
   7,9 % płótna: następny ekran przykrywał datę „Save the date" i nazwę
   miejsca pod licznikiem. Teraz zakładka ma wszędzie 4,2 % płótna. */
body[data-theme="italian-linen"] #rgScreens .rg-screen + .rg-screen {
  margin-top: calc(var(--rg-w, 760px) * -0.07);
}

/* Wspólny krój nagłówków (The Seasons → Bodoni Moda, prosty, bez
   wersalików — w pliku „Lokalizacja", „Dresscode", „Kilka słów"). */
body[data-theme="italian-linen"] .rg-h {
  font-family: var(--rg-display);
  font-style: normal;
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
  line-height: 1.1;
  color: var(--rg-ink);
  white-space: nowrap;
}
body[data-theme="italian-linen"] .rg-h::before,
body[data-theme="italian-linen"] .rg-h::after { content: none; }

/* ══════════════════════════════════════════════════════════════
   EKRAN 1 — IMIONA NA PAPIERZE, LICZNIK W BIAŁYM PASIE
   Plik: imiona 100 px (Robert — linia bazowa 26,5 %, „&" 31,1 %,
   Patrycja 36,6 %), zdanie 18 px (45–49,5 %), data krojem The Seasons
   48 px (57,3 %), licznik w trzech kolumnach (x 24,5 / 50 / 75,5 %,
   dwukropki 55 px, liczby 84,1 %, podpisy 86,8 %), miejsce pod nim
   (92,4 %). Papier z falistą ramką: 16,3–67,6 % płótna, biały pas
   od 77 %.
   ══════════════════════════════════════════════════════════════ */
body[data-theme="italian-linen"] .rg-date .rg-names {
  left: 12%;
  width: 76%;
  top: calc(var(--il-1p) * 29.9);
  translate: 0 -50%;
  font-family: var(--rg-script);
  font-weight: 400;
  font-size: calc(var(--il-px) * 92);
  line-height: 1.05;
  color: var(--rg-ink);
  overflow-wrap: anywhere;
}
body[data-theme="italian-linen"] .rg-date .rg-names > span:not(.amp) { display: block; }
body[data-theme="italian-linen"] .rg-date .rg-names .amp {
  display: block;
  font-size: .46em;
  line-height: 1.2;
  margin: 0;
}
body[data-theme="italian-linen"] .rg-date .rg-sub {
  left: 27%;
  width: 46%;
  top: calc(var(--il-1p) * 47.4);
  translate: 0 -50%;
  font-family: var(--rg-text);
  font-style: normal;
  font-weight: 300;
  font-size: max(10.5px, calc(var(--il-px) * 18));
  line-height: 1.3;
  letter-spacing: 0;
  text-transform: none;
  color: var(--rg-ink);
  text-wrap: balance;
}
/* Data i miejsce to dwa osobne pola planszy (parts.dateLineSplit). */
body[data-theme="italian-linen"] .rg-date .rg-dateline {
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  font-size: 0;
  line-height: 0;
}
body[data-theme="italian-linen"] .rg-date .rg-dateline .dl-data,
body[data-theme="italian-linen"] .rg-date .rg-dateline .dl-miejsce {
  position: absolute;
  left: 15%;
  width: 70%;
  translate: 0 -50%;
  color: var(--rg-ink);
  text-wrap: balance;
}
body[data-theme="italian-linen"] .rg-date .rg-dateline .dl-data {
  top: calc(var(--il-1p) * 56.2);
  font-family: var(--rg-display);
  font-size: calc(var(--il-px) * 42);
  line-height: 1.15;
}
body[data-theme="italian-linen"] .rg-date .rg-dateline .dl-miejsce {
  top: calc(var(--il-1p) * 92.4);
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: max(10.5px, calc(var(--il-px) * 20));
  line-height: 1.3;
}
body[data-theme="italian-linen"] .rg-date .rg-dateline .dl-data:empty,
body[data-theme="italian-linen"] .rg-date .rg-dateline .dl-miejsce:empty { display: none; }
body[data-theme="italian-linen"] .rg-date .rg-count {
  left: 12%;
  width: 76%;
  max-width: none;
  top: calc(var(--il-1p) * 84.7);
  translate: 0 -50%;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0;
}
body[data-theme="italian-linen"] .rg-date .rg-count > div {
  position: relative;
  flex: 1 1 0;
  text-align: center;
}
body[data-theme="italian-linen"] .rg-date .rg-count > div + div::before {
  content: ":";
  position: absolute;
  left: 0;
  top: 50%;
  translate: -50% -58%;
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: calc(var(--il-px) * 55);
  line-height: 1;
  color: var(--rg-ink);
}
body[data-theme="italian-linen"] .rg-date .rg-count .num {
  font-family: var(--rg-display);
  font-weight: 400;
  font-size: max(18px, calc(var(--il-px) * 34));
  line-height: 1.15;
  letter-spacing: 0;
  color: var(--rg-ink);
}
body[data-theme="italian-linen"] .rg-date .rg-count .lbl {
  font-family: var(--rg-display);
  font-weight: 400;
  font-size: max(11px, calc(var(--il-px) * 28));
  line-height: 1.15;
  letter-spacing: 0;
  text-transform: none;
  color: var(--rg-ink);
  opacity: 1;
}

/* ══════════════════════════════════════════════════════════════
   EKRAN 2 — HARMONOGRAM ZYGZAKIEM
   Plik: nagłówek 100 px nad tabliczką; punkty na przemian lewo/prawo
   (ikonka nad opisem), między nimi faliste linie; pod spodem biały pas
   z „Save the date" i datą (linie bazowe 91,2 % i 94 %).
   Układ: siatka dwóch kolumn i n+1 wierszy, punkt k zajmuje wiersze
   k i k+1, więc kolejne punkty zachodzą na siebie o pół wysokości —
   to jest zygzak z planszy, ale dla 1–6 punktów. Lista wypełnia wnętrze
   tabliczki (15,6–74,6 %); gdy się nie mieści, skrypt zmniejsza --rg-k.
   ══════════════════════════════════════════════════════════════ */
body[data-theme="italian-linen"] .rg-schedule .rg-h {
  left: 5%;
  width: 90%;
  top: calc(var(--il-1p) * 7.6);
  translate: 0 -50%;
  font-size: calc(var(--il-px) * 90);
}
body[data-theme="italian-linen"] .rg-schedule .rg-timeline {
  --rg-fit: 1;
  --il-ico: 8.2;
  --il-f: max(10.5px, calc(var(--il-px) * 21));
  left: 10%;
  width: 80%;
  top: calc(var(--il-1p) * 15.6);
  height: calc(var(--il-1p) * 58.4);
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: 1fr;
  column-gap: 0;
  row-gap: 0;
  padding: 0;
  margin: 0;
  overflow: visible;
}
body[data-theme="italian-linen"] .rg-schedule .rg-timeline::before,
body[data-theme="italian-linen"] .rg-schedule .rg-timeline::after { content: none; }
body[data-theme="italian-linen"] .rg-schedule .rg-timeline:has(.rg-item:nth-child(5)) { --il-ico: 7; }
body[data-theme="italian-linen"] .rg-schedule .rg-timeline:has(.rg-item:nth-child(6)) { --il-ico: 6.1; --il-f: max(10px, calc(var(--il-px) * 19.5)); }
body[data-theme="italian-linen"] .rg-schedule .rg-item {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: calc(var(--il-1p) * 0.5);
  width: auto;
  min-height: 0;
  margin: 0;
  padding: 0 4%;
  text-align: center;
  grid-column: 1;
}
body[data-theme="italian-linen"] .rg-schedule .rg-item:nth-child(even) { grid-column: 2; }
body[data-theme="italian-linen"] .rg-schedule .rg-item:nth-child(1) { grid-row: 1 / span 2; }
body[data-theme="italian-linen"] .rg-schedule .rg-item:nth-child(2) { grid-row: 2 / span 2; }
body[data-theme="italian-linen"] .rg-schedule .rg-item:nth-child(3) { grid-row: 3 / span 2; }
body[data-theme="italian-linen"] .rg-schedule .rg-item:nth-child(4) { grid-row: 4 / span 2; }
body[data-theme="italian-linen"] .rg-schedule .rg-item:nth-child(5) { grid-row: 5 / span 2; }
body[data-theme="italian-linen"] .rg-schedule .rg-item:nth-child(6) { grid-row: 6 / span 2; }
body[data-theme="italian-linen"] .rg-schedule .rg-item:only-child { grid-column: 1 / span 2; }
body[data-theme="italian-linen"] .rg-schedule .rg-item::before,
body[data-theme="italian-linen"] .rg-schedule .rg-item::after { content: none; }
body[data-theme="italian-linen"] .rg-schedule .rg-item .ico {
  position: static;
  display: block;
  width: auto;
  max-width: 78%;
  height: calc(var(--il-1p) * var(--il-ico) * var(--rg-k, 1));
  object-fit: contain;
  margin: 0;
  animation: il-ikona 7s ease-in-out infinite;
}
body[data-theme="italian-linen"] .rg-schedule .rg-item:nth-child(2n) .ico { animation-delay: -2.3s; }
body[data-theme="italian-linen"] .rg-schedule .rg-item:nth-child(3n) .ico { animation-delay: -4.6s; }
body[data-theme="italian-linen"] .rg-schedule .rg-item .pearl { display: none; }
body[data-theme="italian-linen"] .rg-schedule .rg-item .txt {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  max-width: calc(var(--rg-w, 760px) * 0.33);
  margin: 0;
  padding: 0;
  text-align: center;
}
body[data-theme="italian-linen"] .rg-schedule .rg-item .time,
body[data-theme="italian-linen"] .rg-schedule .rg-item .desc {
  display: block;
  margin: 0;
  font-family: var(--rg-text);
  font-style: normal;
  letter-spacing: 0;
  text-transform: none;
  color: var(--rg-ink);
  text-wrap: balance;
}
body[data-theme="italian-linen"] .rg-schedule .rg-item .godz,
body[data-theme="italian-linen"] .rg-schedule .rg-item .nazwa {
  display: block;
  margin: 0;
  padding: 0;
  font-style: normal;
  letter-spacing: 0;
  text-transform: none;
}
body[data-theme="italian-linen"] .rg-schedule .rg-item .godz::after,
body[data-theme="italian-linen"] .rg-schedule .rg-item .nazwa::before { content: none; }
body[data-theme="italian-linen"] .rg-schedule .rg-item .godz {
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: calc(var(--il-f) * 1.18 * var(--rg-k, 1));
  line-height: 1.2;
  white-space: nowrap;
}
body[data-theme="italian-linen"] .rg-schedule .rg-item .nazwa {
  font-family: var(--rg-display);
  font-weight: 500;
  font-size: calc(var(--il-f) * 1.05 * var(--rg-k, 1));
  line-height: 1.2;
}
body[data-theme="italian-linen"] .rg-schedule .rg-item .desc {
  font-weight: 300;
  font-size: calc(var(--il-f) * 0.8 * var(--rg-k, 1));
  line-height: 1.3;
  margin-top: .2em;
}
body[data-theme="italian-linen"] .rg-schedule .rg-item .desc:empty { display: none; }
/* Falista linia z planszy: od ikonki tego punktu do ikonki następnego,
   środkiem tabliczki (x 37,5–62,5 % płótna). Ikonka leży ~2,6 pkt
   nad środkiem punktu, kolejny punkt jest o pół komórki niżej. */
body[data-theme="italian-linen"] .rg-schedule .rg-item .ribbon {
  position: absolute;
  z-index: 0;
  top: calc(50% - var(--il-1p) * 2.4);
  height: 50%;
  width: 62.5%;
  object-fit: contain;
  pointer-events: none;
}
body[data-theme="italian-linen"] .rg-schedule .rg-item .ribbon.rb-l { left: 68.75%; }
body[data-theme="italian-linen"] .rg-schedule .rg-item .ribbon.rb-r { right: 68.75%; left: auto; }
body[data-theme="italian-linen"] .rg-schedule .rg-savedate {
  left: 10%;
  width: 80%;
  top: calc(var(--il-1p) * 92.2);
  translate: 0 -50%;
  color: var(--rg-ink);
}
body[data-theme="italian-linen"] .rg-schedule .rg-savedate span { display: block; }
body[data-theme="italian-linen"] .rg-schedule .rg-savedate .sd-napis {
  font-family: var(--rg-script);
  font-size: calc(var(--il-px) * 54);
  line-height: 1.1;
}
body[data-theme="italian-linen"] .rg-schedule .rg-savedate .sd-data {
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: max(12px, calc(var(--il-px) * 34));
  line-height: 1.2;
  letter-spacing: .04em;
}

/* ══════════════════════════════════════════════════════════════
   EKRAN 3 — HISTORIA PARY
   Plik: żółte tło #FFF6C7 (prostokąt na całą planszę), nagłówek 100 px,
   trzy zdjęcia z plastrem cytryny i gałązką (warstwy), opis pod nimi.
   Ramka z koronki i kartka z podstawy nie należą do tego motywu.
   ══════════════════════════════════════════════════════════════ */
body[data-theme="italian-linen"] .rg-story > .rg-bg { background: #FFF6C7; }
body[data-theme="italian-linen"] .rg-story .rg-heart,
body[data-theme="italian-linen"] .rg-story .rg-postcard,
body[data-theme="italian-linen"] .rg-story .rg-collage { display: none !important; }
body[data-theme="italian-linen"] .rg-story .rg-h {
  left: 5%;
  width: 90%;
  top: calc(var(--il-1p) * 11.9);
  translate: 0 -50%;
  font-size: calc(var(--il-px) * 92);
}
/* Opis stoi środkiem w pasie pod zdjęciami (77,4–93,4 %). */
body[data-theme="italian-linen"] .rg-story .rg-cols {
  --rg-fit: 1;
  left: 12%;
  width: 76%;
  top: calc(var(--il-1p) * 85.4);
  translate: 0 -50%;
  max-height: calc(var(--il-1p) * 15.4);
  overflow: hidden;
  display: block;
  columns: auto;  /* bez wielokolumnowości: przy max-height nadmiar uciekał do drugiej, ukrytej kolumny */
  text-align: center;
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: calc(max(10.5px, calc(var(--il-px) * 19)) * var(--rg-k, 1));
  line-height: 1.45;
  color: var(--rg-ink);
  text-wrap: balance;
}
body[data-theme="italian-linen"] .rg-story .rg-cols .rg-p {
  --rg-fit: 0;
  display: inline;
  position: static;
  margin: 0;
  font: inherit;
  line-height: inherit;
  color: inherit;
}
body[data-theme="italian-linen"] .rg-story .rg-cols .rg-p:first-child::after { content: " "; }

/* ══════════════════════════════════════════════════════════════
   EKRAN 4 — LOKALIZACJA + DRESS CODE
   Plik: nagłówek 85 px na podartej kartce nad zdjęciami, adres 18 px
   (35,7–38,5 %), przycisk „DOJAZD" (40,6–43,8 %), koperta z cytryną,
   biały pas od 71 % z „Dresscode", korowodem i opisem.
   Mapy w pliku nie ma — siedzi w kieszeni koperty (x 23,8–81,6 %,
   y od dna „V" 48,7 % do 65 %), a plaster cytryny przypina ją w rogu.
   ══════════════════════════════════════════════════════════════ */
body[data-theme="italian-linen"] .rg-location .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="italian-linen"] .rg-location .rg-card::before { content: none; }
body[data-theme="italian-linen"] .rg-location .rg-card > * { position: absolute; margin: 0; }
body[data-theme="italian-linen"] .rg-location .rg-loc-cards:empty { display: none; }
body[data-theme="italian-linen"] .rg-location .rg-h {
  left: 22%;
  width: 56%;
  top: calc(var(--il-1p) * 7.55);
  translate: 0 -50%;
  font-size: calc(var(--il-px) * 74);
}
body[data-theme="italian-linen"] .rg-location .rg-addr {
  left: 24%;
  width: 52%;
  top: calc(var(--il-1p) * 35.8);
  translate: 0 -50%;
  font-family: var(--rg-text);
  font-style: normal;
  font-weight: 300;
  font-size: max(10.5px, calc(var(--il-px) * 19));
  line-height: 1.3;
  letter-spacing: 0;
  color: var(--rg-ink);
  text-wrap: balance;
}
body[data-theme="italian-linen"] .rg-location .rg-btn {
  left: 50%;
  translate: -50% -50%;
  top: calc(var(--il-1p) * 41.8);
  width: auto;
  min-width: calc(var(--rg-w, 760px) * 0.2);
  height: calc(var(--il-1p) * 3.3);
  min-height: 0;
  padding: 0 1.2em;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 0;
  background: var(--rg-accent);
  color: #FFFFFF;
  box-shadow: none;
  font-family: var(--rg-display);
  font-weight: 400;
  font-size: max(11px, calc(var(--il-px) * 24));
  letter-spacing: .06em;
  text-transform: uppercase;
  white-space: nowrap;
}
body[data-theme="italian-linen"] .rg-location .rg-btn:hover { background: #00307E; }
body[data-theme="italian-linen"] .rg-location .rg-btn .rg-pin { display: none; }
body[data-theme="italian-linen"] .rg-location .rg-map {
  left: 27.5%;
  width: 45%;
  top: calc(var(--il-1p) * 50.4);
  height: calc(var(--il-1p) * 13);
  aspect-ratio: auto;
  min-height: 0;
  border: calc(var(--rg-w, 760px) * 0.007) solid #FFFFFF;
  border-radius: 0;
  box-shadow: 0 4px 14px rgba(0, 34, 102, .16);
  background: #EEF2F7;
  box-sizing: border-box;
  z-index: 1;
}
/* Plaster cytryny przypina mapę w prawym dolnym rogu. Warstwy tła
   leżą pod tekstem, a plaster ma być NAD mapą — więc rysuje go karta. */
body[data-theme="italian-linen"] .rg-location .rg-card::after {
  content: "";
  position: absolute;
  left: 61.5%;
  top: calc(var(--il-1p) * 59.2);
  width: 17%;
  height: calc(var(--il-1p) * 6.53);
  background: url("../assets/themes/italian-linen/04-location/limonka.webp") center / contain no-repeat;
  transform-origin: 30% 30%;
  animation: il-cytryna 7s ease-in-out infinite;
  z-index: 2;
  pointer-events: none;
}

/* Dress code w białym pasie (od 71 %). */
body[data-theme="italian-linen"] .rg-location > .rg-dress {
  background: none;
  pointer-events: none;
  overflow: visible;
}
body[data-theme="italian-linen"] .rg-location > .rg-dress::before,
body[data-theme="italian-linen"] .rg-location > .rg-dress::after { content: none; }
body[data-theme="italian-linen"] .rg-dress-inner {
  position: absolute;
  inset: 0;
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  pointer-events: auto;
}
body[data-theme="italian-linen"] .rg-dress .rg-h {
  left: 10%;
  width: 80%;
  top: calc(var(--il-1p) * 74.5);
  translate: 0 -50%;
  font-size: calc(var(--il-px) * 76);
}
body[data-theme="italian-linen"] .rg-dress-grid {
  left: 50%;
  translate: -50% -50%;
  top: calc(var(--il-1p) * 83.7);
  width: calc(var(--rg-w, 760px) * 0.86);
  display: grid;
  grid-template-columns: auto auto auto;
  justify-content: center;
  align-items: center;
  column-gap: calc(var(--rg-w, 760px) * 0.035);
}
body[data-theme="italian-linen"] .rg-dress-fig {
  width: calc(var(--rg-w, 760px) * 0.44);
  max-width: none;
  height: auto;
}
body[data-theme="italian-linen"] .rg-dress .rg-swatches {
  display: flex;
  flex-direction: column;
  gap: calc(var(--rg-w, 760px) * 0.022);
}
body[data-theme="italian-linen"] .rg-dress .rg-sw {
  width: calc(var(--rg-w, 760px) * 0.058);
  height: calc(var(--rg-w, 760px) * 0.058);
}
body[data-theme="italian-linen"] .rg-dress .rg-p {
  left: 12%;
  width: 76%;
  top: calc(var(--il-1p) * 93);
  translate: 0 -50%;
  font-family: var(--rg-text);
  font-style: normal;
  font-weight: 300;
  font-size: max(10px, calc(var(--il-px) * 17));
  line-height: 1.35;
  color: var(--rg-ink);
  text-wrap: balance;
}
/* Pas dress code'u jest na wierzchu — RSVP zachodzi na niego
   wygaszaną krawędzią, a opis ma się nie chować pod paskami. */
body[data-theme="italian-linen"] #rgLocation { z-index: 3; }

/* ══════════════════════════════════════════════════════════════
   EKRAN 5 — RSVP (karta z ząbkami 8,8–55 %, x 17,6–82,2 %)
   Plik: „RSVP" 59 px (linia bazowa 15,3 %), pytanie 23 px (20,3 %),
   odpowiedzi 20,6 px (25,1 / 26,9 %), kreska 31,9 % (x 32,1–68,4 %),
   „MESSAGE FOR COUPLE" (37,1 %), pole #F2F0E4 (37,8–43,1 %,
   x 33,2–66,8 %), przycisk #003FA3 (x 38,4–61,6 %).
   ══════════════════════════════════════════════════════════════ */
body[data-theme="italian-linen"] .rg-rsvp .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="italian-linen"] .rg-rsvp .rg-card::before,
body[data-theme="italian-linen"] .rg-rsvp .rg-card::after { content: none; }
body[data-theme="italian-linen"] .rg-rsvp .rg-h {
  left: 20%;
  width: 60%;
  top: calc(var(--il-1p) * 13.9);
  translate: 0 -50%;
  font-size: calc(var(--il-px) * 59);
}
body[data-theme="italian-linen"] .rg-rsvp .rg-q,
body[data-theme="italian-linen"] .rg-rsvp .rg-msg-label {
  left: 20%;
  width: 60%;
  translate: 0 -50%;
  font-family: var(--rg-text);
  font-style: normal;
  font-weight: 300;
  font-size: max(10.5px, calc(var(--il-px) * 21));
  line-height: 1.2;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--rg-ink);
}
body[data-theme="italian-linen"] .rg-rsvp .rg-q { top: calc(var(--il-1p) * 19.8); }
body[data-theme="italian-linen"] .rg-rsvp .rg-msg-label { top: calc(var(--il-1p) * 36.3); }
body[data-theme="italian-linen"] .rg-rsvp .rg-radios {
  left: 20%;
  width: 60%;
  top: calc(var(--il-1p) * 26.2);
  translate: 0 -50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(var(--il-1p) * 0.6);
}
body[data-theme="italian-linen"] .rg-rsvp .rg-radio {
  font-family: var(--rg-text);
  font-style: normal;
  font-weight: 300;
  font-size: max(11px, calc(var(--il-px) * 20));
  line-height: 1.2;
  color: var(--rg-ink);
}
body[data-theme="italian-linen"] .rg-rsvp .rg-radio .dot { border-color: var(--rg-ink); }
body[data-theme="italian-linen"] .rg-rsvp .rg-sep {
  display: block;
  left: 32.1%;
  width: 36.3%;
  top: calc(var(--il-1p) * 31.9);
  height: 0;
  border: 0;
  border-top: 1px solid rgba(0, 34, 102, .45);
  background: none;
}
body[data-theme="italian-linen"] .rg-rsvp .rg-textarea {
  left: 33.2%;
  width: 33.6%;
  top: calc(var(--il-1p) * 37.8);
  height: calc(var(--il-1p) * 5.3);
  min-height: 0;
  resize: none;
  background: var(--il-pole);
  border: none;
  border-radius: 0;
  box-shadow: none;
  color: var(--rg-ink);
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: max(11px, calc(var(--il-px) * 16));
}
body[data-theme="italian-linen"] .rg-rsvp .rg-btn {
  left: 38.4%;
  width: 23.2%;
  top: calc(var(--il-1p) * 45.8);
  height: calc(var(--il-1p) * 3.9);
  min-height: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  background: var(--rg-accent);
  color: #FFFFFF;
  font-family: var(--rg-display);
  font-weight: 400;
  font-size: max(10px, calc(var(--il-px) * 24));
  letter-spacing: .05em;
  text-transform: uppercase;
  white-space: nowrap;
}
body[data-theme="italian-linen"] .rg-rsvp .rg-btn:hover { background: #00307E; }
/* Prośba o potwierdzenie — dwie linijki na karcie, między przyciskiem
   (do 49,7 %) a ząbkami dolnej krawędzi (55 %). */
body[data-theme="italian-linen"] .rg-rsvp .rg-note {
  --il-notka: max(40%, 17em);
  left: calc((100% - var(--il-notka)) / 2);
  width: var(--il-notka);
  top: calc(var(--il-1p) * 52.4);
  translate: 0 -50%;
  font-family: var(--rg-text);
  font-style: normal;
  font-weight: 300;
  font-size: max(8.5px, calc(var(--il-px) * 14.5));
  line-height: 1.35;
  color: var(--rg-ink);
  opacity: .8;
  text-wrap: balance;
}
@media (max-width: 359px) {
  body[data-theme="italian-linen"] .rg-rsvp .rg-note { --il-notka: max(40%, 18.5em); font-size: 8px; }
}

/* ── ZAKOŃCZENIE na tej samej planszy, w niebieskim pasie pod
   drzewkiem (drzewko kończy się na 74,9 %): „Kilka słów" 59 px
   (linia bazowa 82 %), kaligrafia 55 px (88,2 %), słowa od pary
   (91,6 %). Monogramu w pliku nie ma. ── */
body[data-theme="italian-linen"] .rg-outro-inline { background: none; pointer-events: none; }
body[data-theme="italian-linen"] .rg-outro-inline .rg-bg,
body[data-theme="italian-linen"] .rg-outro-inline .rg-outro-card,
body[data-theme="italian-linen"] .rg-outro-inline .rg-outro-fig,
body[data-theme="italian-linen"] .rg-outro-inline .rg-monogram { display: none; }
body[data-theme="italian-linen"] .rg-outro-inline .rg-inner {
  position: absolute;
  inset: 0;
  translate: none;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  text-align: center;
  pointer-events: auto;
}
body[data-theme="italian-linen"] .rg-outro-inline .rg-h {
  left: 10%;
  width: 80%;
  top: calc(var(--il-1p) * 80.6);
  translate: 0 -50%;
  font-size: calc(var(--il-px) * 56);
  white-space: normal;
  text-wrap: balance;
}
body[data-theme="italian-linen"] .rg-outro-inline .rg-inner::before {
  content: "Let’s celebrate together";
  position: absolute;
  left: 5%;
  right: 5%;
  top: calc(var(--il-1p) * 86.7);
  translate: 0 -50%;
  font-family: var(--rg-script);
  font-size: calc(var(--il-px) * 52);
  line-height: 1.1;
  color: var(--rg-ink);
}
html[lang="pl"] body[data-theme="italian-linen"] .rg-outro-inline .rg-inner::before {
  content: "Świętujmy razem";
}
body[data-theme="italian-linen"] .rg-outro-inline .rg-cols {
  --rg-fit: 1;
  left: 10%;
  width: 80%;
  top: calc(var(--il-1p) * 93.6);
  translate: 0 -50%;
  max-height: calc(var(--il-1p) * 9);
  overflow: hidden;
  display: block;
  columns: auto;  /* bez wielokolumnowości: przy max-height nadmiar uciekał do drugiej, ukrytej kolumny */
  text-align: center;
  font-family: var(--rg-text);
  font-weight: 300;
  font-size: calc(max(10px, calc(var(--il-px) * 19)) * var(--rg-k, 1));
  line-height: 1.4;
  color: var(--rg-ink);
  text-wrap: balance;
}
body[data-theme="italian-linen"] .rg-outro-inline .rg-cols .rg-p {
  --rg-fit: 0;
  display: inline;
  position: static;
  margin: 0;
  font: inherit;
  line-height: inherit;
  color: inherit;
}
body[data-theme="italian-linen"] .rg-outro-inline .rg-cols .rg-p:first-child::after { content: " "; }

/* ── TELEFON ─────────────────────────────────────────────────
   Przy podłodze stopnia pisma (10–10,5 px) opisy są względnie większe
   niż na planszy, więc dostają szersze pola: historia całą szerokość
   pod zdjęciami, opis dress code'u szerzej, a korowód jest nieco
   mniejszy, żeby opis nie wchodził mu na stopy. */
@media (max-width: 480px) {
  body[data-theme="italian-linen"] .rg-story .rg-cols {
    left: 7%;
    width: 86%;
    top: calc(var(--il-1p) * 86.2);
    max-height: calc(var(--il-1p) * 17.4);
    font-size: calc(10px * var(--rg-k, 1));
  }
  body[data-theme="italian-linen"] .rg-dress .rg-h { top: calc(var(--il-1p) * 74.3); }
  /* Adres ma tu dwie linijki — środek niżej, żeby odstęp od zdjęć był
     taki sam jak odstęp zdjęć od słowa „Lokalizacja". */
  body[data-theme="italian-linen"] .rg-location .rg-addr { top: calc(var(--il-1p) * 36.9); }
  body[data-theme="italian-linen"] .rg-location .rg-btn  { top: calc(var(--il-1p) * 42.4); }
  body[data-theme="italian-linen"] .rg-dress-grid { top: calc(var(--il-1p) * 82.4); }
  body[data-theme="italian-linen"] .rg-dress-fig { width: calc(var(--rg-w, 760px) * 0.38); }
  body[data-theme="italian-linen"] .rg-dress .rg-p {
    left: 6%;
    width: 88%;
    top: calc(var(--il-1p) * 92.5);
  }
  body[data-theme="italian-linen"] .rg-outro-inline .rg-cols { left: 6%; width: 88%; }
}

/* ── ODSŁONA (plansza 1 z pustym papierem) ───────────────────
   Na zakrytej planszy papier był pusty, a wezwanie „Dotknij, aby
   otworzyć" stało przy dolnej krawędzi okna, poza grafiką. Papier
   dostaje kaligrafię (gaśnie razem z odlatującym papierem), a wezwanie
   siada na środku białego pasa planszy (77–100 %). */
body[data-theme="italian-linen"] .plate-canvas::after {
  content: "Zaproszenie\A ślubne";
  white-space: pre-line;
  position: absolute;
  left: 22%;
  right: 22%;
  top: 41.9%;
  translate: 0 -50%;
  z-index: 5;
  font-family: var(--rg-script);
  font-size: calc(var(--pl-h) * 3 / 5 / 900 * 92);
  line-height: 1.15;
  text-align: center;
  color: var(--rg-ink);
  pointer-events: none;
  transition: opacity .5s ease;
}
html[lang="en"] body[data-theme="italian-linen"] .plate-canvas::after { content: "Wedding\A invitation"; }
body[data-theme="italian-linen"] .plate-reveal.opening .plate-canvas::after { opacity: 0; }
body[data-theme="italian-linen"] .plate-cta {
  --pl-h: min(100svh, calc(100vw * 5 / 3));
  bottom: auto;
  top: calc(50% - var(--pl-h) / 2 + var(--pl-h) * 0.875);
  transform: translate(-50%, -50%);
  white-space: nowrap;
  font-family: var(--rg-display);
  font-weight: 400;
  font-size: max(11px, calc(var(--pl-h) * 3 / 5 / 900 * 26));
  letter-spacing: .16em;
  color: var(--rg-ink);
}

/* Najwęższe telefony: adres w dwóch linijkach jest wyższy — schodzi
   odrobinę, żeby odstęp od zdjęć był równy odstępowi nad nimi. */
@media (max-width: 359px) {
  body[data-theme="italian-linen"] .rg-location .rg-addr { top: calc(var(--il-1p) * 37.2); }
}
