koopa-admin-log/configs/bank-landing/shop-pay.css
Hernâni Marques 96c37cae3c
landings: QR center logo as PNG for Android (full Taler wordmark)
Android WebView often failed the official Penpot SVG: root fill=none
and wordmark paths only inherited black from a parent <g>, so the blue
T showed without the "taler" letters. Serve taler-assets qr-logo.png,
keep fixed SVG as fallback, explicit logo size/alt.
2026-07-10 22:12:00 +02:00

329 lines
6.9 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* GOA shop pay popup — QR_Taler style from taler-merchant-webui / @gnu-taler/web-util */
/* Animated blue ring (same as webui QR.tsx) */
@property --angle {
syntax: "<angle>";
initial-value: 0deg;
inherits: false;
}
@keyframes goa-pay-qr-rotate {
to {
--angle: 360deg;
}
}
.shop-item[data-product] {
cursor: pointer;
transition: border-color 0.15s, transform 0.12s, background 0.15s;
}
.shop-item[data-product]:hover,
.shop-item[data-product]:focus-visible {
border-color: rgba(196, 181, 253, 0.75);
background: rgba(0, 0, 0, 0.4);
transform: translateY(-1px);
outline: none;
}
button.shop-item {
font: inherit;
color: inherit;
width: 100%;
appearance: none;
-webkit-appearance: none;
}
.goa-pay-modal {
position: fixed;
inset: 0;
z-index: 80;
display: none;
align-items: center;
justify-content: center;
padding: 1rem;
background: rgba(8, 6, 14, 0.75);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
.goa-pay-modal.open {
display: flex;
}
.goa-pay-card {
position: relative;
background: rgba(36, 28, 48, 0.98);
border: 1px solid rgba(167, 139, 250, 0.45);
border-radius: 16px;
padding: 1.25rem 1.2rem 1.2rem;
max-width: 24rem;
width: 100%;
text-align: center;
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5);
max-height: 92vh;
overflow-y: auto;
}
.goa-pay-x {
position: absolute;
top: 0.45rem;
right: 0.55rem;
border: 0;
background: transparent;
color: #c4b5fd;
font-size: 1.4rem;
line-height: 1;
cursor: pointer;
padding: 0.2rem 0.45rem;
}
.goa-pay-card h3 {
margin: 0 0 0.2rem;
font-size: 1.08rem;
color: #faf5ff;
padding-right: 1.5rem;
}
.goa-pay-amount {
margin: 0 0 0.85rem;
font-weight: 750;
color: #c4b5fd;
font-variant-numeric: tabular-nums;
}
/* === QR_Taler frame (webui QR.tsx) === */
.goa-pay-taler-qr {
width: 100%;
max-width: 280px;
margin: 0 auto 0.75rem;
padding: 10px;
border-radius: 20px;
box-sizing: border-box;
position: relative;
background: conic-gradient(
from var(--angle),
#0042b3 0deg,
#f1f1f4 20deg,
#f1f1f4 150deg,
#f1f1f4 160deg,
#0042b3 180deg,
#f1f1f4 200deg,
#f1f1f4 330deg,
#f1f1f4 340deg,
#0042b3
);
animation: goa-pay-qr-rotate 10s linear infinite;
}
.goa-pay-taler-qr__inner {
padding: 10px;
border-radius: 20px;
background: #fff;
line-height: 0;
min-height: 180px;
box-sizing: border-box;
}
/* Always an <img data-url> with explicit pixel size from JS */
.goa-pay-taler-qr__inner img {
display: block !important;
margin: 0 auto !important;
border: 0 !important;
background: #fff;
image-rendering: pixelated;
}
/* Center logo plate — official qr-logo.png (webui ~100×50; PNG for Android) */
.goa-pay-taler-qr__logo {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 28%;
height: auto;
max-width: 100px;
aspect-ratio: 200 / 95;
object-fit: contain;
pointer-events: none;
background: #fff;
border-radius: 4px;
}
/* Settlement: collapsed by default, expand on click */
.goa-pay-settle {
margin-top: 0.85rem;
border: 1px solid rgba(148, 163, 184, 0.35);
border-radius: 12px;
overflow: hidden;
background: rgba(0, 0, 0, 0.22);
}
.goa-pay-settle-toggle {
display: flex;
align-items: center;
justify-content: space-between;
gap: 0.5rem;
width: 100%;
margin: 0;
padding: 0.65rem 0.75rem;
border: 0;
background: transparent;
color: #cbd5e1;
font: inherit;
font-size: 0.78rem;
font-weight: 650;
text-align: left;
cursor: pointer;
line-height: 1.3;
}
.goa-pay-settle-toggle:hover {
background: rgba(148, 163, 184, 0.1);
color: #e2e8f0;
}
.goa-pay-settle-toggle-text {
flex: 1;
}
.goa-pay-settle-chevron {
flex-shrink: 0;
transition: transform 0.15s ease;
color: #94a3b8;
font-size: 0.85rem;
}
.goa-pay-modal.settle-open .goa-pay-settle-chevron {
transform: rotate(90deg);
}
.goa-pay-settle-body {
padding: 0 0.75rem 0.75rem;
border-top: 1px solid rgba(148, 163, 184, 0.25);
}
.goa-pay-settle-note {
margin-top: 0.55rem;
}
/* Settlement payto QR — plain box (not wallet pay / no logo / no blue ring) */
.goa-pay-payto-qr {
width: fit-content;
max-width: 160px;
margin: 0.35rem auto 0.55rem;
padding: 0.45rem 0.5rem 0.5rem;
border-radius: 10px;
background: #fff;
border: 1px dashed rgba(100, 116, 139, 0.75);
box-sizing: border-box;
}
.goa-pay-payto-qr__caption {
font-size: 0.62rem;
font-weight: 750;
letter-spacing: 0.04em;
text-transform: uppercase;
color: #64748b;
text-align: center;
margin: 0 0 0.35rem;
line-height: 1.2;
}
.goa-pay-payto-qr__inner {
line-height: 0;
min-height: 0;
}
.goa-pay-payto-qr__inner img {
display: block !important;
margin: 0 auto !important;
background: #fff;
image-rendering: pixelated;
}
.goa-pay-sub {
margin: 0 0 0.55rem;
font-size: 0.75rem;
line-height: 1.35;
color: #b8a8c9;
font-weight: 500;
text-align: center;
}
.goa-pay-hint {
margin: 0 0 0.75rem;
font-size: 0.82rem;
color: #b8a8c9;
}
.goa-pay-hint.err {
color: #fca5a5;
}
.goa-pay-cta {
display: block;
text-decoration: none;
font-weight: 750;
padding: 0.65rem 1rem;
border-radius: 11px;
background: linear-gradient(135deg, #a78bfa, #6366f1);
color: #0f0a1a;
margin-bottom: 0.75rem;
}
.goa-pay-cta:hover {
filter: brightness(1.06);
}
.goa-pay-cta.disabled {
opacity: 0.45;
pointer-events: none;
}
.goa-pay-label {
margin: 0.55rem 0 0.2rem;
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
color: #b8a8c9;
}
.goa-pay-line {
margin: 0 0 0.35rem;
text-align: center;
font-size: 0.88rem;
font-weight: 650;
}
.goa-pay-link {
color: #93c5fd;
text-decoration: none;
white-space: nowrap;
}
.goa-pay-link:hover {
text-decoration: underline;
}
.goa-pay-link.disabled {
opacity: 0.45;
pointer-events: none;
}
.goa-pay-sep {
margin: 0 0.4rem;
color: #b8a8c9;
font-weight: 500;
}
.goa-pay-close {
display: block;
width: 100%;
margin-top: 0.85rem;
border: 1px solid rgba(167, 139, 250, 0.45);
background: transparent;
color: #c4b5fd;
font-weight: 650;
padding: 0.5rem;
border-radius: 10px;
cursor: pointer;
}
/* Bank (gold/teal) overrides */
.goa-pay-modal.bank-theme .goa-pay-card {
background: rgba(42, 32, 24, 0.98);
border-color: rgba(232, 168, 56, 0.4);
}
.goa-pay-modal.bank-theme .goa-pay-amount {
color: #5eead4;
}
.goa-pay-modal.bank-theme .goa-pay-cta {
background: linear-gradient(135deg, #5eead4, #0d9488);
color: #042f2e;
}
.goa-pay-modal.bank-theme .goa-pay-link {
color: #5eead4;
}
.goa-pay-modal.bank-theme .goa-pay-x,
.goa-pay-modal.bank-theme .goa-pay-close {
color: #e8c878;
border-color: rgba(232, 168, 56, 0.35);
}
.goa-pay-modal.bank-theme .goa-pay-settle {
border-color: rgba(232, 168, 56, 0.3);
background: rgba(0, 0, 0, 0.28);
}
.goa-pay-modal.bank-theme .goa-pay-settle-toggle {
color: #e8c878;
}
.goa-pay-modal.bank-theme .goa-pay-settle-body {
border-top-color: rgba(232, 168, 56, 0.25);
}