Files
GNX-WEB/gnx-react/public/styles/utilities/_content-protection.scss
Iliyan Angelov 76c857b4f5 update
2025-10-10 21:54:39 +03:00

124 lines
2.6 KiB
SCSS

// ============================================================================
// Content Protection Styles
// ============================================================================
// Prevents content copying, text selection, and image downloading
// Disable text selection globally
.content-protected {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
// Prevent tap highlight on mobile
-webkit-tap-highlight-color: transparent;
// Disable image dragging
img {
-webkit-user-drag: none;
-khtml-user-drag: none;
-moz-user-drag: none;
-o-user-drag: none;
user-drag: none;
pointer-events: none;
}
// Protect all text content
* {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
}
// Allow selection for input fields and textareas
.content-protected input,
.content-protected textarea,
.content-protected [contenteditable="true"] {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
// Image protection with overlay
.protected-image-wrapper {
position: relative;
display: inline-block;
img {
display: block;
-webkit-user-drag: none;
-khtml-user-drag: none;
-moz-user-drag: none;
-o-user-drag: none;
user-drag: none;
pointer-events: none;
}
// Transparent overlay to prevent right-click on images
&::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: transparent;
pointer-events: auto;
z-index: 1;
}
}
// Watermark overlay (optional - can be enabled per image)
.watermarked-image {
position: relative;
&::before {
content: 'GNX Soft';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) rotate(-45deg);
font-size: 3rem;
font-weight: bold;
color: rgba(255, 255, 255, 0.15);
pointer-events: none;
z-index: 2;
white-space: nowrap;
}
}
// Hide on print (prevent print screen)
@media print {
.no-print {
display: none !important;
}
body::after {
content: 'This content is protected and cannot be printed. Visit gnxsoft.com';
display: block;
text-align: center;
padding: 50px;
font-size: 20px;
}
}
// Additional protection for code blocks
.content-protected pre,
.content-protected code {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
// Blur content when dev tools are open (optional)
.devtools-open {
filter: blur(5px);
pointer-events: none;
}