:root {
        --cream: #f6f1e8;
        --cream2: #efe6d6;
        --paper: #fffdf8;
        --field: #faf6ee;
        --ink: #3a3631;
        --muted: #6f675c;
        --faint: #9a917f;
        --label: #a48a57;
        --gold: #c2a05a;
        --gold-l: #d8c194;
        --gold-d: #b08d4f;
        --sage: #879a7d;
        --serif: "Cormorant Garamond", serif;
        --script: "Dancing Script", cursive;
        --sans: "Be Vietnam Pro", sans-serif;
      }
      * {
        box-sizing: border-box;
      }
      html {
        scroll-behavior: smooth;
      }
      body {
        margin: 0;
        background: var(--cream);
        color: var(--ink);
        font-family: var(--sans);
        -webkit-font-smoothing: antialiased;
        text-rendering: optimizeLegibility;
        overflow-x: hidden;
      }
      ::selection {
        background: var(--gold);
        color: var(--paper);
      }
      section {
        scroll-margin-top: 24px;
      }
      img {
        display: block;
        max-width: 100%;
      }
      input,
      select,
      textarea,
      button {
        font-family: inherit;
      }

      @keyframes floaty {
        0%,
        100% {
          transform: translateY(0);
        }
        50% {
          transform: translateY(9px);
        }
      }
      @keyframes floatyX {
        0%,
        100% {
          transform: translateX(-50%) translateY(0);
        }
        50% {
          transform: translateX(-50%) translateY(9px);
        }
      }
      @keyframes petalfall {
        0% {
          transform: translateY(-12vh) translateX(0) rotate(0deg);
          opacity: 0;
        }
        12% {
          opacity: 0.65;
        }
        100% {
          transform: translateY(112vh) translateX(46px) rotate(260deg);
          opacity: 0;
        }
      }
      .reveal {
        opacity: 0;
        transform: translateY(34px);
        transition:
          opacity 0.9s ease,
          transform 0.9s cubic-bezier(0.2, 0.7, 0.3, 1);
      }
      .reveal.in {
        opacity: 1;
        transform: none;
      }

      /* ===== MUSIC FLOATING BUTTON ===== */
      .topctrl {
        position: fixed;
        top: 18px;
        right: 18px;
        z-index: 100;
        display: flex;
        gap: 8px;
        align-items: flex-start;
      }
      .musicbtn,
      .langbtn {
        width: 44px;
        height: 44px;
        border-radius: 50%;
        border: 1px solid rgba(58, 54, 49, 0.16);
        background: rgba(255, 253, 248, 0.9);
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
        color: var(--ink);
        cursor: pointer;
        display: grid;
        place-items: center;
        box-shadow: 0 10px 26px -14px rgba(58, 54, 49, 0.5);
        transition: all 0.3s;
        padding: 0;
      }
      @media (hover: hover) {
        .musicbtn:hover,
        .langbtn:hover {
          background: var(--gold);
          color: var(--paper);
          border-color: var(--gold);
        }
        .musicbtn:hover .music-ic {
          filter: brightness(0) invert(1);
        }
      }
      .music-ic {
        width: 19px;
        height: 19px;
        object-fit: contain;
        transition: filter 0.3s;
      }
      .flag {
        display: inline-flex;
        width: 24px;
        height: 24px;
        flex-shrink: 0;
      }
      .flag svg {
        width: 100%;
        height: 100%;
        display: block;
      }
      .langwrap {
        position: relative;
      }
      .langmenu {
        position: absolute;
        top: 50px;
        right: 0;
        min-width: 158px;
        background: rgba(255, 253, 248, 0.97);
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
        border: 1px solid rgba(58, 54, 49, 0.14);
        border-radius: 12px;
        box-shadow: 0 18px 44px -18px rgba(58, 54, 49, 0.5);
        padding: 6px;
        display: none;
        flex-direction: column;
        gap: 2px;
      }
      .langmenu.open {
        display: flex;
      }
      .langopt {
        display: flex;
        align-items: center;
        gap: 10px;
        width: 100%;
        padding: 10px 12px;
        border: none;
        background: transparent;
        border-radius: 8px;
        cursor: pointer;
        font-family: var(--sans);
        font-size: 0.9rem;
        color: var(--ink);
        text-align: left;
        transition: background 0.2s;
      }
      .langopt:hover {
        background: rgba(194, 160, 90, 0.14);
      }
      .langopt.active {
        background: rgba(194, 160, 90, 0.2);
        font-weight: 500;
      }

      /* ===== HERO ===== */
      .hero {
        position: relative;
        min-height: 100svh;
        display: grid;
        place-items: center;
        overflow: hidden;
        text-align: center;
        padding: 96px 22px 80px;
      }
      .hero-img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: 72% center;
      }
      .hero-overlay {
        position: absolute;
        inset: 0;
        z-index: 1;
        pointer-events: none;
        background: linear-gradient(
          180deg,
          rgba(46, 42, 38, 0.5),
          rgba(46, 42, 38, 0.28) 42%,
          rgba(46, 42, 38, 0.66)
        );
      }
      .petal {
        position: absolute;
        top: 0;
        opacity: 0;
        border-radius: 0 100% 0 100%;
        animation: petalfall linear infinite both;
        pointer-events: none;
        z-index: 1;
      }
      .hero-inner {
        position: relative;
        z-index: 2;
        pointer-events: none;
        color: var(--paper);
        max-width: 820px;
        text-align: center;
      }
      .guest-greet {
        display: block;
        margin: 14px 0;
      }
      .guest-greet .gg-text {
        font-family: var(--script);
        font-weight: 700;
        font-size: clamp(1.9rem, 6vw, 2.8rem);
        line-height: 1.15;
        color: var(--gold);
      }
      .hero .eyebrow {
        font-family: var(--sans);
        font-size: 0.72rem;
        letter-spacing: 0.4em;
        text-transform: uppercase;
        color: var(--gold-l);
        margin-bottom: 26px;
      }
      .hero .name {
        font-family: var(--script);
        font-weight: 700;
        font-size: clamp(3.4rem, 15vw, 7.2rem);
        line-height: 0.95;
        text-shadow: 0 2px 30px rgba(0, 0, 0, 0.35);
      }
      .hero .amp {
        font-family: var(--serif);
        font-style: italic;
        font-size: clamp(1.6rem, 6vw, 2.4rem);
        color: var(--gold-l);
        margin: 2px 0;
      }
      .hero .ribbon {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 16px;
        margin-top: 34px;
      }
      .hero .ribbon .line {
        height: 1px;
        width: 46px;
        background: var(--gold-l);
        opacity: 0.85;
      }
      .hero .ribbon .txt {
        font-family: var(--serif);
        font-style: italic;
        letter-spacing: 0.06em;
        font-size: 1.25rem;
        color: var(--gold-l);
      }
      .scrolldown {
        position: absolute;
        z-index: 2;
        bottom: 26px;
        left: 50%;
        color: var(--paper);
        text-decoration: none;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 8px;
        text-align: center;
        animation: floatyX 2.4s ease-in-out infinite;
      }
      .scrolldown .s1 {
        font-family: var(--sans);
        font-size: 0.62rem;
        letter-spacing: 0.26em;
        text-transform: uppercase;
      }
      .scrolldown .s2 {
        font-size: 1.1rem;
        line-height: 1;
      }

      .eyebrow {
        font-family: var(--sans);
        font-size: 0.72rem;
        letter-spacing: 0.4em;
        text-transform: uppercase;
        color: var(--gold);
        margin-bottom: 14px;
      }
      .h2 {
        font-family: var(--serif);
        font-style: italic;
        font-weight: 500;
        font-size: clamp(2rem, 6vw, 3.2rem);
        color: var(--ink);
        margin: 0;
      }
      .center-head {
        text-align: center;
        margin-bottom: clamp(32px, 5vw, 48px);
      }

      /* ===== INVITATION ===== */
      .invite {
        text-align: center;
        padding: clamp(54px, 9vw, 96px) clamp(24px, 6vw, 40px);
        max-width: 760px;
        margin: 0 auto;
      }
      .invite .quote {
        font-family: var(--serif);
        font-size: clamp(1.45rem, 4.5vw, 2rem);
        line-height: 1.6;
        color: var(--ink);
        font-style: italic;
        margin: 0 0 30px;
        text-wrap: pretty;
      }
      .invite .body {
        font-family: var(--sans);
        font-weight: 300;
        font-size: 1.02rem;
        line-height: 1.9;
        color: var(--muted);
        margin: 0 auto;
        max-width: 560px;
        text-wrap: pretty;
      }
      .invite .sigwrap {
        margin-top: 42px;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 4px;
      }
      .invite .signame {
        font-family: var(--script);
        font-weight: 700;
        font-size: 2rem;
        color: var(--ink);
      }
      .invite .sigjoin {
        font-family: var(--serif);
        font-style: italic;
        font-size: 1.8rem;
        color: var(--gold-l);
        line-height: 1;
      }

      /* ===== COUNTDOWN ===== */
      .countdown {
        background: var(--cream2);
        padding: clamp(50px, 8vw, 86px) clamp(22px, 6vw, 40px);
        text-align: center;
      }
      .countdown h2 {
        font-family: var(--serif);
        font-style: italic;
        font-weight: 500;
        font-size: clamp(2rem, 6vw, 3.2rem);
        color: var(--ink);
        margin: 0 0 40px;
      }
      .cd-grid {
        display: flex;
        flex-wrap: wrap;
        gap: clamp(10px, 3vw, 26px);
        justify-content: center;
        max-width: 640px;
        margin: 0 auto;
      }
      .cd-cell {
        flex: 1;
        min-width: 70px;
        background: var(--paper);
        border: 1px solid rgba(194, 160, 90, 0.3);
        border-radius: 4px;
        padding: 26px 8px;
        box-shadow: 0 20px 40px -30px rgba(58, 54, 49, 0.4);
      }
      .cd-num {
        font-family: var(--serif);
        font-weight: 600;
        font-size: clamp(2.4rem, 9vw, 3.6rem);
        line-height: 1;
        color: var(--ink);
      }
      .cd-cell.sec .cd-num {
        color: var(--gold);
      }
      .cd-lbl {
        font-family: var(--sans);
        font-size: 0.66rem;
        letter-spacing: 0.26em;
        text-transform: uppercase;
        color: var(--faint);
        margin-top: 10px;
      }
      .cd-foot {
        margin-top: 30px;
        font-family: var(--serif);
        font-style: italic;
        font-size: 1.3rem;
        color: var(--muted);
      }

      /* ===== EVENTS ===== */
      .events {
        padding: clamp(54px, 9vw, 96px) clamp(22px, 6vw, 40px);
        max-width: 1080px;
        margin: 0 auto;
      }
      .cards {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
        gap: clamp(22px, 4vw, 40px);
      }
      .card {
        background: var(--paper);
        border: 1px solid rgba(58, 54, 49, 0.1);
        border-radius: 6px;
        overflow: hidden;
        box-shadow: 0 36px 70px -44px rgba(58, 54, 49, 0.5);
      }
      .card-img {
        position: relative;
        height: clamp(200px, 42vw, 240px);
      }
      .card-img img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
      }
      .card-body {
        padding: clamp(26px, 4vw, 40px);
      }
      .tag {
        display: inline-block;
        font-family: var(--sans);
        font-size: 0.62rem;
        letter-spacing: 0.26em;
        text-transform: uppercase;
        border-radius: 999px;
        padding: 5px 14px;
        margin-bottom: 18px;
      }
      .tag.gai {
        color: var(--gold);
        border: 1px solid rgba(194, 160, 90, 0.5);
      }
      .tag.trai {
        color: var(--gold);
        border: 1px solid rgba(194, 160, 90, 0.5);
      }
      .card h3 {
        font-family: var(--script);
        font-weight: 700;
        font-size: 2.4rem;
        color: var(--ink);
        margin: 0 0 4px;
      }
      .card .date {
        font-family: var(--serif);
        font-size: 1.5rem;
        color: var(--gold);
        margin-bottom: 22px;
      }
      /* timeline — icon trái · đường+tim giữa · giờ/tên phải */
      .timeline {
        border-top: 1px solid rgba(58, 54, 49, 0.1);
        border-bottom: 1px solid rgba(58, 54, 49, 0.1);
        padding: 30px 2px;
        margin-bottom: 22px;
      }
      .tl-row {
        display: grid;
        grid-template-columns: 62px 26px 1fr;
        align-items: center;
        column-gap: 14px;
      }
      .tl-icon {
        display: grid;
        place-items: center;
      }
      .tl-icon img {
        width: 52px;
        height: 52px;
        object-fit: contain;
      }
      .tl-rail {
        position: relative;
        align-self: stretch;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .tl-rail::before {
        content: "";
        position: absolute;
        top: 0;
        bottom: 0;
        width: 1.5px;
        background: rgba(194, 160, 90, 0.4);
      }
      .tl-row:first-child .tl-rail::before {
        top: 50%;
      }
      .tl-row:last-child .tl-rail::before {
        bottom: 50%;
      }
      .tl-heart {
        position: relative;
        z-index: 1;
        width: 16px;
        height: 16px;
        color: var(--gold);
        filter: drop-shadow(0 1px 2px rgba(194, 160, 90, 0.4));
      }
      .tl-content {
        padding: 30px 0;
      }
      .tl-time {
        display: block;
        font-family: var(--serif);
        font-weight: 600;
        font-size: 1.45rem;
        color: var(--ink);
        line-height: 1.1;
      }
      .tl-name {
        display: block;
        font-family: var(--sans);
        font-weight: 400;
        font-size: 0.85rem;
        letter-spacing: 0.04em;
        color: #8b8273;
        margin-top: 5px;
      }
      .venue-name {
        font-family: var(--sans);
        font-weight: 500;
        color: var(--ink);
        font-size: 1rem;
        margin-bottom: 4px;
      }
      .venue-addr {
        font-family: var(--sans);
        font-weight: 300;
        color: var(--muted);
        font-size: 0.9rem;
        line-height: 1.6;
        margin-bottom: 20px;
      }
      .card-actions {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        flex-wrap: wrap;
      }
      .dirlink {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        font-family: var(--sans);
        font-size: 0.74rem;
        letter-spacing: 0.18em;
        text-transform: uppercase;
        color: var(--ink);
        text-decoration: none;
        border-bottom: 1px solid var(--gold);
        padding-bottom: 4px;
        transition: color 0.3s;
      }
      .dirlink:hover {
        color: var(--gold);
      }
      .callbtn {
        flex-shrink: 0;
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 9px 16px;
        border-radius: 999px;
        border: 1px solid rgba(194, 160, 90, 0.5);
        color: var(--gold);
        background: transparent;
        text-decoration: none;
        font-family: var(--sans);
        font-size: 0.72rem;
        letter-spacing: 0.1em;
        font-weight: 500;
        transition: all 0.3s;
      }
      .callbtn svg {
        flex-shrink: 0;
      }
      .callbtn:hover {
        background: var(--gold);
        color: var(--paper);
        border-color: var(--gold);
      }

      /* ===== GALLERY ===== */
      .gallery {
        background: var(--cream2);
        padding: clamp(54px, 9vw, 96px) clamp(22px, 6vw, 40px);
      }
      .gallery-head {
        text-align: center;
        max-width: 620px;
        margin: 0 auto clamp(30px, 5vw, 44px);
      }
      .gallery-head p {
        font-family: var(--sans);
        font-weight: 300;
        font-size: 0.92rem;
        line-height: 1.7;
        color: var(--muted);
        margin: 14px 0 0;
      }
      .masonry {
        columns: 236px;
        column-gap: clamp(14px, 2.4vw, 22px);
        max-width: 980px;
        margin: 0 auto;
      }
      .frame {
        break-inside: avoid;
        -webkit-column-break-inside: avoid;
        margin: 0 0 clamp(16px, 2.6vw, 24px);
        position: relative;
        background: var(--paper);
        padding: 12px;
        border: 1px solid rgba(58, 54, 49, 0.09);
        border-radius: 3px;
        box-shadow: 0 20px 44px -28px rgba(58, 54, 49, 0.55);
        transition:
          transform 0.45s cubic-bezier(0.2, 0.7, 0.3, 1),
          box-shadow 0.45s;
        cursor: pointer;
      }
      .frame:nth-child(odd) {
        transform: rotate(-1.3deg);
      }
      .frame:nth-child(even) {
        transform: rotate(1.1deg);
      }
      .frame:hover {
        transform: rotate(0) translateY(-6px) scale(1.015);
        box-shadow: 0 32px 62px -26px rgba(58, 54, 49, 0.62);
        z-index: 5;
      }
      .frame img {
        width: 100%;
        height: auto;
        display: block;
        border-radius: 2px;
        background: #efe7d9;
      }

      /* ===== LIGHTBOX ===== */
      .lightbox {
        position: fixed;
        inset: 0;
        z-index: 300;
        background: rgba(34, 30, 26, 0.94);
        display: none;
        align-items: center;
        justify-content: center;
        padding: 24px;
      }
      .lightbox.open {
        display: flex;
      }
      .lightbox img {
        max-width: 92vw;
        max-height: 88vh;
        border-radius: 4px;
        box-shadow: 0 30px 80px rgba(0, 0, 0, 0.5);
      }
      .lightbox .lb-close {
        position: absolute;
        top: 18px;
        right: 22px;
        width: 46px;
        height: 46px;
        border-radius: 50%;
        border: 1px solid rgba(255, 255, 255, 0.3);
        background: transparent;
        color: #fff;
        font-size: 1.3rem;
        cursor: pointer;
      }
      .lightbox .lb-nav {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        width: 50px;
        height: 50px;
        border-radius: 50%;
        border: 1px solid rgba(255, 255, 255, 0.3);
        background: rgba(0, 0, 0, 0.2);
        color: #fff;
        font-size: 1.4rem;
        cursor: pointer;
      }
      .lightbox .lb-prev {
        left: 14px;
      }
      .lightbox .lb-next {
        right: 14px;
      }

      /* ===== MAPS ===== */
      .maps {
        padding: clamp(54px, 9vw, 96px) clamp(22px, 6vw, 40px);
        max-width: 1080px;
        margin: 0 auto;
      }
      .map-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
        gap: clamp(22px, 4vw, 36px);
      }
      .map-name {
        font-family: var(--sans);
        font-weight: 500;
        font-size: 1.1rem;
        color: var(--ink);
      }
      .map-addr {
        font-family: var(--sans);
        font-weight: 300;
        font-size: 0.88rem;
        color: var(--muted);
        margin: 4px 0 16px;
      }
      .map-wrap {
        border-radius: 6px;
        overflow: hidden;
        border: 1px solid rgba(58, 54, 49, 0.12);
        box-shadow: 0 30px 60px -40px rgba(58, 54, 49, 0.5);
      }
      .map-wrap iframe {
        width: 100%;
        height: 280px;
        border: 0;
        display: block;
      }

      /* ===== RSVP (light) ===== */
      .rsvp {
        background: var(--cream2);
        padding: clamp(54px, 9vw, 96px) clamp(22px, 6vw, 40px);
      }
      .rsvp-inner {
        max-width: 540px;
        margin: 0 auto;
        text-align: center;
      }
      .rsvp .lead {
        font-family: var(--sans);
        font-weight: 300;
        font-size: 0.95rem;
        line-height: 1.7;
        color: var(--muted);
        margin: 0 auto 38px;
        max-width: 430px;
      }
      .rsvp form {
        background: var(--paper);
        border: 1px solid rgba(58, 54, 49, 0.08);
        border-radius: 12px;
        box-shadow: 0 40px 80px -50px rgba(58, 54, 49, 0.55);
        padding: clamp(26px, 5vw, 42px);
        display: flex;
        flex-direction: column;
        gap: 18px;
        text-align: left;
      }
      .rsvp label {
        display: block;
        font-family: var(--sans);
        font-size: 0.66rem;
        font-weight: 600;
        letter-spacing: 0.18em;
        text-transform: uppercase;
        color: var(--label);
        margin-bottom: 8px;
      }
      .rsvp input,
      .rsvp select,
      .rsvp textarea {
        width: 100%;
        padding: 13px 15px;
        background: var(--field);
        border: 1px solid rgba(58, 54, 49, 0.16);
        border-radius: 6px;
        color: var(--ink);
        font-size: 0.95rem;
        line-height: 1.3;
        outline: none;
        transition:
          border-color 0.25s,
          box-shadow 0.25s;
      }
      .rsvp input::placeholder,
      .rsvp textarea::placeholder {
        color: #b6ab94;
      }
      .rsvp input:focus,
      .rsvp select:focus,
      .rsvp textarea:focus {
        border-color: var(--gold);
        box-shadow: 0 0 0 3px rgba(194, 160, 90, 0.16);
      }
      .rsvp select {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        padding-right: 40px;
        cursor: pointer;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23a48a57' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right 15px center;
        background-size: 12px;
      }
      .rsvp select::-ms-expand {
        display: none;
      }
      .rsvp .two {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
        gap: 16px;
      }
      .rsvp textarea {
        resize: vertical;
      }
      .rsvp .submit {
        margin-top: 4px;
        padding: 16px;
        background: var(--gold);
        color: var(--paper);
        border: none;
        border-radius: 6px;
        font-family: var(--sans);
        font-weight: 600;
        font-size: 0.76rem;
        letter-spacing: 0.2em;
        text-transform: uppercase;
        cursor: pointer;
        transition:
          background 0.3s,
          transform 0.2s;
      }
      .rsvp .submit:hover {
        background: var(--gold-d);
        transform: translateY(-1px);
      }
      .rsvp .submit:disabled {
        opacity: 0.6;
        cursor: default;
        transform: none;
      }
      .rsvp .err {
        font-family: var(--sans);
        color: #b5503a;
        font-size: 0.85rem;
        margin: 2px 0 0;
        text-align: center;
      }
      .rsvp .thanks {
        background: var(--paper);
        border: 1px solid rgba(194, 160, 90, 0.4);
        border-radius: 12px;
        padding: clamp(40px, 7vw, 60px) 28px;
        box-shadow: 0 40px 80px -50px rgba(58, 54, 49, 0.55);
      }
      .rsvp .thanks .mark {
        font-size: 2rem;
        color: var(--gold);
        margin-bottom: 14px;
      }
      .rsvp .thanks .big {
        font-family: var(--script);
        font-weight: 700;
        font-size: 2.6rem;
        color: var(--ink);
        margin-bottom: 10px;
      }
      .rsvp .thanks p {
        font-family: var(--sans);
        font-weight: 300;
        color: var(--muted);
        line-height: 1.7;
        margin: 0;
      }

      /* ===== MỪNG CƯỚI ===== */
      .gift {
        background: var(--cream);
        padding: clamp(54px, 9vw, 96px) clamp(22px, 6vw, 40px);
      }
      .gift-head {
        text-align: center;
        max-width: 560px;
        margin: 0 auto clamp(30px, 5vw, 44px);
      }
      .gift-head p {
        font-family: var(--sans);
        font-weight: 300;
        font-size: 0.95rem;
        line-height: 1.7;
        color: var(--muted);
        margin: 0 auto;
        max-width: 440px;
      }
      .gift-box {
        width: min(318px, 82vw);
        margin: 0 auto;
        perspective: 1600px;
        border-radius: 14px;
        box-shadow: 0 44px 84px -46px rgba(58, 54, 49, 0.62);
        transition: box-shadow 0.4s ease;
      }
      .gift-card-wrap {
        position: relative;
        width: 100%;
        aspect-ratio: 5/7;
        transform-style: preserve-3d;
        transition: transform 0.8s cubic-bezier(0.22, 0.61, 0.28, 1);
        will-change: transform;
      }
      .gift-card-wrap.flipped {
        transform: rotateY(180deg);
      }
      .gift-face {
        position: absolute;
        inset: 0;
        border-radius: 14px;
        -webkit-backface-visibility: hidden;
        backface-visibility: hidden;
        transform: translateZ(0);
      }
      .gift-closed {
        cursor: pointer;
        background: linear-gradient(160deg, #fffdf8, #f1e7d4);
        border: 1px solid rgba(194, 160, 90, 0.55);
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 16px;
        overflow: hidden;
      }
      .gift-box:hover {
        box-shadow: 0 54px 98px -44px rgba(58, 54, 49, 0.66);
      }
      .gift-border1 {
        position: absolute;
        inset: 14px;
        border: 1px solid rgba(194, 160, 90, 0.42);
        border-radius: 9px;
        pointer-events: none;
      }
      .gift-border2 {
        position: absolute;
        inset: 19px;
        border: 1px solid rgba(194, 160, 90, 0.22);
        border-radius: 7px;
        pointer-events: none;
      }
      .gift-songhy {
        font-family: var(--sans);
        font-size: 0.64rem;
        letter-spacing: 0.36em;
        text-transform: uppercase;
        color: var(--label);
      }
      .gift-hy {
        font-family: serif;
        font-size: clamp(4.2rem, 19vw, 6.2rem);
        line-height: 0.85;
        color: var(--gold);
        font-weight: 700;
        text-shadow: 0 2px 18px rgba(194, 160, 90, 0.25);
      }
      .gift-mung {
        font-family: var(--script);
        font-weight: 700;
        font-size: 1.8rem;
        color: var(--ink);
      }
      .gift-tap {
        display: flex;
        align-items: center;
        gap: 9px;
        margin-top: 4px;
        font-family: var(--sans);
        font-size: 0.64rem;
        letter-spacing: 0.2em;
        text-transform: uppercase;
        color: var(--label);
      }
      .gift-tap .gem {
        width: 6px;
        height: 6px;
        border: 1px solid var(--gold);
        transform: rotate(45deg);
      }
      .gift-open {
        background: var(--paper);
        border: 1px solid rgba(194, 160, 90, 0.55);
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        padding: 24px;
        gap: 16px;
        transform: rotateY(180deg);
        cursor: pointer;
      }
      .gift-qrlabel {
        font-family: var(--sans);
        font-size: 0.62rem;
        letter-spacing: 0.26em;
        text-transform: uppercase;
        color: var(--label);
      }
      .gift-qr {
        width: 184px;
        height: 184px;
        object-fit: contain;
        background: #fff;
        border-radius: 6px;
        padding: 8px;
      }
      .gift-thanks {
        font-family: var(--serif);
        font-style: italic;
        font-size: 1.2rem;
        color: var(--gold);
        text-align: center;
        line-height: 1.45;
        margin-top: 6px;
      }

      /* ===== FOOTER ===== */
      footer {
        background: var(--cream2);
        text-align: center;
        padding: clamp(56px, 9vw, 90px) 24px;
      }
      footer .names {
        font-family: var(--script);
        font-weight: 700;
        font-size: clamp(2.4rem, 8vw, 3.6rem);
        color: var(--ink);
        line-height: 1.1;
      }
      footer .names span {
        font-family: var(--serif);
        font-style: italic;
        color: var(--gold-l);
      }
      .diamond {
        display: flex;
        align-items: center;
        gap: 14px;
        justify-content: center;
        margin: 22px 0;
      }
      .diamond .line {
        height: 1px;
        width: 40px;
        background: rgba(58, 54, 49, 0.25);
      }
      .diamond .gem {
        width: 6px;
        height: 6px;
        border: 1px solid var(--gold);
        transform: rotate(45deg);
      }
      footer .closing {
        font-family: var(--serif);
        font-style: italic;
        font-size: 1.3rem;
        color: var(--muted);
        margin: 0 0 8px;
      }
      footer .dt {
        font-family: var(--sans);
        font-size: 0.72rem;
        letter-spacing: 0.24em;
        text-transform: uppercase;
        color: var(--faint);
      }
      footer .made {
        font-family: var(--sans);
        font-weight: 300;
        font-size: 0.72rem;
        color: #b3a994;
        margin-top: 30px;
      }

      /* ===== MÀN BÌA MỞ THIỆP ===== */
      .cover[hidden] {
        display: none !important;
      }
      .cover {
        position: fixed;
        inset: 0;
        z-index: 500;
        display: grid;
        place-items: center;
        overflow: hidden;
        text-align: center;
        padding: 40px 24px;
        transition: opacity 0.9s ease, visibility 0.9s ease;
      }
      .cover.closing {
        opacity: 0;
        visibility: hidden;
      }
      .cover-bg {
        position: absolute;
        inset: 0;
        background: url("../img/hero.jpg") center/cover no-repeat;
        object-position: 72% center;
      }
      .cover-overlay {
        position: absolute;
        inset: 0;
        background: linear-gradient(
          180deg,
          rgba(46, 42, 38, 0.62),
          rgba(46, 42, 38, 0.48) 45%,
          rgba(46, 42, 38, 0.72)
        );
      }
      .cover-inner {
        position: relative;
        z-index: 2;
        color: var(--paper);
        max-width: 600px;
        animation: rise 1.1s 0.15s both;
      }
      @keyframes rise {
        from {
          opacity: 0;
          transform: translateY(26px);
        }
        to {
          opacity: 1;
          transform: none;
        }
      }
      .cover-eyebrow {
        font-family: var(--sans);
        font-size: 0.72rem;
        letter-spacing: 0.4em;
        text-transform: uppercase;
        color: var(--gold-l);
        margin-bottom: 22px;
      }
      .cover-names {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 14px;
        flex-wrap: wrap;
      }
      .cover-name {
        font-family: var(--script);
        font-weight: 700;
        font-size: clamp(2.6rem, 11vw, 4.4rem);
        line-height: 1;
        text-shadow: 0 2px 26px rgba(0, 0, 0, 0.4);
      }
      .cover-amp {
        font-family: var(--serif);
        font-style: italic;
        font-size: clamp(1.6rem, 6vw, 2.4rem);
        color: var(--gold-l);
      }
      .cover-date {
        font-family: var(--sans);
        font-size: 0.72rem;
        letter-spacing: 0.4em;
        text-transform: uppercase;
        margin-bottom: 26px;
        color: var(--gold-l);
      }
      .cover-divider {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 14px;
        margin: 30px 0;
      }
      .cover-divider span {
        height: 1px;
        width: 44px;
        background: rgba(233, 216, 176, 0.6);
      }
      .cover-divider .gem {
        width: 7px;
        height: 7px;
        border: 1px solid var(--gold-l);
        background: transparent;
        transform: rotate(45deg);
      }
      .cover-invite {
        font-family: var(--serif);
        font-style: italic;
        font-size: 1.1rem;
        color: var(--paper);
        margin-bottom: 8px;
      }
      .cover-guest {
        font-family: var(--script);
        font-weight: 700;
        font-size: clamp(1.9rem, 8vw, 3rem);
        line-height: 1.15;
        color: var(--gold-l);
        text-shadow: 0 2px 20px rgba(0, 0, 0, 0.45);
      }
      .cover-sub {
        font-family: var(--serif);
        font-style: italic;
        font-size: 1.1rem;
        color: var(--paper);
        margin-top: 10px;
      }
      .cover-btn {
        margin-top: 34px;
        padding: 14px 38px;
        background: var(--gold);
        color: var(--paper);
        border: none;
        border-radius: 999px;
        font-family: var(--sans);
        font-weight: 600;
        font-size: 0.78rem;
        letter-spacing: 0.18em;
        text-transform: uppercase;
        cursor: pointer;
        box-shadow: 0 16px 36px -14px rgba(0, 0, 0, 0.5);
        transition: background 0.3s, transform 0.2s;
      }
      .cover-btn:hover {
        background: var(--gold-l);
        color: var(--ink);
        transform: translateY(-2px);
      }
      /* khoá cuộn nền khi màn bìa đang mở */
      body.cover-open {
        overflow: hidden;
      }
