@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Montserrat:wght@300;400;500;600;700&display=swap');

@font-face {
  font-family: 'Ouvality';
  src: url('assets/Ouvality.ttf') format('truetype'),
       url('assets/Ouvality.otf') format('opentype');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

/* CASCADE LAYERS */
@layer reset, base, theme, components, utilities;

@layer reset {
  html, body, div, span, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
    box-sizing: border-box;
  }

  body {
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
  }

  ol, ul {
    list-style: none;
  }

  button, input, select, textarea {
    font-family: inherit;
    font-size: 100%;
    margin: 0;
    box-sizing: border-box;
  }

  img {
    max-width: 100%;
    height: auto;
    display: block;
  }
}

@layer theme {
  :root {
    /* Color Palette */
    --color-burgundy-900: hsl(350, 80%, 12%);
    --color-burgundy-800: hsl(350, 75%, 17%);
    --color-burgundy-700: hsl(350, 65%, 26%);
    --color-gold-600: hsl(41, 48%, 56%);
    --color-gold-400: hsl(41, 55%, 72%);
    --color-gold-100: hsl(41, 60%, 93%);
    --color-white: hsl(0, 0%, 100%);
    --color-cream-light: hsl(38, 40%, 98%);
    --color-cream-medium: hsl(38, 30%, 95%);
    --color-text-dark: hsl(24, 15%, 20%);
    --color-text-muted: hsl(24, 10%, 45%);
    --color-text-light: hsl(36, 45%, 98%);
    
    /* Typography */
    --font-serif: 'Cinzel', Georgia, serif;
    --font-script: 'Ouvality', 'Marck Script', cursive;
    --font-sans: 'Montserrat', sans-serif;
    
    /* Screen Sizing */
    --max-mobile-width: 450px;
    
    /* Transitions */
    --transition-smooth: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
    --transition-fast: all 0.2s ease-out;
  }
}

@layer base {
  body {
    background-color: var(--color-burgundy-900);
    color: var(--color-text-dark);
    font-family: var(--font-sans);
    display: flex;
    justify-content: center;
    align-items: flex-start;
    min-height: 100vh;
  }

  /* Main frame containing the mobile web invitation */
  .app-container {
    width: 100%;
    max-width: var(--max-mobile-width);
    background-color: var(--color-white);
    box-shadow: 0 15px 50px rgba(0, 0, 0, 0.4);
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
  }

  h1, h2, h3 {
    font-family: var(--font-serif);
    font-weight: 400;
    text-wrap: balance;
  }

  p {
    text-wrap: pretty;
  }
}

@layer components {
  /* Dynamic Background Music Player Widget */
  .music-player-widget {
    position: fixed;
    top: 1rem;
    right: max(1rem, calc((100vw - var(--max-mobile-width)) / 2 + 1rem));
    z-index: 100;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: rgba(255, 255, 255, 0.85);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid var(--color-gold-400);
    padding: 0.4rem 0.6rem;
    border-radius: 50px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    cursor: pointer;
    transition: var(--transition-smooth);
    user-select: none;
  }

  .music-player-widget:hover {
    transform: translateY(-1px);
    border-color: var(--color-gold-600);
  }

  .music-icon-wrapper {
    width: 28px;
    height: 28px;
    background: var(--color-burgundy-800);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-light);
    transition: var(--transition-smooth);
  }

  .music-player-widget.playing .music-icon-wrapper {
    background: var(--color-gold-600);
    animation: rotateMusic 4s linear infinite;
  }

  .music-waves {
    display: flex;
    align-items: flex-end;
    gap: 2px;
    height: 12px;
    width: 18px;
  }

  .wave-bar {
    width: 2px;
    height: 30%;
    background-color: var(--color-burgundy-800);
    border-radius: 1px;
  }

  .music-player-widget.playing .wave-bar {
    background-color: var(--color-gold-600);
    animation: bounceWave 0.8s ease-in-out infinite alternate;
  }

  .music-player-widget.playing .wave-bar:nth-child(2) { animation-delay: 0.2s; }
  .music-player-widget.playing .wave-bar:nth-child(3) { animation-delay: 0.4s; }
  .music-player-widget.playing .wave-bar:nth-child(4) { animation-delay: 0.1s; }

  /* Sections general block */
  .content-block {
    display: flex;
    flex-direction: column;
    width: 100%;
    position: relative;
    background-color: var(--color-white);
  }

  .bg-cream {
    background-color: var(--color-cream-medium);
  }

  .bg-burgundy {
    background-color: var(--color-burgundy-800);
    color: var(--color-text-light);
  }

  /* Image wrappers & Jagged Torn Paper Dividers */
  .img-wrapper {
    width: 100%;
    position: relative;
    overflow: hidden;
    background-color: inherit;
    isolation: isolate;
  }

  .relative-wrapper {
    position: relative;
  }

  .invitation-img {
    width: 100%;
    display: block;
    height: auto;
    object-fit: cover;
    mix-blend-mode: multiply;
  }

  .invitation-img.zoom-hero {
    width: 190% !important;
    max-width: 190% !important;
    margin-left: -45% !important;
    margin-bottom: 0 !important;
  }

  .invitation-img.zoom-large {
    width: 128% !important;
    max-width: 128% !important;
    margin-left: -14% !important;
    filter: contrast(1.03) brightness(1.03);
  }

  .invitation-img.zoom-medium {
    width: 116% !important;
    max-width: 116% !important;
    margin-left: -8% !important;
    filter: contrast(1.03) brightness(1.03);
  }

  /* Custom Jagged Torn Paper Dividers (Data URIs in HSL Colors) */
  .torn-paper-bottom {
    position: absolute;
    bottom: -1px;
    left: 0;
    width: 100%;
    height: 16px;
    background-size: 100% 100%;
    background-repeat: no-repeat;
    z-index: 5;
  }

  /* Over White section: bottom cutter fill is white */
  .content-block:nth-of-type(1) .img-wrapper:nth-of-type(1) .torn-paper-bottom {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0 10 L100 10 L100 3 L96 6 L92 2 L88 5 L84 1 L80 4 L76 2 L72 5 L68 1 L64 4 L60 2 L56 5 L52 1 L48 4 L44 2 L40 5 L36 1 L32 4 L28 2 L24 5 L20 1 L16 4 L12 2 L8 5 L4 1 L0 4 Z' fill='%23ffffff'/%3E%3C/svg%3E");
  }

  /* Over Cream section: bottom cutter fill is cream (#f7f4ed) */
  .content-block:nth-of-type(1) .img-wrapper:nth-of-type(2) .torn-paper-bottom,
  .content-block:nth-of-type(2) .img-wrapper:nth-of-type(1) .torn-paper-bottom,
  .content-block:nth-of-type(2) .img-wrapper:nth-of-type(2) .torn-paper-bottom {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0 10 L100 10 L100 3 L96 6 L92 2 L88 5 L84 1 L80 4 L76 2 L72 5 L68 1 L64 4 L60 2 L56 5 L52 1 L48 4 L44 2 L40 5 L36 1 L32 4 L28 2 L24 5 L20 1 L16 4 L12 2 L8 5 L4 1 L0 4 Z' fill='%23f7f4ed'/%3E%3C/svg%3E");
  }

  /* Over Burgundy section: bottom cutter fill is burgundy (#700c1a) */
  .content-block:nth-of-type(2) .img-wrapper:nth-of-type(3) .torn-paper-bottom,
  .content-block:nth-of-type(3) .img-wrapper:nth-of-type(1) .torn-paper-bottom {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0 10 L100 10 L100 3 L96 6 L92 2 L88 5 L84 1 L80 4 L76 2 L72 5 L68 1 L64 4 L60 2 L56 5 L52 1 L48 4 L44 2 L40 5 L36 1 L32 4 L28 2 L24 5 L20 1 L16 4 L12 2 L8 5 L4 1 L0 4 Z' fill='%23700c1a'/%3E%3C/svg%3E");
  }

  .torn-paper-top {
    position: absolute;
    top: -1px;
    left: 0;
    width: 100%;
    height: 16px;
    background-size: 100% 100%;
    background-repeat: no-repeat;
    z-index: 5;
  }

  /* Over White section: top cutter fill is white */
  .content-block:nth-of-type(1) .img-wrapper .torn-paper-top {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0 0 L100 0 L100 7 L96 4 L92 8 L88 5 L84 9 L80 6 L76 8 L72 5 L68 9 L64 6 L60 8 L56 5 L52 9 L48 6 L44 8 L40 5 L36 9 L32 6 L28 8 L24 5 L20 9 L16 6 L12 8 L8 5 L4 9 L0 6 Z' fill='%23ffffff'/%3E%3C/svg%3E");
  }

  /* Over Cream section: top cutter fill is cream (#f7f4ed) */
  .content-block:nth-of-type(2) .img-wrapper .torn-paper-top {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0 0 L100 0 L100 7 L96 4 L92 8 L88 5 L84 9 L80 6 L76 8 L72 5 L68 9 L64 6 L60 8 L56 5 L52 9 L48 6 L44 8 L40 5 L36 9 L32 6 L28 8 L24 5 L20 9 L16 6 L12 8 L8 5 L4 9 L0 6 Z' fill='%23f7f4ed'/%3E%3C/svg%3E");
  }

  /* Over Burgundy section: top cutter fill is burgundy (#700c1a) */
  .content-block:nth-of-type(3) .img-wrapper .torn-paper-top {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0 0 L100 0 L100 7 L96 4 L92 8 L88 5 L84 9 L80 6 L76 8 L72 5 L68 9 L64 6 L60 8 L56 5 L52 9 L48 6 L44 8 L40 5 L36 9 L32 6 L28 8 L24 5 L20 9 L16 6 L12 8 L8 5 L4 9 L0 6 Z' fill='%23700c1a'/%3E%3C/svg%3E");
  }

  /* Margin utilities */
  .margin-top-sm { margin-top: 1rem; }
  .margin-top-lg { margin-top: 2rem; }

  /* COLUMN 1 ELEMENTS */
  .hero-titles {
    text-align: center;
    margin-top: 2.5rem;
    margin-bottom: 1.5rem;
  }

  .name-title {
    font-family: var(--font-script);
    font-size: 6.5rem;
    color: var(--color-burgundy-800);
    line-height: 0.95;
    margin-bottom: 0.5rem;
    filter: drop-shadow(0 2px 3px rgba(0,0,0,0.03));
  }

  .subtitle {
    font-family: var(--font-serif);
    font-size: 1.25rem;
    font-weight: 400;
    letter-spacing: 0.25em;
    color: var(--color-text-dark);
    margin-top: 0.2rem;
  }

  /* Circular Badge component styling */
  .music-badge-container {
    width: 100%;
    display: flex;
    justify-content: center;
    margin: 1.5rem 0;
  }

  .music-badge-img {
    width: 100%;
    height: auto;
    display: block;
  }

  .invitation-intro-text {
    padding: 2.5rem 2rem;
    text-align: center;
  }

  .dear-guests-label {
    font-family: var(--font-serif);
    font-size: 1.15rem;
    color: var(--color-text-dark);
    letter-spacing: 0.2em;
    font-weight: 600;
    margin-bottom: 1.2rem;
  }

  .dear-guests-list {
    font-family: var(--font-script);
    font-size: 2.8rem;
    color: var(--color-burgundy-700);
    line-height: 1.4;
  }

  /* COLUMN 2 ELEMENTS */
  .invitation-main-text {
    padding: 3rem 2rem 1.5rem 2rem;
    text-align: center;
    font-family: var(--font-serif);
    font-size: 0.95rem;
    line-height: 1.8;
    color: var(--color-text-dark);
    letter-spacing: 0.05em;
  }

  .script-accent {
    font-family: var(--font-script);
    font-size: 4rem;
    color: var(--color-burgundy-800);
    line-height: 1.1;
    display: inline-block;
    margin: 0.5rem 0;
  }

  .ornament-divider {
    display: flex;
    justify-content: center;
    color: var(--color-gold-600);
    width: 100%;
    height: 24px;
    margin-bottom: 2rem;
  }

  .ornament-divider svg {
    height: 100%;
  }

  .hosts-section {
    text-align: center;
    margin-bottom: 2.5rem;
  }

  .hosts-title {
    font-family: var(--font-serif);
    font-size: 0.9rem;
    color: var(--color-text-muted);
    letter-spacing: 0.15em;
    margin-bottom: 0.5rem;
  }

  .hosts-names {
    font-family: var(--font-script);
    font-size: 3.5rem;
    color: var(--color-burgundy-800);
    line-height: 1.1;
  }

  .ceremony-details {
    padding: 3rem 2rem;
    text-align: center;
  }

  .calendar-header {
    margin-bottom: 1.8rem;
  }

  .calendar-date-title {
    font-family: var(--font-serif);
    font-size: 1.45rem;
    font-weight: 600;
    color: var(--color-burgundy-800);
    letter-spacing: 0.12em;
    margin-bottom: 0.5rem;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  }

  .calendar-time-title {
    font-family: var(--font-serif);
    font-size: 1rem;
    font-weight: 600;
    color: var(--color-text-dark);
    letter-spacing: 0.1em;
    opacity: 0.9;
  }

  .calendar-container {
    max-width: 330px;
    margin: 0 auto;
    padding: 1.6rem 1.4rem;
    background: rgba(255, 255, 255, 0.92);
    border: 1px solid var(--color-gold-400);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(112, 12, 26, 0.05);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
  }

  .calendar-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    column-gap: 0.2rem;
    text-align: center;
    font-family: var(--font-sans);
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--color-burgundy-700);
    margin-bottom: 1rem;
    border-bottom: 1px solid rgba(112, 12, 26, 0.15);
    padding-bottom: 0.5rem;
  }

  .calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    row-gap: 0.9rem;
    column-gap: 0.2rem;
    text-align: center;
  }

  .day-num {
    font-family: var(--font-sans);
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--color-text-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    height: 34px;
    position: relative;
  }

  .day-blank {
    height: 34px;
  }

  .day-highlighted {
    font-weight: 700;
    color: var(--color-burgundy-800);
  }

  .day-highlighted .day-text {
    position: relative;
    z-index: 2;
    color: var(--color-burgundy-900);
  }

  .day-highlighted .heart-icon {
    position: absolute;
    width: 130px !important;
    height: 90px !important;
    max-width: none !important;
    max-height: none !important;
    object-fit: contain;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1;
    pointer-events: none;
    animation: pulseHeart 2s infinite alternate ease-in-out;
  }

  @keyframes pulseHeart {
    0% { transform: translate(-50%, -50%) scale(0.95); }
    100% { transform: translate(-50%, -50%) scale(1.08); }
  }

  .address-details {
    padding: 3rem 2rem;
    text-align: center;
  }

  .address-text {
    font-family: var(--font-serif);
    font-size: 0.9rem;
    line-height: 1.8;
    color: var(--color-text-dark);
    letter-spacing: 0.08em;
    margin-bottom: 2rem;
  }

  .venue-highlight {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--color-burgundy-800);
    display: inline-block;
    margin: 0.3rem 0;
  }

  .map-button-container {
    display: flex;
    justify-content: center;
  }

  .map-link-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.6rem 2.2rem;
    font-family: var(--font-sans);
    font-weight: 500;
    font-size: 0.85rem;
    letter-spacing: 0.15em;
    text-decoration: none;
    color: var(--color-text-dark);
    background-color: var(--color-white);
    border: 1px solid var(--color-gold-600);
    border-radius: 50px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);
    transition: var(--transition-smooth);
    min-block-size: 40px;
  }

  .map-link-btn:hover {
    background-color: var(--color-gold-100);
    border-color: var(--color-gold-600);
    transform: translateY(-1px);
    box-shadow: 0 6px 15px rgba(0, 0, 0, 0.08);
  }

  .map-pin-icon {
    width: 14px;
    height: 14px;
    color: var(--color-gold-600);
  }

  /* COLUMN 3 ELEMENTS */
  /* Timer overlay styling over image 5 */
  .dark-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(60, 5, 10, 0.55);
    z-index: 1;
  }

  .countdown-overlay-content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 90%;
    z-index: 2;
    text-align: center;
    color: var(--color-text-light);
  }

  .countdown-title {
    font-family: var(--font-script);
    font-size: 2.2rem;
    color: var(--color-gold-400);
    margin-bottom: 1.5rem;
    filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));
  }

  .countdown-timer-grid {
    display: flex;
    justify-content: center;
    gap: 0.6rem;
  }

  .timer-cell {
    background-color: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(212, 175, 55, 0.35);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    min-width: 68px;
    padding: 0.6rem 0.2rem;
    border-radius: 4px;
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  .timer-num {
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: 1.6rem;
    color: var(--color-gold-400);
    line-height: 1.1;
  }

  .timer-lbl {
    font-family: var(--font-sans);
    font-size: 0.65rem;
    font-weight: 500;
    letter-spacing: 0.05em;
    opacity: 0.85;
    margin-top: 0.2rem;
  }

  /* RSVP Form Component */
  .rsvp-form-container {
    padding: 3.5rem 2rem;
    position: relative;
  }

  .rsvp-title {
    font-family: var(--font-serif);
    font-size: 0.95rem;
    text-align: center;
    line-height: 1.6;
    letter-spacing: 0.1em;
    color: var(--color-gold-400);
    margin-bottom: 2.2rem;
  }

  .rsvp-interactive-form {
    display: flex;
    flex-direction: column;
    gap: 1.8rem;
  }

  .form-field {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
  }

  .field-label {
    font-family: var(--font-serif);
    font-size: 0.85rem;
    letter-spacing: 0.1em;
    color: var(--color-text-light);
  }

  .field-textbox {
    width: 100%;
    background-color: var(--color-white);
    border: 1px solid var(--color-gold-400);
    border-radius: 25px;
    color: var(--color-text-dark);
    padding: 0.8rem 1.2rem;
    font-size: 0.9rem;
    letter-spacing: 0.05em;
    transition: var(--transition-fast);
    text-align: center;
    font-weight: 500;
  }

  .field-textbox::placeholder {
    color: var(--color-text-muted);
    opacity: 0.7;
    font-weight: 400;
  }

  .field-textbox:focus {
    outline: none;
    border-color: var(--color-gold-600);
    box-shadow: 0 0 0 3px rgba(197, 160, 89, 0.25);
  }

  .field-textbox:user-invalid {
    border-color: hsl(0, 85%, 65%);
    background-color: hsla(0, 85%, 65%, 0.05);
  }

  .field-note {
    font-size: 0.7rem;
    line-height: 1.4;
    color: var(--color-text-light);
    opacity: 0.75;
    text-align: center;
    margin-top: 0.2rem;
  }

  /* Customized radio group styling using label:has(:checked) */
  .attendance-options {
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
    margin-top: 0.2rem;
  }

  .att-option {
    display: flex;
    align-items: center;
    font-family: var(--font-sans);
    font-size: 0.8rem;
    font-weight: 500;
    letter-spacing: 0.05em;
    color: var(--color-text-light);
    cursor: pointer;
    user-select: none;
    padding: 0.5rem 0.2rem;
    position: relative;
  }

  .att-option input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
  }

  .att-radio-dot {
    width: 16px;
    height: 16px;
    border: 1px solid var(--color-text-light);
    border-radius: 50%;
    margin-right: 0.8rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: var(--transition-fast);
  }

  .att-radio-dot::after {
    content: '';
    width: 8px;
    height: 8px;
    background-color: var(--color-gold-400);
    border-radius: 50%;
    transform: scale(0);
    transition: var(--transition-fast);
  }

  /* Selector active states based on label:has(:checked) from guides */
  .att-option:has(input[type="radio"]:checked) {
    color: var(--color-gold-400);
  }

  .att-option:has(input[type="radio"]:checked) .att-radio-dot {
    border-color: var(--color-gold-400);
  }

  .att-option:has(input[type="radio"]:checked) .att-radio-dot::after {
    transform: scale(1);
  }

  /* Oval Solid Button - Script font "Жіберу" */
  .rsvp-submit-btn {
    background-color: var(--color-burgundy-900);
    border: 1px solid var(--color-gold-400);
    color: var(--color-text-light);
    border-radius: 50px;
    padding: 0.5rem 2rem;
    font-family: var(--font-script);
    font-size: 1.8rem;
    cursor: pointer;
    box-shadow: 0 4px 15px rgba(0,0,0,0.15);
    transition: var(--transition-smooth);
    margin-top: 1rem;
    text-align: center;
    line-height: 1;
    min-block-size: 48px;
  }

  .rsvp-submit-btn:hover:not(:disabled) {
    background-color: var(--color-burgundy-700);
    border-color: var(--color-gold-600);
    transform: translateY(-1px);
    box-shadow: 0 6px 20px rgba(0,0,0,0.25);
  }

  /* Success Dialog widget */
  .rsvp-success-view {
    display: none;
    text-align: center;
    padding: 2rem 1rem;
    animation: fadeInUp 0.5s ease-out;
  }

  .success-icon {
    width: 48px;
    height: 48px;
    color: var(--color-gold-400);
    margin: 0 auto 1rem auto;
  }

  .success-title {
    font-family: var(--font-script);
    font-size: 2.2rem;
    color: var(--color-gold-400);
    margin-bottom: 0.5rem;
  }

  /* Footer blessing */
  .footer-blessing {
    text-align: center;
    font-family: var(--font-script);
    font-size: 2.8rem;
    line-height: 1.4;
    color: var(--color-gold-400);
    padding: 2rem var(--container-padding);
  }

  /* Zoom override to remove left/right white margins from img6.png */
  .countdown-img-zoom {
    width: 185% !important;
    max-width: 185% !important;
    margin-left: -42.5% !important;
    filter: brightness(0.75) !important;
  }

  /* White Section Theme Overrides */
  .bg-white-section {
    background-color: var(--color-white) !important;
    color: var(--color-text-dark) !important;
  }

  .bg-white-section .rsvp-title {
    color: var(--color-burgundy-800) !important;
  }

  .bg-white-section .field-label {
    color: var(--color-text-dark) !important;
  }

  .bg-white-section .field-note {
    color: var(--color-text-muted) !important;
    opacity: 0.85 !important;
  }

  .bg-white-section .att-option {
    color: var(--color-text-dark) !important;
  }

  .bg-white-section .att-radio-dot {
    border-color: var(--color-text-dark) !important;
  }

  .bg-white-section .att-option:has(input[type="radio"]:checked) {
    color: var(--color-burgundy-800) !important;
  }

  .bg-white-section .att-option:has(input[type="radio"]:checked) .att-radio-dot {
    border-color: var(--color-burgundy-800) !important;
  }

  .bg-white-section .att-option:has(input[type="radio"]:checked) .att-radio-dot::after {
    background-color: var(--color-burgundy-800) !important;
  }

  .bg-white-section .footer-blessing {
    color: var(--color-burgundy-800) !important;
  }

  .bg-white-section .rsvp-success-view {
    color: var(--color-text-dark) !important;
  }

  .bg-white-section .success-title {
    color: var(--color-burgundy-800) !important;
  }

  .bg-white-section .success-icon {
    color: var(--color-burgundy-800) !important;
  }

  .bg-white-section .img-wrapper .torn-paper-top {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0 0 L100 0 L100 7 L96 4 L92 8 L88 5 L84 9 L80 6 L76 8 L72 5 L68 9 L64 6 L60 8 L56 5 L52 9 L48 6 L44 8 L40 5 L36 9 L32 6 L28 8 L24 5 L20 9 L16 6 L12 8 L8 5 L4 9 L0 6 Z' fill='%23ffffff'/%3E%3C/svg%3E") !important;
  }

  .bg-white-section .img-wrapper:nth-of-type(1) .torn-paper-bottom {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0 10 L100 10 L100 3 L96 6 L92 2 L88 5 L84 1 L80 4 L76 2 L72 5 L68 1 L64 4 L60 2 L56 5 L52 1 L48 4 L44 2 L40 5 L36 1 L32 4 L28 2 L24 5 L20 1 L16 4 L12 2 L8 5 L4 1 L0 4 Z' fill='%23ffffff'/%3E%3C/svg%3E") !important;
  }

  /* Decorative Background Ornaments peaking out from left/right */
  .bg-ornament-left,
  .bg-ornament-right {
    position: relative;
    z-index: 1;
  }

  .bg-ornament-left::before {
    content: "";
    position: absolute;
    left: -375px;
    top: 50%;
    transform: translateY(-50%);
    width: 750px;
    height: 750px;
    background-image: url('assets/bg.png');
    background-size: contain;
    background-position: center;
    background-repeat: no-repeat;
    opacity: 0.7;
    pointer-events: none;
    z-index: -1;
  }

  .bg-ornament-right::before {
    content: "";
    position: absolute;
    right: -375px;
    top: 50%;
    transform: translateY(-50%);
    width: 750px;
    height: 750px;
    background-image: url('assets/bg.png');
    background-size: contain;
    background-position: center;
    background-repeat: no-repeat;
    opacity: 0.7;
    pointer-events: none;
    z-index: -1;
  }
}

@layer utilities {
  /* Keyframes */
  @keyframes rotateMusic {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
  }

  @keyframes rotateMusicBadge {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
  }

  @keyframes bounceWave {
    from { height: 30%; }
    to { height: 100%; }
  }

  @keyframes fadeInUp {
    from {
      opacity: 0;
      transform: translateY(15px);
    }
    to {
      opacity: 1;
      transform: translateY(0);
    }
  }

  /* Coarse Pointer Media optimizations */
  @media (pointer: coarse) {
    .field-textbox, .att-option, .rsvp-submit-btn, .map-link-btn {
      min-block-size: 48px;
    }
  }
}
