.zp-payment,
.zp-payment * { box-sizing: border-box; }
.zp-payment {
    --zp-accent: #2563eb;
    --zp-on-accent: #fff;
    --zp-text: #17243b;
    --zp-muted: #58667b;
    --zp-border: #dce3ed;
    --zp-surface: #fff;
    --zp-soft: #f5f7fb;
    width: 100%; max-width: 520px; margin: 0 auto; padding: 32px;
    border: 1px solid var(--zp-border); border-radius: 24px;
    background: var(--zp-surface); color: var(--zp-text);
    font-family: var(--zp-font-family, inherit); font-size: 15px; line-height: 1.8;
    text-align: right; color-scheme: light;
}
.zp-payment button, .zp-payment input { font: inherit; }
.zp-payment button { cursor: pointer; }
.zp-payment button:disabled { cursor: not-allowed; opacity: .6; }
.zp-payment button, .zp-payment label, .zp-payment input { -webkit-tap-highlight-color: transparent; }
.zp-payment :focus-visible { outline: 3px solid var(--zp-accent); outline-offset: 4px; }
.zp-payment h1, .zp-payment h2, .zp-payment h3, .zp-payment p { margin: 0; padding: 0; color: inherit; font-family: inherit; }
.zp-payment .zp-section-heading { display: flex; align-items: center; gap: 10px; margin-bottom: 18px; }
.zp-payment .zp-section-heading h1, .zp-payment .zp-section-heading h2 { font-size: 18px; font-weight: 700; line-height: 1.6; }
.zp-step { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; flex-shrink: 0; border-radius: 10px; background: var(--zp-soft); color: var(--zp-muted); font-size: 14px; font-weight: 700; }
.zp-bank-card { position: relative; padding: 24px; border: 1px solid var(--zp-border); border-radius: 18px; background: var(--zp-soft); overflow: hidden; }
.zp-bank-top, .zp-bank-bottom { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.zp-bank-top { margin-bottom: 24px; font-size: 14px; font-weight: 700; }
.zp-bank-top svg { opacity: .7; flex-shrink: 0; }
.zp-card-label { display: block; font-size: 12px; opacity: .8; margin-bottom: 6px; }
.zp-card-digits { font-family: ui-monospace, Consolas, monospace; font-size: clamp(18px, 4.9vw, 28px); font-weight: 600; letter-spacing: .06em; white-space: nowrap; text-align: left; line-height: 1.8; font-variant-numeric: tabular-nums; }
.zp-bank-bottom { margin-top: 18px; flex-wrap: wrap; font-size: 13px; }
.zp-payment .zp-copy { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; padding: 6px 10px; border: 1px solid var(--zp-border); border-radius: 9px; background: var(--zp-surface); color: var(--zp-text); font-size: 12px; transition: background-color .18s ease, border-color .18s ease; }
.zp-payment .zp-copy:hover { border-color: var(--zp-accent); }
.zp-amount { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 18px 2px 0; }
.zp-amount > span { color: var(--zp-muted); font-size: 14px; }
.zp-amount strong { color: var(--zp-text); font-size: 19px; font-weight: 700; }
.zp-amount .woocommerce-Price-currencySymbol { font-size: 13px; margin-inline-start: 4px; font-weight: 400; }
.zp-payment .zp-live-copy { min-height: 28px; color: var(--zp-muted); font-size: 12px; }
.zp-receipt-area { margin-top: 22px; padding-top: 24px; border-top: 1px solid var(--zp-border); }
.zp-upload-field { position: relative; border: 1.5px dashed #a4b4c9; border-radius: 14px; background: var(--zp-soft); transition: border-color .18s ease, background-color .18s ease; }
.zp-upload-field:hover, .zp-upload-field:focus-within { border-color: var(--zp-accent); }
.zp-upload-label { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-height: 156px; padding: 20px 12px; cursor: pointer; }
.zp-upload-label svg { color: var(--zp-accent); margin-bottom: 4px; }
.zp-upload-label strong { font-size: 15px; font-weight: 600; }
.zp-upload-label span { font-size: 12px; color: var(--zp-muted); }
.zp-upload-field input[type=file] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.zp-upload-field:has(input:disabled) { opacity: .65; }
.zp-upload-field:focus-within { outline: 3px solid var(--zp-accent); outline-offset: 3px; }
.zp-payment .zp-file-hint { margin: 10px 0 16px; color: var(--zp-muted); font-size: 12px; text-align: center; }
.zp-file-preview { display: flex; gap: 14px; align-items: center; padding: 12px; margin-bottom: 16px; border: 1px solid var(--zp-border); border-radius: 12px; background: var(--zp-soft); }
.zp-file-preview[hidden], .zp-form-error[hidden] { display: none; }
.zp-file-preview img { width: 64px; height: 76px; object-fit: contain; background: #fff; border-radius: 7px; }
.zp-file-preview > div { min-width: 0; flex: 1; }
.zp-file-name { display: block; overflow-wrap: anywhere; font-size: 12px; }
.zp-payment .zp-remove-file { padding: 8px 0; min-height: 44px; background: none; color: #b42335; border: 0; font-size: 12px; text-decoration: underline; }
.zp-payment .zp-form-error { margin-bottom: 14px; padding: 10px 12px; color: #a1182d; background: #fff0f2; border: 1px solid #f4c6d0; border-radius: 9px; font-size: 13px; }
.zp-payment .zp-submit { display: flex; justify-content: center; align-items: center; gap: 12px; width: 100%; min-height: 52px; padding: 12px 18px; border: 0; border-radius: 12px; background: var(--zp-accent); color: var(--zp-on-accent); font-size: 15px; font-weight: 700; transition: filter .18s ease; }
.zp-payment .zp-submit:hover:not(:disabled) { filter: brightness(.92); }
.zp-payment .zp-submit-status { margin-top: 8px; font-size: 12px; text-align: center; color: var(--zp-muted); }
.zp-feedback { padding: 26px 18px; border: 1px solid var(--zp-border); border-radius: 14px; background: var(--zp-soft); text-align: center; }
.zp-feedback svg { color: #9a6700; margin-bottom: 12px; }
.zp-payment .zp-feedback h3 { font-size: 17px; font-weight: 700; margin-bottom: 6px; }
.zp-payment .zp-feedback p { font-size: 14px; color: var(--zp-muted); }
.zp-feedback-icon { display: flex; width: 44px; height: 44px; margin: 0 auto 12px; align-items: center; justify-content: center; border-radius: 50%; background: #dcfce7; color: #166534; font-size: 24px; }
.zp-rejected-message { padding: 14px; margin-bottom: 18px; background: #fff0f2; border: 1px solid #f4c6d0; border-radius: 12px; color: #9b1c31; font-size: 13px; }
.zp-rejected-message strong { display: block; margin-bottom: 6px; }
.zp-rejected-message p { overflow-wrap: anywhere; }
.zp-rejected-message span { display: block; margin-top: 6px; }
.zp-payment .zp-preview-notice { padding: 8px 12px; margin-bottom: 12px; background: var(--zp-soft); border-radius: 8px; font-size: 12px; color: var(--zp-muted); }
/* Shared payment design. Theme keys remain stable for existing stores. */
.zp-payment { border-radius: 28px; padding: 32px; box-shadow: 0 20px 70px -42px #152e5566; --zp-muted: #526078; }
.zp-payment .zp-section-heading { gap: 12px; margin-bottom: 20px; }
.zp-step { border-radius: 50%; background: var(--zp-text); color: var(--zp-surface); width: 28px; height: 28px; font-size: 12px; }
.zp-bank-card { padding: 26px; border-radius: 20px; isolation: isolate; }
.zp-bank-card::before, .zp-bank-card::after { pointer-events: none; z-index: -1; }
.zp-card-digits { font-size: clamp(18px, 4.8vw, 27px); letter-spacing: .035em; }
.zp-amount { padding: 18px 16px; margin-top: 18px; border: 1px solid var(--zp-border); border-radius: 14px; background: var(--zp-soft); }
.zp-payment .zp-live-copy { min-height: 22px; }
.zp-receipt-area { margin-top: 12px; padding-top: 24px; }
.zp-upload-label { min-height: 148px; }
.zp-upload-label svg { padding: 8px; width: 48px; height: 48px; border: 1px solid var(--zp-border); border-radius: 14px; background: var(--zp-surface); }
.zp-payment .zp-submit { border-radius: 14px; min-height: 54px; }
.zp-style-bank .zp-bank-card { background: #182b45; color: #fff; border: 0; box-shadow: 0 18px 30px -22px #122947; }
.zp-style-bank .zp-bank-card::before { content: ''; position: absolute; inset: 0; background: repeating-linear-gradient(135deg, transparent 0 28px, #ffffff07 28px 29px); }
.zp-style-bank .zp-bank-card::after { content: ''; position: absolute; width: 210px; height: 210px; border-radius: 50%; border: 35px solid #c4a46e20; left: -95px; top: -85px; }
.zp-style-bank .zp-copy, .zp-style-aurora .zp-copy, .zp-style-ocean .zp-copy, .zp-style-emerald .zp-copy { background: #ffffff15; border-color: #ffffff60; color: #fff; }
.zp-style-bank .zp-copy:focus-visible, .zp-style-aurora .zp-copy:focus-visible, .zp-style-ocean .zp-copy:focus-visible, .zp-style-emerald .zp-copy:focus-visible { outline-color: #fff; }
.zp-style-minimal { border-radius: 12px; box-shadow: none; --zp-soft: #fafbfc; }
.zp-style-minimal .zp-bank-card { border: 0; padding: 6px 0 18px; border-bottom: 2px solid var(--zp-text); border-radius: 0; background: transparent; }
.zp-style-minimal .zp-step { background: transparent; color: var(--zp-text); border: 1px solid var(--zp-border); }
.zp-style-minimal .zp-amount { background: transparent; border: 0; padding-inline: 0; }
.zp-style-minimal .zp-upload-field, .zp-style-minimal .zp-submit { border-radius: 8px; }
.zp-style-dark { --zp-text: #f2f4f8; --zp-muted: #b6c1d2; --zp-border: #394454; --zp-surface: #131923; --zp-soft: #1e2734; color-scheme: dark; border-color: #394454; box-shadow: 0 24px 60px -28px #0009; }
.zp-style-dark .zp-bank-card { background: radial-gradient(ellipse at 0 0, #4c5c70, #202b3b 70%); border-color: #526178; }
.zp-style-dark .zp-bank-card::after { content: ''; position: absolute; width: 100px; height: 100px; border: 1px solid #b7cae940; transform: rotate(45deg); left: -25px; top: -45px; }
.zp-style-dark .zp-upload-label svg, .zp-style-aurora .zp-upload-label svg { color: #b7d4ff; }
.zp-style-dark .zp-remove-file, .zp-style-aurora .zp-remove-file { color: #ffb7c5; }
.zp-style-dark .zp-feedback svg, .zp-style-aurora .zp-feedback svg { color: #ffd98f; }
.zp-style-split { max-width: 960px; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 410px), 1fr)); gap: 0; overflow: hidden; }
.zp-style-split .zp-transfer { padding: 36px; background: #edf3fa; }
.zp-style-split .zp-receipt-area { padding: 36px; margin: 0; border: 0; }
.zp-style-split .zp-bank-card { background: #fff; box-shadow: 0 15px 40px -30px #23426c; }
.zp-style-split .zp-card-digits { font-size: clamp(18px,2.2vw,25px); }
.zp-style-split .zp-amount { padding-inline: 0; background: transparent; border: 0; }
.zp-style-ticket { max-width: 460px; border-radius: 0; border: 1px solid #d7cebc; border-top: 8px solid var(--zp-accent); --zp-surface: #fffdf7; --zp-soft: #f6f1e7; --zp-border: #d8cfbc; box-shadow: 8px 8px 0 #e8e1d4; }
.zp-style-ticket .zp-bank-card { background: transparent; border: 0; padding: 4px 0; }
.zp-style-ticket .zp-receipt-area { border-top: 2px dashed #c9bfa9; }
.zp-style-ticket .zp-amount { border: 0; border-block: 1px dashed #c9bfa9; border-radius: 0; background: transparent; padding-inline: 0; }
.zp-style-ticket .zp-upload-field, .zp-style-ticket .zp-submit { border-radius: 3px; }
.zp-style-aurora { --zp-text: #f3fbfa; --zp-muted: #b6ced0; --zp-border: #34575a; --zp-surface: #102e34; --zp-soft: #1a3c42; color-scheme: dark; background: radial-gradient(ellipse at 0 0, #2c635f, #102e34 65%); }
.zp-style-aurora .zp-bank-card { color: #fff; background: linear-gradient(125deg, #255c5b, #433d70); border-color: #79a5a266; }
.zp-style-aurora .zp-bank-card::after { content: ''; position: absolute; width: 240px; height: 120px; border-radius: 50%; background: #9febb42b; filter: blur(25px); left: -70px; top: -50px; }
.zp-style-emerald { --zp-soft: #edf7f1; --zp-border: #c5dbce; --zp-muted: #486858; border-color: #c5dbce; }
.zp-style-emerald .zp-bank-card { color: #fff; background: #174d3c; border: 0; border-radius: 20px 20px 4px 20px; }
.zp-style-emerald .zp-bank-card::before { content: ''; position: absolute; inset: 0; background: repeating-radial-gradient(ellipse at -20% 0, transparent 0 22px, #ffffff09 23px 24px); }
.zp-style-emerald .zp-amount { border-inline-start: 4px solid #237452; }
.zp-style-copper { --zp-surface: #fcf9f5; --zp-soft: #f5e9df; --zp-border: #d8bda9; --zp-text: #4c3026; --zp-muted: #785744; border-radius: 16px; }
.zp-style-copper .zp-bank-card { background: linear-gradient(115deg,#ebc9af,#f9e8d8); border-color: #bb8765; box-shadow: inset 0 0 0 4px #ffffff50; }
.zp-style-copper .zp-bank-top svg { color: #784728; }
.zp-style-copper .zp-section-heading { border-inline-start: 3px solid #a56b43; padding-inline-start: 12px; }
.zp-style-copper .zp-step { display: none; }
.zp-style-ocean { --zp-soft: #eaf4ff; --zp-border: #bed5ed; border-radius: 32px 8px 32px 8px; }
.zp-style-ocean .zp-bank-card { color: #fff; background: #0e4c8b; border: 0; border-radius: 24px 8px 24px 8px; }
.zp-style-ocean .zp-bank-card::before { content: ''; position: absolute; width: 270px; height: 270px; border-radius: 50%; border: 42px solid #8ae0ef20; left: -140px; bottom: -185px; }
.zp-style-ocean .zp-upload-field { border-radius: 22px 8px 22px 8px; }
.zp-style-rose { --zp-surface: #fffafb; --zp-soft: #faedf0; --zp-border: #e5c9d0; --zp-muted: #795460; --zp-text: #502e3b; border-radius: 30px; }
.zp-style-rose .zp-bank-card { background: #f3dce3; border: 0; border-inline-start: 5px solid #a44d6a; border-radius: 16px; }
.zp-style-rose .zp-step { background: #68364c; color: #fff; }
.zp-style-rose .zp-amount { background: transparent; border: 0; padding-inline: 0; }
.zp-style-graphite { --zp-text: #1a1b1d; --zp-muted: #585b60; --zp-soft: #f0f0ef; --zp-border: #bdbfbe; border: 2px solid #222; border-radius: 0; box-shadow: 7px 7px 0 #d5d6d2; }
.zp-style-graphite .zp-bank-card { border: 2px solid #222; background: #fff; border-radius: 0; }
.zp-style-graphite .zp-section-heading h1, .zp-style-graphite .zp-section-heading h2 { font-size: 21px; }
.zp-style-graphite .zp-step, .zp-style-graphite .zp-submit, .zp-style-graphite .zp-upload-field, .zp-style-graphite .zp-amount { border-radius: 0; }
.zp-style-ivory { --zp-surface: #fffefb; --zp-soft: #f7f3e9; --zp-border: #d9d0b7; --zp-muted: #726346; --zp-text: #453c27; border: 1px solid #ccbb8e; border-radius: 36px 36px 12px 12px; }
.zp-style-ivory .zp-bank-card { border: 1px solid #c3ac73; background: linear-gradient(140deg,#faf2d8,#fffdf8); border-radius: 22px 22px 8px 8px; box-shadow: inset 0 0 0 4px #fff; }
.zp-style-ivory .zp-bank-top { color: #6c5520; }
.zp-style-ivory .zp-section-heading { justify-content: center; }
.zp-style-neo { --zp-surface: #fbffe9; --zp-soft: #f0f6d5; --zp-border: #a6ad83; --zp-text: #273016; --zp-muted: #56613c; border: 2px solid #303b20; border-radius: 18px; box-shadow: 6px 6px 0 #303b20; }
.zp-style-neo .zp-bank-card { background: #d8ed89; border: 2px solid #303b20; border-radius: 12px; box-shadow: 4px 4px 0 #303b20; }
.zp-style-neo .zp-upload-field { border: 2px dashed #75824c; }
.zp-style-neo .zp-submit { border: 2px solid #303b20; box-shadow: 3px 3px 0 #303b20; }
.zp-style-lavender { --zp-surface: #fcfaff; --zp-soft: #f0ebfa; --zp-border: #d8cee9; --zp-muted: #68577f; --zp-text: #3b2a55; border-radius: 30px; }
.zp-style-lavender .zp-bank-card { background: #e8def7; border: 0; border-radius: 24px; }
.zp-style-lavender .zp-bank-card::after { content: ''; position: absolute; width: 120px; height: 120px; border-radius: 36px; border: 1px solid #b8a5d3; transform: rotate(28deg); left: -40px; top: -65px; }
.zp-style-lavender .zp-upload-field { border-radius: 24px; }
.zp-style-lavender .zp-step { background: #655082; color: #fff; }
.zp-style-glass { --zp-surface: #f8fdff; --zp-soft: #e9f3f8; --zp-border: #b6cdd9; --zp-text: #254351; --zp-muted: #506e7d; background: linear-gradient(135deg,#edf9ff,#f9fcff 55%,#e5f3f5); border: 1px solid #a8c7d6; box-shadow: inset 0 0 0 5px #ffffff80,0 24px 60px -38px #32657a88; }
.zp-style-glass .zp-bank-card { background: linear-gradient(120deg,#ffffffdf,#b2d8e26b); border: 1px solid #b6ccd7; box-shadow: inset 0 1px 0 #fff,0 12px 25px -20px #356579; }
.zp-style-glass .zp-bank-card::after { content: ''; position: absolute; width: 100px; height: 220px; background: #ffffff60; transform: rotate(28deg); top: -110px; left: 25px; }
.zp-style-glass .zp-upload-field { background: #ffffff80; }
body.zp-standalone { margin: 0; min-width: 0; background: #f2f5fa; color: #17243b; }
.zp-preview-page .zp-page-main { min-height: 0; padding: 20px 14px; }
.zp-preview-page .zp-payment button:disabled { opacity: 1; cursor: default; }
.zp-preview-page .zp-upload-field:has(input:disabled) { opacity: 1; }
.zp-page-main { box-sizing: border-box; width: 100%; min-height: 100vh; min-height: 100svh; display: flex; align-items: center; justify-content: center; padding: max(32px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(32px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left)); }
@media (max-width: 760px) {
    .zp-style-split { max-width: 520px; grid-template-columns: minmax(0, 1fr); gap: 0; padding: 28px; }
    .zp-style-split .zp-receipt-area { padding: 24px 0 0; margin-top: 22px; border-right: 0; border-top: 1px solid var(--zp-border); }
    .zp-style-split .zp-card-digits { font-size: clamp(18px, 4.9vw, 28px); }
}
@media (max-width: 420px) {
    .zp-page-main { padding: 20px 12px; }
    .zp-payment { padding: 22px 18px; border-radius: 18px; }
    .zp-bank-card { padding: 18px; }
    .zp-card-digits { letter-spacing: .02em; }
    .zp-bank-bottom { gap: 6px; }
    .zp-amount strong { font-size: 17px; }
    .zp-style-ticket, .zp-style-minimal { border-radius: 5px; }
}
@media (prefers-reduced-motion: reduce) {
    .zp-payment *, .zp-payment *::before, .zp-payment *::after { transition: none !important; animation: none !important; }
}

@media (max-width: 760px) {
 .zp-style-split { padding: 0; }
 .zp-style-split .zp-transfer, .zp-style-split .zp-receipt-area { padding: 26px; margin: 0; border: 0; }
 .zp-style-split .zp-card-digits { font-size: clamp(18px,4.8vw,27px); }
}
@media (max-width: 420px) {
 .zp-payment { padding: 22px 16px; }
 .zp-style-split { padding: 0; }
 .zp-style-split .zp-transfer, .zp-style-split .zp-receipt-area { padding: 22px 18px; }
 .zp-bank-card { padding: 18px; }
 .zp-card-digits { font-size: clamp(16px,4.9vw,23px); letter-spacing: .025em; }
 .zp-amount { padding: 14px 12px; }
 .zp-style-ticket, .zp-style-graphite { border-radius: 0; }
}
/* The card can be inside a narrow Elementor column on a wide desktop viewport. */
@supports (font-size: 1cqi) {
 .zp-bank-card { container-type: inline-size; }
 .zp-payment .zp-card-digits { font-size: clamp(13px, 7.8cqi, 27px); }
}

/* Successful receipt submission, before the configured customer redirect. */
.zp-payment.zp-confirmation { display: block; max-width: 500px; text-align: center; padding: 36px 28px 22px; }
.zp-confirmation .zp-confirmation-icon { display: grid; place-items: center; width: 80px; height: 80px; border: 1px solid var(--zp-border); border-radius: 24px; margin: 0 auto 22px; color: var(--zp-text); background: var(--zp-soft); }
.zp-confirmation h1 { font-size: 24px; line-height: 1.7; margin-bottom: 10px; }
.zp-confirmation .zp-confirmation-copy { font-size: 14px; color: var(--zp-muted); }
.zp-confirmation .zp-confirmation-order { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; padding: 14px; margin-block: 24px; border: 1px solid var(--zp-border); border-radius: 12px; background: var(--zp-soft); font-size: 13px; }
.zp-confirmation .zp-confirmation-links { display: grid; gap: 10px; }
.zp-confirmation .zp-confirmation-button { display: flex; align-items: center; justify-content: center; min-height: 48px; width: 100%; padding: 10px 16px; border-radius: 11px; border: 1px solid var(--zp-border); font: inherit; font-size: 14px; line-height: 1.8; text-decoration: none; overflow-wrap: anywhere; }
.zp-confirmation .zp-confirmation-button--primary { color: var(--zp-on-accent); background: var(--zp-accent); border-color: var(--zp-accent); font-weight: 600; }
.zp-confirmation .zp-confirmation-button--secondary { color: var(--zp-text); background: var(--zp-surface); }
.zp-confirmation .zp-confirmation-timer { margin-top: 20px; color: var(--zp-muted); font-size: 13px; }
.zp-confirmation .zp-confirmation-pause { min-height: 44px; border: 0; padding: 8px 12px; margin: 2px auto 0; background: transparent; color: var(--zp-muted); text-decoration: underline; text-underline-offset: 3px; font-size: 12px; }
@media (max-width: 420px) { .zp-payment.zp-confirmation { padding: 28px 18px 18px; } .zp-confirmation h1 { font-size: 21px; } }
