102 lines
No EOL
2.9 KiB
CSS
102 lines
No EOL
2.9 KiB
CSS
.qrcode-box::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: 15px;
|
|
border: 1px solid transparent;
|
|
background: linear-gradient(60deg, #ff7700 0%, #c740c7 100% ) border-box;
|
|
mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask-composite: destination-out;
|
|
mask-composite: exclude;
|
|
}
|
|
.qrcode-box {
|
|
display: block;
|
|
position: relative;
|
|
width: 253px;
|
|
min-height: 241px;
|
|
height: auto;
|
|
margin-top: 10px;
|
|
padding: 10px;
|
|
transition: background-color 0.5s;
|
|
border-radius: 15px;
|
|
}
|
|
.qrcode-box:hover {
|
|
background-color: #80808062;
|
|
transition: background-color 0.3s;
|
|
}
|
|
|
|
/* prevent overlap: hide connect string until revealed; click surface on box */
|
|
.qrcode-box #connectString { display: none; margin-top: 6px; }
|
|
.qrcode-box.revealed #connectString { display: block; }
|
|
.qrcode-box.revealed #connectString {
|
|
-webkit-user-select: text !important;
|
|
-moz-user-select: text !important;
|
|
-ms-user-select: text !important;
|
|
user-select: text !important;
|
|
pointer-events: auto !important;
|
|
position: relative; /* Ensure z-index is respected */
|
|
z-index: 10; /* Bring to the front */
|
|
}
|
|
.qrcode-box { cursor: pointer; }
|
|
.qrcode-box.revealed { cursor: default; }
|
|
|
|
/* QR viewport and veil overlay */
|
|
.qrcode-viewport {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 175px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
overflow: hidden;
|
|
margin-top: 6px;
|
|
}
|
|
.qrcode-viewport #qrcode {
|
|
position: absolute;
|
|
width: 157px;
|
|
height: 157px;
|
|
}
|
|
/* Remove global QR blur after reveal */
|
|
.qrcode-box.revealed #qrcode { filter: none !important; }
|
|
|
|
.qrcode-viewport .qr-veil {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
backdrop-filter: blur(7px);
|
|
-webkit-backdrop-filter: blur(7px);
|
|
background: rgba(0,0,0,0.25);
|
|
color: #c434e0;
|
|
font-size: 12px;
|
|
pointer-events: none; /* allow clicks to pass through if needed */
|
|
}
|
|
.qrcode-box.revealed .qr-veil { display: none; }
|
|
.qrcode-viewport.revealed .qr-veil { display: none; }
|
|
.qrcode-box.revealed .qrcode-viewport { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; pointer-events: none; }
|
|
|
|
/* hide helper text when revealed to avoid overlap */
|
|
.qrcode-box.revealed #click-text { display: none; }
|
|
|
|
.qrcode-box-clicked::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: 15px;
|
|
border: 1px solid transparent;
|
|
background: linear-gradient(60deg, #ff7700 0%, #c740c7 100% ) border-box;
|
|
mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask-composite: destination-out;
|
|
mask-composite: exclude;
|
|
}
|
|
.qrcode-box-clicked {
|
|
display: block;
|
|
position: relative;
|
|
width: 253px;
|
|
height: 241px;
|
|
margin-top: 10px;
|
|
padding: 10px;
|
|
transition: background-color 0.5s;
|
|
border-radius: 15px;
|
|
} |