:root { /* Light mode colors */ --bg-gradient-start: #f8f9fa; --bg-gradient-end: #e9ecef; --text-color: #212529; --text-color-heading: #495057; --container-bg: rgba(255, 255, 255, 0.8); --container-border: rgba(0, 0, 0, 0.1); --copy-btn-bg: rgba(40, 167, 69, 0.85); --copy-btn-hover: rgba(40, 167, 69, 1); --open-btn-bg: rgba(108, 117, 125, 0.85); --open-btn-hover: rgba(108, 117, 125, 1); } /* Dark mode colors */ @media (prefers-color-scheme: dark) { :root { --bg-gradient-start: #1f1f22; --bg-gradient-end: #232a33; --text-color: #e0e0e0; --text-color-heading: #e0e6f0; --container-bg: rgba(255, 255, 255, 0.05); --container-border: rgba(255, 255, 255, 0.1); --copy-btn-bg: rgba(34, 139, 34, 0.85); --copy-btn-hover: rgba(34, 139, 34, 1); --open-btn-bg: rgba(102, 51, 153, 0.85); --open-btn-hover: rgba(102, 51, 153, 1); } } /* Manual theme override classes */ html[data-theme="light"] { --bg-gradient-start: #f8f9fa; --bg-gradient-end: #e9ecef; --text-color: #212529; --text-color-heading: #495057; --container-bg: rgba(255, 255, 255, 0.8); --container-border: rgba(0, 0, 0, 0.1); --copy-btn-bg: rgba(40, 167, 69, 0.85); --copy-btn-hover: rgba(40, 167, 69, 1); --open-btn-bg: rgba(108, 117, 125, 0.85); --open-btn-hover: rgba(108, 117, 125, 1); } html[data-theme="dark"] { --bg-gradient-start: #1f1f22; --bg-gradient-end: #232a33; --text-color: #e0e0e0; --text-color-heading: #e0e6f0; --container-bg: rgba(255, 255, 255, 0.05); --container-border: rgba(255, 255, 255, 0.1); --copy-btn-bg: rgba(34, 139, 34, 0.85); --copy-btn-hover: rgba(34, 139, 34, 1); --open-btn-bg: rgba(102, 51, 153, 0.85); --open-btn-hover: rgba(102, 51, 153, 1); } html { margin: 0; padding: 0; min-height: 100%; box-sizing: border-box; font-family: Arial, sans-serif; text-align: center; position: relative; /* Base light background - safe default for everyone */ background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%, #f8fafc 100%); color: var(--text-color); transition: color 0.3s ease; } /* Dark mode overlay - only shows for dark preference or manual dark */ html::before { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; /* Base dark gradient */ background: linear-gradient(135deg, #1a1a1d 0%, #2d3748 50%, #1f2937 100%); opacity: 0; z-index: -2; transition: opacity 0.6s ease; pointer-events: none; } /* Dark vignette overlay - only shows for dark preference or manual dark */ html::after { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; /* Dark charcoal vignette - lighter in center, darker at edges */ background: radial-gradient(ellipse at center, rgba(45, 45, 48, 0.6) 0%, rgba(32, 32, 35, 0.8) 40%, rgba(20, 20, 23, 0.95) 100%); opacity: 0; z-index: -1; transition: opacity 0.6s ease; pointer-events: none; } /* Show dark overlays for system dark preference */ @media (prefers-color-scheme: dark) { html::before, html::after { opacity: 1; } } /* Manual theme overrides */ html[data-theme="dark"]::before, html[data-theme="dark"]::after { opacity: 1; } html[data-theme="light"]::before, html[data-theme="light"]::after { opacity: 0; } body { margin: 0; padding: 0; } h1 { margin-top: 1.5rem; color: var(--text-color-heading); letter-spacing: 1px; } .theme-toggle { position: fixed; top: 20px; right: 20px; background: var(--container-bg); border: 1px solid var(--container-border); border-radius: 8px; padding: 8px 12px; cursor: pointer; font-size: 0.9rem; color: var(--text-color); transition: all 0.3s ease; z-index: 100; backdrop-filter: blur(10px); } .theme-toggle:hover { background: var(--copy-btn-bg); color: white; } /* Mobile theme toggle adjustments */ @media (max-width: 480px) { .theme-toggle { top: 12px; right: 12px; padding: 12px 16px; font-size: 0.8rem; border-radius: 6px; min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; } } #gallery { display: grid; grid-template-columns: repeat(auto-fit, 200px); gap: 4px; justify-content: center; margin: auto; padding: 40px; } /* Tablet responsiveness */ @media (max-width: 768px) { #gallery { padding: 12px; gap: 3px; grid-template-columns: repeat(auto-fit, 200px); } .image-container { width: 200px; } } /* Mobile responsiveness */ @media (max-width: 480px) { #gallery { padding: 12px; gap: 2px; grid-template-columns: repeat(auto-fit, 200px); } .image-container { width: 200px; } h1 { font-size: 1.5rem; margin-top: 1rem; } } .image-container { width: 200px; aspect-ratio: 1 / 1; background: transparent; border-radius: 12px; transition: transform 0.15s; position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; } .image-container:hover { transform: scale(1.04); } .copy-btn { position: absolute; top: 8px; left: 8px; background: var(--copy-btn-bg); color: #fff; border: none; border-radius: 4px; padding: 4px 8px; font-size: 0.9rem; opacity: 0; cursor: pointer; transition: opacity 0.2s, background 0.2s; z-index: 2; } .copy-btn:hover { background: var(--copy-btn-hover); } .open-btn { position: absolute; top: 8px; right: 8px; background: var(--open-btn-bg); color: #fff; border: none; border-radius: 4px; padding: 4px 8px; font-size: 0.9rem; opacity: 0; cursor: pointer; transition: opacity 0.2s, background 0.2s; z-index: 2; } .open-btn:hover { background: var(--open-btn-hover); } /* Mobile button adjustments */ @media (max-width: 480px) { .copy-btn, .open-btn { padding: 8px 12px; font-size: 0.75rem; top: 6px; border-radius: 8px; } .copy-btn { left: 6px; } .open-btn { right: 6px; } /* Show buttons more prominently on mobile since hover doesn't work well */ .image-container .copy-btn, .image-container .open-btn { opacity: 0.9; } .image-container:hover .copy-btn, .image-container:hover .open-btn { opacity: 1; } /* Disable hover scale effect on touch devices */ .image-container:hover { transform: none; } } /* Desktop hover behavior - only applies when not on mobile */ @media (min-width: 481px) { .image-container:hover .copy-btn, .image-container:hover .open-btn { opacity: 1; } } .image-container img { max-width: 90%; max-height: 90%; width: auto; height: auto; object-fit: contain; border-radius: 8px; display: block; margin: auto; background: transparent; }