html.theme-noir .fabric-bg,
html.theme-noir .pearl-edges,
html.theme-linen .fabric-bg,
html.theme-linen .pearl-edges,
html.theme-ink .fabric-bg,
html.theme-ink .pearl-edges,
html.theme-bloom .fabric-bg,
html.theme-bloom .pearl-edges,
html.theme-satin .fabric-bg,
html.theme-satin .pearl-edges,
html.theme-candle .fabric-bg,
html.theme-candle .pearl-edges,
html.theme-sage .fabric-bg,
html.theme-sage .pearl-edges,
html.theme-crest .fabric-bg,
html.theme-crest .pearl-edges,
html.theme-blush .fabric-bg,
html.theme-blush .pearl-edges {
  display: none !important;
}

.life-stage { display: none; }

.theme-sky {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.theme-sky::after {
  content: "";
  position: absolute;
  inset: 0;
}

html.theme-classic .theme-sky {
  display: block;
  background-image: url("/img/bg-classic.jpg");
}
html.theme-classic .theme-sky::after {
  background: linear-gradient(180deg, rgba(250, 244, 247, 0.12) 0%, rgba(250, 244, 247, 0.22) 100%);
}
html.theme-classic .fabric-tint {
  background:
    radial-gradient(ellipse 120% 80% at 20% 10%, rgba(255, 255, 255, 0.28) 0%, transparent 55%),
    linear-gradient(175deg, rgba(250, 244, 247, 0.28) 0%, rgba(243, 232, 237, 0.35) 100%);
}

html.theme-noir .theme-sky {
  display: block;
  background-image: url("/img/bg-noir.jpg");
}
html.theme-noir .theme-sky::after {
  background: radial-gradient(ellipse at 50% 40%, rgba(12, 11, 10, 0.12), rgba(12, 11, 10, 0.42) 80%);
}

html.theme-linen .theme-sky {
  display: block;
  background-image: url("/img/bg-linen.jpg");
}
html.theme-linen .theme-sky::after {
  background: radial-gradient(ellipse at 50% 40%, rgba(243, 234, 220, 0.12), rgba(243, 234, 220, 0.32) 80%);
}

html.theme-ink .theme-sky {
  display: block;
  background-image: url("/img/bg-ink.jpg");
}
html.theme-ink .theme-sky::after {
  background: radial-gradient(ellipse at 50% 40%, rgba(246, 240, 228, 0.1), rgba(246, 240, 228, 0.28) 80%);
}

html.theme-bloom .theme-sky {
  display: block;
  background-image: url("/img/bg-bloom.jpg");
}
html.theme-bloom .theme-sky::after {
  background: radial-gradient(ellipse at 50% 40%, rgba(26, 15, 22, 0.08), rgba(26, 15, 22, 0.38) 80%);
}

html.theme-noir .date-frame,
html.theme-linen .date-frame,
html.theme-ink .date-frame,
html.theme-bloom .date-frame {
  animation: none;
  background: none;
  box-shadow: none;
  padding: 0;
  border-radius: 0;
}
html.theme-noir .date-frame-shimmer,
html.theme-linen .date-frame-shimmer,
html.theme-ink .date-frame-shimmer,
html.theme-bloom .date-frame-shimmer {
  display: none;
}

/* ——— Ночь ——— */
html.theme-noir {
  --text-dark: #f3eadb;
  --text-muted: #a89880;
  --accent: #c4a574;
  --accent-light: #3a342c;
  --font-serif: "Cormorant Garamond", Georgia, serif;
  --font-ui: "Syne", system-ui, sans-serif;
}
html.theme-noir body {
  background: #0c0b0a;
  color: #f3eadb;
}
html.theme-noir main {
  background: rgba(12, 11, 10, 0.78);
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.45);
}
html.theme-noir .section-label,
html.theme-noir .hero-label { color: #c4a574; }
html.theme-noir .section-title,
html.theme-noir .invitation-title,
html.theme-noir .dress-code-title,
html.theme-noir .venue-line,
html.theme-noir .timeline-title,
html.theme-noir .form-group label,
html.theme-noir .rsvp-deadline,
html.theme-noir .contact-text,
html.theme-noir .footer-note,
html.theme-noir .dress-text {
  color: #f3eadb;
}
html.theme-noir .divider { background: #c4a574; height: 1px; width: 72px; margin: 24px auto; }
html.theme-noir .divider.wavy::after { display: none; }
html.theme-noir .date-frame-inner {
  background: #141210;
  border: 1px solid #c4a574;
  border-radius: 0;
  color: #f3eadb;
}
html.theme-noir .map-container { filter: grayscale(1) invert(0.88) contrast(0.9); }
html.theme-noir .form-group input,
html.theme-noir .form-group textarea,
html.theme-noir .toggle-btn {
  background: #161412;
  border-color: #3a342c;
  color: #f3eadb;
  font-family: var(--font-serif);
}
html.theme-noir .toggle-btn.active {
  border-color: #c4a574;
  background: rgba(196, 165, 116, 0.12);
}
html.theme-noir .party-btn,
html.theme-noir .family-block {
  background: #161412;
  border-color: #3a342c;
  color: #f3eadb;
}
html.theme-noir .party-btn.active {
  border-color: #c4a574;
  background: rgba(196, 165, 116, 0.12);
}
html.theme-noir .submit-btn {
  background: #c4a574;
  color: #0c0b0a;
  border-radius: 999px;
  font-family: var(--font-ui);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-size: 0.75rem;
}
html.theme-noir .preference-block {
  background: #141210;
  border: 1px solid #2a2620;
}
html.theme-noir .preference-title,
html.theme-noir .option-label,
html.theme-noir .timeline-time,
html.theme-noir .timeline-title,
html.theme-noir .countdown-value,
html.theme-noir .countdown-label {
  color: #f3eadb;
}
html.theme-noir .preference-subtitle { color: #a89880; }
html.theme-noir .checkbox-item,
html.theme-noir .checkbox-item:hover {
  background: #1c1814;
  border-color: #3a342c;
  color: #f3eadb;
  box-shadow: none;
}
html.theme-noir .checkbox-item:has(input:checked) {
  background: rgba(196, 165, 116, 0.16);
  border-color: #c4a574;
}
html.theme-noir .option-icon {
  color: #c4a574;
  background: rgba(196, 165, 116, 0.12);
}
html.theme-noir .absence-box,
html.theme-noir .absence-box textarea {
  background: #1c1814;
  color: #f3eadb;
  border-color: #3a342c;
}
html.theme-noir .contact-phone,
html.theme-noir .contact-email { color: #c4a574; }
html.theme-noir .color-label { background: #f3eadb; color: #0c0b0a; }

/* ——— Лён ——— */
html.theme-linen {
  --text-dark: #3d3428;
  --text-muted: #8a7d6a;
  --accent: #6b7c5a;
  --accent-light: #d9d0c0;
  --font-serif: "Literata", Georgia, serif;
  --font-ui: "Source Sans 3", system-ui, sans-serif;
}
html.theme-linen body {
  background: #f3eadc;
  color: #3d3428;
  font-family: var(--font-serif);
}
html.theme-linen main {
  background: rgba(250, 246, 238, 0.88);
}
html.theme-linen .section-label,
html.theme-linen .hero-label {
  color: #6b7c5a;
  letter-spacing: 0.32em;
}
html.theme-linen .divider { width: 64px; height: 2px; background: #6b7c5a; margin: 22px auto; }
html.theme-linen .divider.wavy::after { display: none; }
html.theme-linen .date-frame-inner {
  background: #faf6ee;
  border: 1px solid #cfc3ae;
  border-radius: 4px;
}
html.theme-linen .form-group input,
html.theme-linen .form-group textarea,
html.theme-linen .toggle-btn {
  background: #faf6ee;
  border-color: #cfc3ae;
  border-radius: 4px;
}
html.theme-linen .toggle-btn.active {
  background: rgba(107, 124, 90, 0.16);
  border-color: #6b7c5a;
}
html.theme-linen .submit-btn {
  background: #6b7c5a;
  color: #faf6ee;
  border-radius: 4px;
  font-family: var(--font-ui);
}
html.theme-linen .preference-block {
  background: #faf6ee;
  border: 1px solid #e0d6c6;
  border-radius: 8px;
}

/* ——— Чернила ——— */
html.theme-ink {
  --text-dark: #1c2430;
  --text-muted: #6f675c;
  --accent: #7a1f2b;
  --accent-light: #e7d7c4;
  --font-serif: "Cormorant Garamond", Georgia, serif;
  --font-ui: "Cormorant Garamond", Georgia, serif;
}
html.theme-ink body {
  background:
    radial-gradient(ellipse 50% 36% at 8% 10%, rgba(122, 31, 43, 0.1), transparent 55%),
    radial-gradient(ellipse 42% 32% at 96% 8%, rgba(28, 36, 48, 0.08), transparent 50%),
    radial-gradient(ellipse 48% 40% at 88% 92%, rgba(122, 31, 43, 0.08), transparent 52%),
    radial-gradient(ellipse 36% 28% at 12% 88%, rgba(28, 36, 48, 0.06), transparent 48%),
    #f4ecdc;
  color: #1c2430;
  font-family: var(--font-serif);
}
html.theme-ink body::before {
  content: "";
  position: fixed;
  inset: 14px;
  pointer-events: none;
  z-index: 2;
  border: 1px solid rgba(28, 36, 48, 0.22);
  outline: 1px solid rgba(122, 31, 43, 0.18);
  outline-offset: 6px;
}
html.theme-ink main {
  max-width: 640px;
  background: rgba(255, 250, 242, 0.9);
  padding: 28px 22px 72px;
  box-shadow: 0 30px 70px rgba(80, 50, 40, 0.08);
}
html.theme-ink .hero { padding-top: 56px; }
html.theme-ink .invitation-title {
  font-family: "Great Vibes", "Cormorant Garamond", cursive;
  font-size: clamp(2.6rem, 8vw, 4.2rem);
  line-height: 1.2;
  letter-spacing: 0.01em;
  text-transform: none;
  font-weight: 400;
  color: #7a1f2b;
}
html.theme-ink .section-title,
html.theme-ink .dress-code-title {
  font-family: "Great Vibes", "Cormorant Garamond", cursive;
  font-size: clamp(2rem, 6vw, 2.8rem);
  text-transform: none;
  letter-spacing: 0.02em;
  font-weight: 400;
  color: #7a1f2b;
}
html.theme-ink .section-label,
html.theme-ink .hero-label {
  font-family: "Cormorant Garamond", serif;
  color: #7a1f2b;
  letter-spacing: 0.38em;
  font-weight: 600;
  font-size: 0.72rem;
}
html.theme-ink .divider {
  width: 160px;
  height: 18px;
  margin: 22px auto;
  background: none;
  position: relative;
}
html.theme-ink .divider::before {
  content: "✦";
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  color: #7a1f2b;
  font-size: 0.85rem;
}
html.theme-ink .divider::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 1px;
  background: linear-gradient(90deg, transparent, #1c2430, transparent);
}
html.theme-ink .divider.wavy::after { display: block; }
html.theme-ink .date-frame-inner {
  background: #fbf6ec;
  color: #1c2430;
  border-radius: 2px;
  padding: 22px 24px;
  box-shadow:
    inset 0 0 0 1px #1c2430,
    0 0 0 7px #fbf6ec,
    0 0 0 8px #7a1f2b;
}
html.theme-ink .date-frame-inner * { color: #1c2430; }
html.theme-ink .date-day-num { color: #7a1f2b; font-family: "Great Vibes", cursive; }
html.theme-ink .venue-line,
html.theme-ink .dress-text,
html.theme-ink .contact-text,
html.theme-ink .footer-note {
  color: #1c2430;
}
html.theme-ink .form-group label { color: #1c2430; font-style: italic; }
html.theme-ink .form-group input,
html.theme-ink .form-group textarea {
  border: 0;
  border-bottom: 1px solid #1c2430;
  border-radius: 0;
  background: transparent;
  font-family: var(--font-serif);
  font-size: 1.05rem;
}
html.theme-ink .toggle-btn {
  border: 1px solid #1c2430;
  border-radius: 0;
  background: transparent;
  font-family: var(--font-serif);
}
html.theme-ink .toggle-btn.active {
  background: #1c2430;
  color: #f6f0e4;
}
html.theme-ink .submit-btn {
  background: #7a1f2b;
  color: #f6f0e4;
  border-radius: 0;
  width: 100%;
  font-family: var(--font-serif);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-size: 0.78rem;
}
html.theme-ink .preference-block {
  border: 1px solid #1c2430;
  outline: 1px solid #1c2430;
  outline-offset: 4px;
  border-radius: 0;
  background: rgba(255, 250, 242, 0.9);
}
html.theme-ink .countdown-value {
  font-family: "Great Vibes", cursive;
  font-size: 2.6rem;
  color: #7a1f2b;
}
html.theme-ink .timeline-time { color: #7a1f2b; font-style: italic; }
html.theme-ink .contact-phone,
html.theme-ink .contact-email { color: #7a1f2b; }
html.theme-ink .map-container { border: 1px solid #1c2430; }

/* ——— Сияние ——— */
html.theme-bloom {
  --text-dark: #4a2c38;
  --text-muted: #9a7380;
  --accent: #d4789a;
  --accent-light: #f3c5d4;
  --font-serif: "Playfair Display", "Cormorant Garamond", Georgia, serif;
  --font-ui: "Outfit", system-ui, sans-serif;
}
html.theme-bloom body {
  background: #1a0f16;
  color: #fceef3;
  font-family: var(--font-serif);
}
html.theme-bloom .life-stage {
  display: block;
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}
html.theme-bloom .orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(40px);
  opacity: 0.7;
  animation: bloomDrift 18s ease-in-out infinite;
}
html.theme-bloom .orb-a {
  width: 42vw;
  height: 42vw;
  left: -8%;
  top: -10%;
  background: radial-gradient(circle, #e86a9a 0%, #7b2d55 50%, transparent 70%);
}
html.theme-bloom .orb-b {
  width: 36vw;
  height: 36vw;
  right: -12%;
  bottom: 8%;
  background: radial-gradient(circle, #f0c27b 0%, #c45c7a 45%, transparent 70%);
  animation-duration: 22s;
  animation-delay: -4s;
}
html.theme-bloom .orb-c {
  width: 28vw;
  height: 28vw;
  left: 38%;
  top: 40%;
  background: radial-gradient(circle, #9b6dff 0%, #4a2048 55%, transparent 72%);
  animation-duration: 16s;
  animation-delay: -8s;
}
html.theme-bloom .ring {
  position: absolute;
  left: 50%;
  top: 18%;
  width: min(520px, 86vw);
  height: min(520px, 86vw);
  margin-left: calc(min(520px, 86vw) / -2);
  border: 1px dashed rgba(255, 214, 228, 0.35);
  border-radius: 50%;
  animation: bloomSpin 48s linear infinite;
}
html.theme-bloom .ring-fast {
  width: min(340px, 62vw);
  height: min(340px, 62vw);
  margin-left: calc(min(340px, 62vw) / -2);
  top: 26%;
  border-style: solid;
  border-width: 1px;
  border-color: rgba(240, 194, 123, 0.28);
  animation-duration: 22s;
  animation-direction: reverse;
}
html.theme-bloom .petal {
  position: absolute;
  width: 18px;
  height: 28px;
  background: linear-gradient(180deg, #ffd6e4, #e86a9a);
  border-radius: 80% 0 80% 0;
  opacity: 0.55;
  animation: bloomPetal 14s ease-in-out infinite;
}
html.theme-bloom .petal-1 { left: 12%; top: 22%; animation-delay: 0s; }
html.theme-bloom .petal-2 { right: 14%; top: 38%; animation-delay: -3s; transform: rotate(40deg); }
html.theme-bloom .petal-3 { left: 18%; bottom: 18%; animation-delay: -6s; }
html.theme-bloom .petal-4 { right: 22%; bottom: 28%; animation-delay: -9s; }
html.theme-bloom .spark {
  position: absolute;
  width: 6px;
  height: 6px;
  background: #fff6d8;
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(255, 246, 216, 0.7);
  animation: bloomTwinkle 3.4s ease-in-out infinite;
}
html.theme-bloom .s1 { left: 20%; top: 16%; }
html.theme-bloom .s2 { right: 18%; top: 24%; animation-delay: -0.7s; }
html.theme-bloom .s3 { left: 48%; top: 12%; animation-delay: -1.4s; }
html.theme-bloom .s4 { left: 30%; bottom: 22%; animation-delay: -2s; }
html.theme-bloom .s5 { right: 28%; bottom: 16%; animation-delay: -2.6s; }

@keyframes bloomDrift {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(40px, -30px) scale(1.12); }
}
@keyframes bloomSpin { to { transform: rotate(360deg); } }
@keyframes bloomPetal {
  0%, 100% { transform: translateY(0) rotate(0deg); opacity: 0.4; }
  50% { transform: translateY(-28px) rotate(25deg); opacity: 0.85; }
}
@keyframes bloomTwinkle {
  0%, 100% { opacity: 0.2; transform: scale(0.6); }
  50% { opacity: 1; transform: scale(1.4); }
}

html.theme-bloom main {
  z-index: 1;
  background: rgba(26, 15, 22, 0.72);
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.35);
}
html.theme-bloom .section-label,
html.theme-bloom .hero-label {
  color: #f0c27b;
  letter-spacing: 0.4em;
  font-family: var(--font-ui);
  font-size: 0.7rem;
}
html.theme-bloom .section-title,
html.theme-bloom .invitation-title,
html.theme-bloom .dress-code-title,
html.theme-bloom .venue-line,
html.theme-bloom .timeline-title,
html.theme-bloom .form-group label,
html.theme-bloom .dress-text,
html.theme-bloom .rsvp-deadline,
html.theme-bloom .contact-text,
html.theme-bloom .footer-note,
html.theme-bloom .option-label,
html.theme-bloom .preference-title,
html.theme-bloom .countdown-value {
  color: #fff4f7;
}
html.theme-bloom .invitation-title {
  font-size: clamp(1.9rem, 5vw, 2.8rem);
  font-style: italic;
  line-height: 1.3;
  text-shadow: 0 8px 40px rgba(232, 106, 154, 0.35);
}
html.theme-bloom .divider {
  width: 90px;
  height: 2px;
  margin: 26px auto;
  background: linear-gradient(90deg, transparent, #f0c27b, #e86a9a, #f0c27b, transparent);
  animation: bloomLine 4s ease-in-out infinite;
}
html.theme-bloom .divider.wavy::after { display: none; }
@keyframes bloomLine {
  0%, 100% { opacity: 0.55; filter: blur(0); }
  50% { opacity: 1; filter: blur(0.3px); }
}
html.theme-bloom .date-frame-inner {
  background: rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(16px);
  border: 1px solid rgba(255, 214, 228, 0.4);
  border-radius: 28px;
  color: #fff4f7;
  box-shadow: 0 20px 60px rgba(80, 20, 50, 0.35);
}
html.theme-bloom .date-frame-inner * { color: #fff4f7; }
html.theme-bloom .timeline-item {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 214, 228, 0.18);
  border-radius: 16px;
  padding: 12px 16px;
  border-bottom: 0;
}
html.theme-bloom .timeline-time { color: #f0c27b; }
html.theme-bloom .form-group input,
html.theme-bloom .form-group textarea,
html.theme-bloom .toggle-btn,
html.theme-bloom .checkbox-item,
html.theme-bloom .absence-box {
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 214, 228, 0.28);
  color: #fff4f7;
  border-radius: 14px;
  backdrop-filter: blur(10px);
}
html.theme-bloom .toggle-btn.active,
html.theme-bloom .checkbox-item:has(input:checked) {
  background: rgba(232, 106, 154, 0.28);
  border-color: #f0c27b;
}
html.theme-bloom .preference-block {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 214, 228, 0.22);
  border-radius: 20px;
  backdrop-filter: blur(12px);
}
html.theme-bloom .preference-subtitle { color: #f3c5d4; }
html.theme-bloom .submit-btn {
  background: linear-gradient(90deg, #e86a9a, #f0c27b);
  color: #2a1018;
  border-radius: 999px;
  font-family: var(--font-ui);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-size: 0.75rem;
  box-shadow: 0 10px 30px rgba(232, 106, 154, 0.4);
}
html.theme-bloom .countdown-item {
  background: rgba(255, 255, 255, 0.08);
  border-radius: 18px;
  padding: 12px 10px;
  min-width: 72px;
  border: 1px solid rgba(255, 214, 228, 0.2);
}
html.theme-bloom .countdown-sep { color: #f0c27b; }
html.theme-bloom .contact-phone,
html.theme-bloom .contact-email { color: #f0c27b; }
html.theme-bloom .map-container {
  border-radius: 24px;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.35);
}

@media (prefers-reduced-motion: reduce) {
  html.theme-bloom .orb,
  html.theme-bloom .ring,
  html.theme-bloom .petal,
  html.theme-bloom .spark,
  html.theme-bloom .divider {
    animation: none !important;
  }
}

/* ——— Разная композиция, не перекраска ——— */

html.theme-classic .date-line { display: none; }

html.theme-noir .hero-label { display: none; }
html.theme-noir .date-showcase { display: none; }
html.theme-noir .date-line {
  display: block;
  font-family: "Syne", sans-serif;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  font-size: 0.72rem;
  color: #c4a574;
  margin-top: 18px;
}
html.theme-noir .invitation-title {
  font-family: "Italiana", "Cormorant Garamond", serif;
  font-size: clamp(1.6rem, 4vw, 2.2rem);
  letter-spacing: 0.04em;
}
html.theme-noir .couple { gap: 0; margin-bottom: 28px; }
html.theme-noir .portrait { width: 168px; }
html.theme-noir .portrait-frame {
  width: 168px;
  height: 168px;
  border-radius: 50%;
  border: 1px solid #c4a574;
  background: #1a1612;
  box-shadow: 0 0 0 8px #0c0b0a, 0 20px 40px rgba(0,0,0,0.45);
}
html.theme-noir .portrait-bride { margin-left: -28px; position: relative; z-index: 2; }
html.theme-noir .portrait-initial { color: #c4a574; font-family: "Italiana", serif; }
html.theme-noir .portrait-name {
  font-family: "Syne", sans-serif;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 0.78rem;
  font-weight: 600;
  color: #f3eadb;
}
html.theme-noir .portrait-role { color: #a89880; }
html.theme-noir .couple-amp { display: none; }
html.theme-noir .timeline { text-align: left; max-width: 420px; margin: 0 auto; }
html.theme-noir .timeline-item {
  border: 0;
  border-left: 1px solid #c4a574;
  background: none;
  padding: 12px 0 12px 20px;
  margin: 0;
}
html.theme-noir .divider { width: 40px; }

html.theme-linen .hero { padding-top: 28px; }
html.theme-linen .hero-label { color: #6b7c5a; }
html.theme-linen .date-showcase { display: none; }
html.theme-linen .date-line {
  display: block;
  font-style: italic;
  color: #6b7c5a;
  letter-spacing: 0.04em;
}
html.theme-linen .couple { gap: 28px; }
html.theme-linen .portrait { width: 150px; }
html.theme-linen .portrait-frame {
  width: 150px;
  height: 190px;
  border-radius: 50%;
  border: 2px dashed #6b7c5a;
  background: #efe4d2;
  box-shadow: inset 0 0 0 6px #f3eadc;
}
html.theme-linen .portrait-initial { color: #6b7c5a; }
html.theme-linen .portrait-name { font-family: "Literata", serif; font-size: 1.45rem; }
html.theme-linen .couple-amp { color: #6b7c5a; margin-bottom: 78px; }
html.theme-linen .timeline {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
html.theme-linen .timeline-item {
  background: #faf6ee;
  border: 1px solid #cfc3ae;
  border-radius: 12px;
  padding: 14px;
}
@media (min-width: 640px) {
  html.theme-linen .timeline { grid-template-columns: 1fr 1fr; }
}

html.theme-ink .hero-label { display: none; }
html.theme-ink .date-line {
  display: block;
  font-style: italic;
  color: #7a1f2b;
  letter-spacing: 0.06em;
}
html.theme-ink .couple { margin-bottom: 8px; gap: 10px; }
html.theme-ink .portrait { width: 92px; }
html.theme-ink .portrait-frame {
  width: 92px;
  height: 92px;
  border-radius: 50%;
  border: 1px solid #1c2430;
  box-shadow: 0 0 0 4px #fbf6ec, 0 0 0 5px #1c2430;
  background: #efe6d4;
}
html.theme-ink .portrait-initial {
  font-family: "Great Vibes", cursive;
  color: #7a1f2b;
  font-size: 2.4rem;
}
html.theme-ink .portrait-role { display: none; }
html.theme-ink .portrait-name {
  font-family: "Great Vibes", cursive;
  font-size: 1.7rem;
  font-weight: 400;
  color: #7a1f2b;
}
html.theme-ink .couple-amp {
  font-family: "Great Vibes", cursive;
  color: #7a1f2b;
  margin: 0 2px 28px;
  font-size: 2rem;
}
html.theme-ink .invitation-title { margin-top: 12px; }

html.theme-bloom .hero-label { display: none; }
html.theme-bloom .date-showcase { display: none; }
html.theme-bloom .date-line {
  display: block;
  font-family: "Outfit", sans-serif;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-size: 0.7rem;
  color: #f0c27b;
}
html.theme-bloom .couple { gap: 8px; }
html.theme-bloom .portrait { width: 150px; }
html.theme-bloom .portrait-frame {
  width: 150px;
  height: 190px;
  border-radius: 6px;
  border: 10px solid #fff4f7;
  background: rgba(255,255,255,0.12);
  box-shadow: 0 18px 40px rgba(40, 10, 30, 0.4);
}
html.theme-bloom .portrait-groom .portrait-frame { transform: rotate(-5deg); }
html.theme-bloom .portrait-bride .portrait-frame { transform: rotate(4deg); }
html.theme-bloom .portrait-initial { color: #f0c27b; font-family: "Playfair Display", serif; font-style: italic; }
html.theme-bloom .portrait-name {
  font-family: "Playfair Display", serif;
  font-style: italic;
  font-size: 1.5rem;
  color: #fff4f7;
}
html.theme-bloom .portrait-role { color: #f0c27b; }
html.theme-bloom .couple-amp {
  color: #f0c27b;
  margin-bottom: 64px;
  font-size: 2rem;
}
html.theme-bloom main { display: flex; flex-direction: column; }
html.theme-bloom #hero { order: 0; }
html.theme-bloom #countdown { order: 1; }
html.theme-bloom #venue { order: 2; }
html.theme-bloom #schedule { order: 3; }
html.theme-bloom #dresscode { order: 4; }
html.theme-bloom #rsvp { order: 5; }
html.theme-bloom #contacts { order: 6; }

@media (max-width: 640px) {
  html.theme-noir .portrait-bride { margin-left: -18px; }
}

html.theme-satin .date-frame,
html.theme-candle .date-frame,
html.theme-sage .date-frame,
html.theme-crest .date-frame,
html.theme-blush .date-frame {
  animation: none;
  background: none;
  box-shadow: none;
  padding: 0;
  border-radius: 0;
}
html.theme-satin .date-frame-shimmer,
html.theme-candle .date-frame-shimmer,
html.theme-sage .date-frame-shimmer,
html.theme-crest .date-frame-shimmer,
html.theme-blush .date-frame-shimmer {
  display: none;
}

html.theme-satin .theme-sky {
  display: block;
  background-image: url("/img/bg-satin.jpg");
}
html.theme-satin .theme-sky::after {
  background: linear-gradient(180deg, rgba(248, 242, 232, 0.18), rgba(248, 242, 232, 0.42));
}
html.theme-candle .theme-sky {
  display: block;
  background-image: url("/img/bg-candle.jpg");
}
html.theme-candle .theme-sky::after {
  background: radial-gradient(ellipse at 50% 40%, rgba(10, 8, 6, 0.2), rgba(10, 8, 6, 0.55) 80%);
}
html.theme-sage .theme-sky {
  display: block;
  background-image: url("/img/bg-sage.jpg");
}
html.theme-sage .theme-sky::after {
  background: linear-gradient(180deg, rgba(232, 236, 228, 0.2), rgba(232, 236, 228, 0.45));
}
html.theme-crest .theme-sky {
  display: block;
  background-image: url("/img/bg-crest.jpg");
}
html.theme-crest .theme-sky::after {
  background: radial-gradient(ellipse at 50% 30%, rgba(8, 8, 8, 0.15), rgba(0, 0, 0, 0.55) 85%);
}
html.theme-blush .theme-sky {
  display: block;
  background-image: url("/img/bg-blush.jpg");
}
html.theme-blush .theme-sky::after {
  background: linear-gradient(180deg, rgba(252, 244, 246, 0.12), rgba(252, 244, 246, 0.4));
}

html.theme-satin,
html.theme-candle,
html.theme-sage,
html.theme-crest,
html.theme-blush {
  --font-serif: "Playfair Display", "Cormorant Garamond", Georgia, serif;
  --font-ui: "Cormorant Garamond", Georgia, serif;
}
html.theme-satin main,
html.theme-candle main,
html.theme-sage main,
html.theme-crest main,
html.theme-blush main {
  max-width: 28rem;
  padding: 2.4rem 1.4rem 3.2rem;
}
html.theme-satin .date-showcase,
html.theme-candle .date-showcase,
html.theme-sage .date-showcase,
html.theme-crest .date-showcase,
html.theme-blush .date-showcase {
  display: none;
}
html.theme-satin .portrait-frame,
html.theme-candle .portrait-frame,
html.theme-sage .portrait-frame,
html.theme-crest .portrait-frame,
html.theme-blush .portrait-frame,
html.theme-satin .portrait-role,
html.theme-candle .portrait-role,
html.theme-sage .portrait-role,
html.theme-crest .portrait-role,
html.theme-blush .portrait-role {
  display: none;
}
html.theme-satin .couple,
html.theme-candle .couple,
html.theme-sage .couple,
html.theme-crest .couple,
html.theme-blush .couple {
  flex-direction: column;
  gap: 0;
  margin-bottom: 1.2rem;
}
html.theme-satin .portrait,
html.theme-candle .portrait,
html.theme-sage .portrait,
html.theme-crest .portrait,
html.theme-blush .portrait {
  width: auto;
}
html.theme-satin .portrait-name,
html.theme-candle .portrait-name,
html.theme-sage .portrait-name,
html.theme-crest .portrait-name,
html.theme-blush .portrait-name {
  font-family: "Great Vibes", cursive;
  font-size: 3.1rem;
  font-weight: 400;
  line-height: 1.05;
}
html.theme-satin .couple-amp,
html.theme-candle .couple-amp,
html.theme-sage .couple-amp,
html.theme-crest .couple-amp,
html.theme-blush .couple-amp {
  margin: 0.1rem 0 0.15rem;
  font-family: "Great Vibes", cursive;
  font-size: 2rem;
}
html.theme-satin .hero-label,
html.theme-candle .hero-label,
html.theme-sage .hero-label,
html.theme-crest .hero-label,
html.theme-blush .hero-label {
  letter-spacing: 0.38em;
  font-size: 0.68rem;
  text-transform: uppercase;
  margin-bottom: 1.4rem;
}
html.theme-satin .date-line,
html.theme-candle .date-line,
html.theme-sage .date-line,
html.theme-crest .date-line,
html.theme-blush .date-line {
  display: inline-block;
  margin: 1.1rem auto 0;
  padding: 0.45rem 1.1rem;
  border: 1px solid currentColor;
  letter-spacing: 0.18em;
  font-size: 0.72rem;
  text-transform: uppercase;
}
html.theme-satin .invitation-title,
html.theme-candle .invitation-title,
html.theme-sage .invitation-title,
html.theme-crest .invitation-title,
html.theme-blush .invitation-title {
  font-size: 1.05rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  max-width: 22rem;
  margin-left: auto;
  margin-right: auto;
}
html.theme-satin .submit-btn,
html.theme-candle .submit-btn,
html.theme-sage .submit-btn,
html.theme-crest .submit-btn,
html.theme-blush .submit-btn {
  background: transparent;
  border-radius: 0;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-size: 0.72rem;
}

html.theme-satin {
  --text-dark: #3c342c;
  --text-muted: #8a7a68;
  --accent: #c4a36a;
}
html.theme-satin body { background: #f3eadc; color: #3c342c; }
html.theme-satin main { background: rgba(255, 250, 244, 0.78); }
html.theme-satin .hero-label,
html.theme-satin .section-label,
html.theme-satin .couple-amp,
html.theme-satin .date-line,
html.theme-satin .contact-phone,
html.theme-satin .contact-email { color: #b08a4a; }
html.theme-satin .portrait-name { color: #3c342c; }
html.theme-satin .divider { width: 48px; height: 1px; background: #c4a36a; margin: 22px auto; }
html.theme-satin .divider.wavy::after { display: none; }
html.theme-satin .hero::before {
  content: "";
  display: block;
  width: 72px;
  height: 48px;
  margin: 0 auto 1.1rem;
  background: no-repeat center / contain;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 40' fill='none' stroke='%23b08a4a' stroke-width='1.2'><path d='M8 28c12-18 22-18 32-2 10 16 20 16 32 0'/><path d='M24 22c2-7 6-10 10-8'/><path d='M52 20c2 7 6 10 10 6'/></svg>");
}
html.theme-satin .form-group input,
html.theme-satin .form-group textarea,
html.theme-satin .toggle-btn {
  border: 1px solid #d8c8b0;
  background: #fffdf8;
  color: #3c342c;
}
html.theme-satin .toggle-btn.active,
html.theme-satin .submit-btn {
  border-color: #b08a4a;
  color: #b08a4a;
}

html.theme-candle {
  --text-dark: #f3eadb;
  --text-muted: #c4b49a;
  --accent: #e0c48a;
}
html.theme-candle body { background: #0c0a08; color: #f3eadb; }
html.theme-candle main { background: rgba(12, 10, 8, 0.62); }
html.theme-candle .hero-label,
html.theme-candle .section-label,
html.theme-candle .section-title,
html.theme-candle .invitation-title,
html.theme-candle .dress-code-title,
html.theme-candle .venue-line,
html.theme-candle .form-group label,
html.theme-candle .portrait-name,
html.theme-candle .couple-amp { color: #f3eadb; }
html.theme-candle .date-line,
html.theme-candle .contact-phone,
html.theme-candle .contact-email,
html.theme-candle .submit-btn,
html.theme-candle .toggle-btn.active { color: #e0c48a; border-color: #e0c48a; }
html.theme-candle .divider { width: 40px; height: 1px; background: #e0c48a; margin: 22px auto; }
html.theme-candle .divider.wavy::after { display: none; }
html.theme-candle .form-group input,
html.theme-candle .form-group textarea,
html.theme-candle .toggle-btn {
  border: 1px solid #5a4a38;
  background: rgba(18, 14, 10, 0.7);
  color: #f3eadb;
}
html.theme-candle .map-container { filter: grayscale(1) invert(0.88) contrast(0.9); }

html.theme-sage {
  --text-dark: #3a4636;
  --text-muted: #6b7c5a;
  --accent: #6b7c5a;
}
html.theme-sage body { background: #e8ece4; color: #3a4636; }
html.theme-sage main { background: rgba(244, 246, 240, 0.78); }
html.theme-sage .hero-label,
html.theme-sage .section-label,
html.theme-sage .couple-amp,
html.theme-sage .date-line,
html.theme-sage .contact-phone,
html.theme-sage .contact-email,
html.theme-sage .submit-btn { color: #5a6b4a; }
html.theme-sage .portrait-name { color: #3a4636; }
html.theme-sage .divider { width: 56px; height: 1px; background: #6b7c5a; margin: 22px auto; }
html.theme-sage .divider.wavy::after { display: none; }
html.theme-sage .form-group input,
html.theme-sage .form-group textarea,
html.theme-sage .toggle-btn {
  border: 1px solid #c5ceba;
  background: #f7f8f4;
  color: #3a4636;
}
html.theme-sage .toggle-btn.active,
html.theme-sage .submit-btn { border-color: #6b7c5a; color: #5a6b4a; }

html.theme-crest {
  --text-dark: #f4e6c8;
  --text-muted: #c4b48a;
  --accent: #d4b56a;
}
html.theme-crest body { background: #050505; color: #f4e6c8; }
html.theme-crest main { background: rgba(8, 8, 8, 0.55); }
html.theme-crest .hero::before,
html.theme-crest .hero::after {
  content: "❧";
  display: block;
  color: #d4b56a;
  font-size: 1.2rem;
  letter-spacing: 0.4em;
  margin: 0 auto 0.6rem;
}
html.theme-crest .hero::after { margin: 0.8rem auto 1.2rem; content: "✦"; font-size: 0.7rem; }
html.theme-crest .hero-label,
html.theme-crest .section-label,
html.theme-crest .couple-amp,
html.theme-crest .date-line,
html.theme-crest .contact-phone,
html.theme-crest .contact-email,
html.theme-crest .submit-btn { color: #d4b56a; }
html.theme-crest .portrait-name,
html.theme-crest .section-title,
html.theme-crest .invitation-title { color: #f4e6c8; }
html.theme-crest .portrait-name { font-family: "Playfair Display", serif; font-style: italic; font-size: 2.4rem; }
html.theme-crest .couple-amp { font-family: "Playfair Display", serif; font-size: 1.4rem; }
html.theme-crest .divider { width: 36px; height: 1px; background: #d4b56a; margin: 22px auto; }
html.theme-crest .divider.wavy::after { display: none; }
html.theme-crest .form-group input,
html.theme-crest .form-group textarea,
html.theme-crest .toggle-btn {
  border: 1px solid #5a4a28;
  background: rgba(12, 12, 12, 0.75);
  color: #f4e6c8;
}
html.theme-crest .toggle-btn.active,
html.theme-crest .submit-btn { border-color: #d4b56a; color: #d4b56a; }
html.theme-crest .map-container { filter: grayscale(1) invert(0.9) contrast(0.88); }

html.theme-blush {
  --text-dark: #5a3a42;
  --text-muted: #a07a82;
  --accent: #c9a06a;
}
html.theme-blush body { background: #f7ecee; color: #5a3a42; }
html.theme-blush main { background: rgba(255, 248, 249, 0.72); }
html.theme-blush .hero-label,
html.theme-blush .section-label,
html.theme-blush .couple-amp,
html.theme-blush .date-line,
html.theme-blush .contact-phone,
html.theme-blush .contact-email,
html.theme-blush .submit-btn { color: #b08a4a; }
html.theme-blush .portrait-name { color: #5a3a42; }
html.theme-blush .divider { width: 48px; height: 1px; background: #d8b4bc; margin: 22px auto; }
html.theme-blush .divider.wavy::after { display: none; }
html.theme-blush .form-group input,
html.theme-blush .form-group textarea,
html.theme-blush .toggle-btn {
  border: 1px solid #e8d0d4;
  background: #fffafb;
  color: #5a3a42;
}
html.theme-blush .toggle-btn.active,
html.theme-blush .submit-btn { border-color: #c9a06a; color: #b08a4a; }
