*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

.center-block { text-align: center; }

    :root {
      --blush: #fce8ee;
      --blush-mid: #f7c5d5;
      --magenta: #b5006e;
      --magenta-light: #d4007a;
      --magenta-dark: #7a004b;
      --charcoal: #1a1a2e;
      --yellow: #ffd600;
      --white: #fff;
    }

    body {
      font-family: 'Nunito', sans-serif;
      background-color: var(--blush);
      color: var(--charcoal);
      min-height: 100vh;
      overflow-x: hidden;
    }

    /* ── NOISE TEXTURE ── */
    body::before {
      content: '';
      position: fixed;
      inset: 0;
      background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
      pointer-events: none;
      z-index: 0;
    }

    /* ── HERO ── */
    .hero {
      position: relative;
      text-align: center;
      background: var(--blush);
    }

    .flyer-img {
      width: 100%;
      max-width: 600px;
      display: block;
      margin: 0 auto;
    }

    /* ── FORM SECTION ── */
    .form-section {
      position: relative;
      z-index: 1;
      max-width: 560px;
      margin: 0 auto;
      padding: 50px 20px 80px;
    }

    .form-heading {
      text-align: center;
      margin-bottom: 36px;
    }

    .form-heading h2 {
      font-family: 'Cormorant Garamond', serif;
      font-size: clamp(1.8rem, 5vw, 2.6rem);
      font-weight: 700;
      color: var(--magenta-dark);
      margin-bottom: 8px;
    }

    .form-heading p {
      color: #888;
      font-size: 0.9rem;
      line-height: 1.6;
    }

    /* Price pill */
    .price-pill {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      background: var(--magenta);
      color: var(--white);
      border-radius: 50px;
      padding: 8px 22px;
      margin-bottom: 32px;
      font-size: 1rem;
      font-weight: 700;
    }

    .price-pill .amount {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.6rem;
      font-weight: 700;
    }

    /* Card */
    .card {
      background: var(--white);
      border-radius: 24px;
      padding: 36px;
      box-shadow: 0 8px 40px rgba(180, 0, 110, 0.1);
      border: 1px solid var(--blush-mid);
    }

    .field {
      margin-bottom: 20px;
    }

    label {
      display: block;
      font-size: 0.8rem;
      font-weight: 700;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--magenta-dark);
      margin-bottom: 8px;
    }

    input, select {
      width: 100%;
      padding: 14px 18px;
      border: 1.5px solid var(--blush-mid);
      border-radius: 12px;
      font-family: 'Nunito', sans-serif;
      font-size: 0.95rem;
      color: var(--charcoal);
      background: var(--blush);
      transition: border-color 0.2s, box-shadow 0.2s;
      outline: none;
      -webkit-appearance: none;
    }

    input:focus, select:focus {
      border-color: var(--magenta);
      box-shadow: 0 0 0 3px rgba(181, 0, 110, 0.12);
      background: var(--white);
    }

    input::placeholder { color: #bbb; }

    .row {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 16px;
    }

    /* Total display */
    .total-box {
      background: var(--blush);
      border: 1.5px dashed var(--blush-mid);
      border-radius: 12px;
      padding: 14px 18px;
      margin: 24px 0;
      display: flex;
      justify-content: space-between;
      align-items: center;
    }

    .total-box .label {
      font-size: 0.8rem;
      font-weight: 700;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--magenta-dark);
    }

    .total-box .amount {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.8rem;
      font-weight: 700;
      color: var(--magenta);
    }

    /* Submit button */
    .btn-pay {
      width: 100%;
      padding: 18px;
      background: var(--magenta);
      color: var(--white);
      border: none;
      border-radius: 14px;
      font-family: 'Nunito', sans-serif;
      font-size: 1rem;
      font-weight: 700;
      letter-spacing: 0.06em;
      cursor: pointer;
      transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
      box-shadow: 0 4px 20px rgba(181, 0, 110, 0.3);
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 10px;
    }

    .btn-pay:hover {
      background: var(--magenta-dark);
      transform: translateY(-2px);
      box-shadow: 0 8px 28px rgba(181, 0, 110, 0.35);
    }

    .btn-pay:active { transform: translateY(0); }

    .btn-pay:disabled {
      opacity: 0.6;
      cursor: not-allowed;
      transform: none;
    }

    .lock-icon { font-size: 1.1rem; }

    /* Trust line */
    .trust {
      text-align: center;
      margin-top: 16px;
      font-size: 0.78rem;
      color: #aaa;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 6px;
    }

    /* Error */
    .error-msg {
      background: #fde8ee;
      border: 1px solid #f4a0b8;
      border-radius: 10px;
      padding: 12px 16px;
      font-size: 0.85rem;
      color: var(--magenta-dark);
      margin-top: 14px;
      display: none;
    }

    /* ── FOOTER ── */
    footer {
      text-align: center;
      padding: 30px 20px;
      font-size: 0.8rem;
      color: #bbb;
    }

    footer a { color: var(--magenta); text-decoration: none; }

    /* Spinner */
    .spinner {
      width: 18px; height: 18px;
      border: 2.5px solid rgba(255,255,255,0.4);
      border-top-color: #fff;
      border-radius: 50%;
      animation: spin 0.7s linear infinite;
      display: none;
    }

    @keyframes spin { to { transform: rotate(360deg); } }

    /* ── ANIMATIONS ── */
    .fade-up {
      opacity: 0;
      transform: translateY(24px);
      animation: fadeUp 0.7s ease forwards;
    }

    @keyframes fadeUp {
      to { opacity: 1; transform: translateY(0); }
    }

    .delay-1 { animation-delay: 0.1s; }
    .delay-2 { animation-delay: 0.25s; }
    .delay-3 { animation-delay: 0.4s; }
    .delay-4 { animation-delay: 0.55s; }
    .delay-5 { animation-delay: 0.7s; }
    .delay-6 { animation-delay: 0.85s; }

    @media (max-width: 480px) {
      .row { grid-template-columns: 1fr; }
      .card { padding: 24px 20px; }
      .details-bar { border-radius: 16px; padding: 14px 20px; }
    }
