Files
website-thingy/css/rom-mirror.css
overspend1 a03b00a8da 🚀 Deploy ROM Mirror Portfolio with Glassmorphism
 Features:
- Enhanced glassmorphism design throughout
- Google Drive ROM mirror integration
- Professional icon system (no emojis)
- GitHub Actions secure deployment
- Responsive design for all devices

🔐 Security:
- API keys protected via GitHub Secrets
- No sensitive data in repository
- Automated security scanning

🎯 ROM Mirror:
- Real Google Drive file browser
- Download tracking and analytics
- Beautiful file management interface
- Mobile-optimized experience
2025-07-07 12:20:46 +02:00

783 lines
16 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.
/* ROM Mirror Section Styles - Full Glassmorphism */
.rom-mirror-section {
padding: 100px 0;
background: linear-gradient(135deg, #0a0a0a 0%, #151515 50%, #0a0a0a 100%);
min-height: 100vh;
position: relative;
}
.rom-mirror-section::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background:
radial-gradient(
circle at 25% 25%,
rgba(0, 255, 136, 0.08) 0%,
transparent 50%
),
radial-gradient(
circle at 75% 75%,
rgba(0, 204, 255, 0.08) 0%,
transparent 50%
),
radial-gradient(
circle at 50% 50%,
rgba(255, 255, 255, 0.02) 0%,
transparent 70%
);
pointer-events: none;
z-index: 1;
}
.rom-mirror-section .container {
position: relative;
z-index: 2;
}
.rom-disclaimer {
background: rgba(255, 193, 7, 0.05);
backdrop-filter: blur(25px);
-webkit-backdrop-filter: blur(25px);
border: 1px solid rgba(255, 193, 7, 0.2);
border-radius: 20px;
padding: 2rem;
margin-bottom: 3rem;
text-align: center;
box-shadow:
0 8px 32px rgba(255, 193, 7, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
position: relative;
overflow: hidden;
}
.rom-disclaimer::before {
content: "";
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.1),
transparent
);
animation: shimmer 3s ease-in-out infinite;
}
.rom-disclaimer p {
color: #ffc107;
margin: 0;
font-size: 0.9rem;
line-height: 1.5;
}
/* File Browser Container - Enhanced Glassmorphism */
.file-browser {
background: rgba(255, 255, 255, 0.03);
backdrop-filter: blur(30px);
-webkit-backdrop-filter: blur(30px);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 25px;
overflow: hidden;
box-shadow:
0 20px 50px rgba(0, 0, 0, 0.5),
0 8px 32px rgba(0, 255, 136, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.1),
inset 0 -1px 0 rgba(255, 255, 255, 0.05);
position: relative;
}
.file-browser::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(
135deg,
rgba(255, 255, 255, 0.1) 0%,
transparent 25%,
transparent 75%,
rgba(0, 255, 136, 0.05) 100%
);
pointer-events: none;
z-index: 1;
}
.file-browser > * {
position: relative;
z-index: 2;
}
/* Browser Header - Glass Design */
.browser-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 2rem;
background: rgba(255, 255, 255, 0.02);
backdrop-filter: blur(20px);
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
gap: 1.5rem;
position: relative;
}
.browser-header::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(
90deg,
transparent,
rgba(0, 255, 136, 0.3),
transparent
);
}
.browser-controls {
display: flex;
gap: 1rem;
align-items: center;
}
.view-toggle,
.upload-btn {
background: rgba(255, 255, 255, 0.08);
backdrop-filter: blur(15px);
-webkit-backdrop-filter: blur(15px);
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 15px;
padding: 12px 20px;
color: #fff;
cursor: pointer;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
display: flex;
align-items: center;
gap: 0.8rem;
font-size: 0.9rem;
position: relative;
overflow: hidden;
box-shadow:
0 4px 15px rgba(0, 0, 0, 0.2),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.view-toggle::before,
.upload-btn::before {
content: "";
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.2),
transparent
);
transition: left 0.5s ease;
}
.view-toggle:hover,
.upload-btn:hover {
background: rgba(0, 255, 136, 0.15);
border-color: rgba(0, 255, 136, 0.4);
transform: translateY(-3px);
box-shadow:
0 8px 25px rgba(0, 255, 136, 0.3),
inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.view-toggle:hover::before,
.upload-btn:hover::before {
left: 100%;
}
.browser-search {
flex-grow: 1;
max-width: 300px;
}
.browser-search input {
width: 100%;
background: rgba(255, 255, 255, 0.06);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 30px;
padding: 14px 24px;
color: #fff;
font-size: 0.9rem;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow:
inset 0 2px 4px rgba(0, 0, 0, 0.1),
0 2px 8px rgba(0, 0, 0, 0.1);
}
.browser-search input:focus {
outline: none;
border-color: rgba(0, 255, 136, 0.6);
background: rgba(255, 255, 255, 0.1);
box-shadow:
0 0 20px rgba(0, 255, 136, 0.2),
inset 0 2px 4px rgba(0, 0, 0, 0.1),
0 4px 15px rgba(0, 0, 0, 0.2);
transform: translateY(-1px);
}
.browser-search input::placeholder {
color: rgba(255, 255, 255, 0.6);
}
/* Breadcrumb Navigation - Glass Style */
.breadcrumb-nav {
padding: 1.5rem 2rem;
background: rgba(255, 255, 255, 0.02);
backdrop-filter: blur(15px);
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
display: flex;
align-items: center;
gap: 0.8rem;
position: relative;
}
.breadcrumb-nav::after {
content: "";
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 80%;
height: 1px;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.1),
transparent
);
}
.breadcrumb-item {
color: rgba(255, 255, 255, 0.7);
font-size: 0.9rem;
cursor: pointer;
transition: all 0.3s ease;
padding: 0.5rem 1rem;
border-radius: 12px;
position: relative;
}
.breadcrumb-item::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.05);
border-radius: 12px;
opacity: 0;
transition: opacity 0.3s ease;
}
.breadcrumb-item:hover {
color: #00ff88;
transform: translateY(-1px);
}
.breadcrumb-item:hover::before {
opacity: 1;
}
.breadcrumb-item.active {
color: #00ff88;
font-weight: 500;
background: rgba(0, 255, 136, 0.1);
backdrop-filter: blur(10px);
border: 1px solid rgba(0, 255, 136, 0.2);
}
.breadcrumb-item:not(:last-child)::after {
content: "";
margin-left: 0.5rem;
color: rgba(255, 255, 255, 0.4);
}
/* File Grid */
.file-grid {
padding: 1.5rem;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 1rem;
min-height: 300px;
}
.file-grid.list-view {
grid-template-columns: 1fr;
gap: 0.5rem;
}
/* File Items - Enhanced Glass Cards */
.file-item {
background: rgba(255, 255, 255, 0.04);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 20px;
padding: 2rem;
text-align: center;
cursor: pointer;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
box-shadow:
0 8px 25px rgba(0, 0, 0, 0.15),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.file-item::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(
135deg,
rgba(255, 255, 255, 0.1) 0%,
transparent 25%,
transparent 75%,
rgba(255, 255, 255, 0.05) 100%
);
opacity: 0;
transition: opacity 0.3s ease;
}
.file-item:hover {
background: rgba(255, 255, 255, 0.08);
border-color: rgba(0, 255, 136, 0.4);
transform: translateY(-8px) scale(1.02);
box-shadow:
0 15px 40px rgba(0, 255, 136, 0.2),
0 5px 15px rgba(0, 0, 0, 0.3),
inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.file-item:hover::before {
opacity: 1;
}
.file-item.folder {
border-color: rgba(255, 193, 7, 0.2);
background: rgba(255, 193, 7, 0.02);
}
.file-item.folder:hover {
border-color: rgba(255, 193, 7, 0.6);
background: rgba(255, 193, 7, 0.05);
box-shadow:
0 15px 40px rgba(255, 193, 7, 0.2),
0 5px 15px rgba(0, 0, 0, 0.3),
inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
/* List View Styling */
.file-grid.list-view .file-item {
display: flex;
align-items: center;
text-align: left;
padding: 1rem 1.5rem;
gap: 1rem;
}
.file-grid.list-view .file-icon {
margin-bottom: 0;
}
.file-grid.list-view .file-info {
flex-grow: 1;
}
.file-grid.list-view .file-actions {
display: flex;
gap: 0.5rem;
}
/* File Icon */
.file-icon {
font-size: 2.5rem;
margin-bottom: 1rem;
color: #00ff88;
transition: all 0.3s ease;
}
.file-item.folder .file-icon {
color: #ffc107;
}
.file-item.zip .file-icon {
color: #17a2b8;
}
.file-item.image .file-icon {
color: #e83e8c;
}
.file-item:hover .file-icon {
transform: scale(1.1);
filter: drop-shadow(0 0 10px currentColor);
}
/* File Info */
.file-name {
font-weight: 600;
color: #fff;
margin-bottom: 0.5rem;
font-size: 0.95rem;
word-break: break-word;
}
.file-meta {
font-size: 0.8rem;
color: rgba(255, 255, 255, 0.6);
margin-bottom: 1rem;
}
.file-size {
color: #00ff88;
font-weight: 500;
}
.file-date {
color: rgba(255, 255, 255, 0.5);
}
/* File Actions */
.file-actions {
display: flex;
justify-content: center;
gap: 0.5rem;
opacity: 0;
transition: opacity 0.3s ease;
}
.file-item:hover .file-actions {
opacity: 1;
}
.action-btn {
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 8px;
padding: 6px 10px;
color: #fff;
cursor: pointer;
transition: all 0.3s ease;
font-size: 0.8rem;
display: flex;
align-items: center;
gap: 0.3rem;
}
.action-btn:hover {
background: rgba(0, 255, 136, 0.2);
border-color: rgba(0, 255, 136, 0.5);
}
.action-btn.delete:hover {
background: rgba(220, 53, 69, 0.2);
border-color: rgba(220, 53, 69, 0.5);
}
/* Upload Area - Full Glass Overlay */
.upload-area {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.7);
backdrop-filter: blur(25px);
-webkit-backdrop-filter: blur(25px);
display: none;
align-items: center;
justify-content: center;
z-index: 1000;
border-radius: 25px;
}
.upload-area.active {
display: flex;
}
.upload-content {
text-align: center;
color: #fff;
background: rgba(255, 255, 255, 0.05);
backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 20px;
padding: 3rem;
box-shadow:
0 20px 50px rgba(0, 0, 0, 0.5),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.upload-icon {
font-size: 4rem;
color: #00ff88;
margin-bottom: 1rem;
display: block;
}
.upload-content h3 {
font-size: 1.5rem;
margin-bottom: 0.5rem;
color: #fff;
}
.upload-content p {
color: rgba(255, 255, 255, 0.7);
font-size: 1rem;
}
/* Upload Progress - Glass Style */
.upload-progress {
margin-top: 2rem;
display: none;
background: rgba(255, 255, 255, 0.05);
backdrop-filter: blur(15px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 15px;
padding: 1.5rem;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}
.upload-progress.active {
display: block;
}
.progress-bar {
width: 300px;
height: 8px;
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 10px;
overflow: hidden;
margin-bottom: 1rem;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
}
.progress-bar-fill {
height: 100%;
background: linear-gradient(90deg, #00ff88, #00ccff);
width: 0%;
transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);
border-radius: 10px;
box-shadow:
0 0 10px rgba(0, 255, 136, 0.5),
inset 0 1px 0 rgba(255, 255, 255, 0.2);
position: relative;
}
.progress-bar-fill::after {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.3),
transparent
);
animation: progressShimmer 2s ease-in-out infinite;
}
@keyframes progressShimmer {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
.progress-text {
color: #00ff88;
font-size: 0.9rem;
font-weight: 500;
}
/* Empty State */
.empty-state {
text-align: center;
padding: 3rem;
color: rgba(255, 255, 255, 0.6);
}
.empty-state .icon-folder {
font-size: 4rem;
color: rgba(255, 255, 255, 0.3);
margin-bottom: 1rem;
display: block;
}
.empty-state h3 {
font-size: 1.3rem;
margin-bottom: 0.5rem;
color: rgba(255, 255, 255, 0.7);
}
.empty-state p {
font-size: 1rem;
color: rgba(255, 255, 255, 0.5);
}
/* Responsive Design */
@media (max-width: 768px) {
.browser-header {
flex-direction: column;
gap: 1rem;
align-items: stretch;
}
.browser-controls {
justify-content: center;
}
.browser-search {
max-width: none;
}
.file-grid {
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 0.8rem;
padding: 1rem;
}
.file-item {
padding: 1rem;
}
.file-icon {
font-size: 2rem;
margin-bottom: 0.8rem;
}
.file-name {
font-size: 0.9rem;
}
.file-meta {
font-size: 0.75rem;
}
}
@media (max-width: 480px) {
.file-grid {
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
}
.upload-content h3 {
font-size: 1.2rem;
}
.upload-content p {
font-size: 0.9rem;
}
.upload-icon {
font-size: 3rem;
}
}
/* Animations */
@keyframes fileItemEntrance {
from {
opacity: 0;
transform: translateY(20px) scale(0.95);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.file-item {
animation: fileItemEntrance 0.4s ease forwards;
}
.file-item:nth-child(1) {
animation-delay: 0s;
}
.file-item:nth-child(2) {
animation-delay: 0.1s;
}
.file-item:nth-child(3) {
animation-delay: 0.2s;
}
.file-item:nth-child(4) {
animation-delay: 0.3s;
}
.file-item:nth-child(5) {
animation-delay: 0.4s;
}
.file-item:nth-child(6) {
animation-delay: 0.5s;
}
/* Drag and Drop States */
.file-browser.dragover {
border-color: rgba(0, 255, 136, 0.7);
background: rgba(0, 255, 136, 0.05);
}
.file-browser.dragover .upload-area {
display: flex;
animation: glassPulse 1s ease-in-out infinite alternate;
}
@keyframes glassPulse {
0% {
background: rgba(0, 0, 0, 0.7);
backdrop-filter: blur(25px);
}
100% {
background: rgba(0, 255, 136, 0.1);
backdrop-filter: blur(30px);
}
}
@keyframes shimmer {
0% {
left: -100%;
}
100% {
left: 100%;
}
}
/* File Description Styling */
.file-description {
font-size: 0.75rem;
color: rgba(255, 255, 255, 0.5);
margin-top: 0.5rem;
text-align: center;
line-height: 1.3;
}