/* Layout wrapper */ .page { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 1rem; box-sizing: border-box; } .checkoutCard { border-radius: 12px; border: 1px solid #e5e7eb; box-shadow: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1); overflow: hidden; display: flex; flex-direction: column; max-width: 64rem; /* desktop width */ width: 100%; background: #fff; } /* Sections */ .cartSection, .checkoutSection { flex: 1; } .cartSection { padding: 2rem; background: #ffffff; border-bottom: 1px solid #f3f4f6; } .checkoutSection { padding: 2rem 3rem; display: flex; flex-direction: column; justify-content: space-between; } /* Header invoice */ .invHeader { display: flex; justify-content: space-between; align-items: flex-start; border-bottom: 1px solid #e5e7eb; padding-bottom: 1rem; margin-bottom: 1rem; } .brand { margin-top: 0; font-size: 1.25rem; font-weight: 800; color: #2563eb; } .brandLight { font-weight: 500; } .greeting { text-align: left; margin-top: .5rem; font-size: .875rem; color: #374151; } .orderInfo { text-align: right; font-size: .875rem; color: #6b7280; } .invoiceLabel { font-size: 1rem; color: #4b5563; } .orderMeta { margin-top: .125rem; } /* Table */ .table { text-align: left; width: 100%; border-collapse: collapse; margin-top: .5rem; margin-bottom: 1rem; font-size: .9rem; } .table th, .table td { padding: .75rem 0; } .table th { border-bottom: 1px solid #d1d5db; color: #374151; font-weight: 600; } .table td { color: #1f2937; border-bottom: 1px solid #f3f4f6; } .textRight { text-align: right; } .actionsCol { width: 2rem; } /* Remove button (small) */ .removeBtn { font-weight: 700; font-size: 1.25rem; line-height: 1; color: #ef4444; background: none; border: none; cursor: pointer; } .removeBtn:hover { color: #b91c1c; } /* Summary */ .summary { margin-top: 1rem; text-align: left; } .summaryRow, .summaryTotal { display: flex; justify-content: space-between; font-size: .9rem; color: #374151; margin-top: .25rem; } .summaryTotal { font-weight: 700; font-size: 1.125rem; margin-top: .5rem; } /* Right side */ .checkoutTitle { font-size: 1.25rem; font-weight: 700; color: #111827; margin-bottom: 1rem; } .paymentInfo { margin-bottom: 1rem; } .paymentHeading { font-size: .75rem; font-weight: 700; color: #374151; letter-spacing: .04em; margin-bottom: .5rem; } .radioLabel { display: block; margin-bottom: .4rem; font-size: .95rem; color: #374151; } .inputGroup { margin-bottom: 1rem; } .inputNote { width: 100%; padding: .75rem 1rem; border: 1px solid #d1d5db; border-radius: .5rem; font-size: 1rem; box-sizing: border-box; } .inputNote:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,.4); } .paymentBtn { width: 100%; background: #8b5cf6; color: #fff; font-weight: 700; padding: .75rem 0; border-radius: .5rem; font-size: 1.05rem; border: none; cursor: pointer; box-shadow: 0 4px 6px rgba(139,92,246,.45); transition: background-color .2s ease; } .paymentBtn:hover { background: #7c3aed; } /* Footer */ .footerText { font-size: .75rem; color: #6b7280; text-align: center; margin-top: 2rem; } .footerHighlight { font-weight: 700; color: #374151; } /* QR view */ .qrTitle { font-size: .95rem; color: #374151; } .qrBox { margin-top: 2rem; text-align: center; position: relative; display: inline-block; } /* Checkmark animation (as-is from your logic) */ .CheckmarkOverlay { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(255,255,255,.5); width: 130px; height: 130px; display: flex; align-items: center; justify-content: center; border-radius: 50%; pointer-events: none; z-index: 10; } .Checkmark { width: 100px; height: 100px; display: block; } .CheckmarkCircle { fill: none; stroke: #4BB543; stroke-width: 4; stroke-dasharray: 157; stroke-dashoffset: 157; transform: rotate(-90deg); transform-origin: center; animation: CircleFill 1s ease forwards; } .CheckmarkCheck { fill: none; stroke: #4BB543; stroke-width: 4; stroke-dasharray: 48; stroke-dashoffset: 48; animation: DrawCheck .5s ease forwards; animation-delay: 1s; } @keyframes CircleFill { to { stroke-dashoffset: 0; } } @keyframes DrawCheck { to { stroke-dashoffset: 0; } } /* Responsive */ @media (min-width: 768px) { .checkoutCard { flex-direction: row; } .cartSection { border-right: 1px solid #f3f4f6; border-bottom: none; } } @media (max-width: 767px) { .checkoutCard { flex-direction: column; } } .selectPayment { width: 100%; padding: 10px; font-size: 16px; border-radius: 6px; border: 1px solid #ccc; margin-top: 8px; margin-bottom: 16px; } .selectPaymentModern { width: 100%; padding: 0.65rem 1rem; font-size: 1rem; border-radius: 0.5rem; border: 1px solid #d1d5db; background-color: #f9fafb; appearance: none; background-image: url("data:image/svg+xml;utf8,"); background-repeat: no-repeat; background-position: right 1rem center; background-size: 1rem; cursor: pointer; } .selectPaymentModern:focus { outline: none; border-color: #3b82f6; background-color: #fff; } .transferBox { margin-top: 2rem; padding: 1.5rem; border: 1px solid #e5e7eb; border-radius: 0.5rem; background: #f9fafb; text-align: left; } .transferBox span { text-align: right; } .transferTitle { font-size: 1.125rem; font-weight: 700; margin-bottom: 1rem; color: #111827; } .transferRow { display: flex; justify-content: space-between; padding: 0.5rem 0; border-bottom: 1px dashed #d1d5db; font-size: 0.95rem; color: #374151; } .transferRow:last-child { border-bottom: none; } .accordion { border: 1px solid #ccc; border-radius: 4px; margin-bottom: 1rem; overflow: hidden; } .accordionHeader { background-color: #f5f5f5; padding: 12px 16px; cursor: pointer; font-weight: bold; transition: background 0.2s ease; } .accordionHeader:hover { background-color: #e0e0e0; } .accordionBody { padding: 16px; background-color: #fff; border-top: 1px solid #ddd; }