Spaces:
Running
Running
| /* style.css - Enhanced Glass Design with Animations */ | |
| :root { | |
| --bg-color: #0f172a; | |
| --panel-bg: rgba(30, 41, 59, 0.65); | |
| --panel-bg-strong: rgba(30, 41, 59, 0.85); | |
| --panel-border: rgba(148, 163, 184, 0.15); | |
| --panel-border-strong: rgba(148, 163, 184, 0.3); | |
| --accent-color: #3b82f6; | |
| --accent-hover: #2563eb; | |
| --text-main: #f1f5f9; | |
| --text-sub: #94a3b8; | |
| --btn-shadow: #1e3a8a; | |
| --glass-shine: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0) 100%); | |
| --transition-fast: 0.2s ease; | |
| --transition-normal: 0.3s ease; | |
| --transition-slow: 0.5s ease; | |
| } | |
| * { | |
| box-sizing: border-box; | |
| margin: 0; | |
| padding: 0; | |
| -webkit-tap-highlight-color: transparent; | |
| } | |
| body { | |
| font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; | |
| background: var(--bg-color) radial-gradient(circle at 50% 0%, #1e293b 0%, var(--bg-color) 70%); | |
| color: var(--text-main); | |
| height: 100vh; | |
| display: flex; | |
| flex-direction: column; | |
| overflow: hidden; | |
| animation: fadeIn 0.6s ease-out; | |
| } | |
| @keyframes fadeIn { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| /* --- Enhanced Glass Components --- */ | |
| .glass-panel { | |
| background: var(--panel-bg); | |
| backdrop-filter: blur(20px) saturate(180%); | |
| -webkit-backdrop-filter: blur(20px) saturate(180%); | |
| border: 1px solid var(--panel-border); | |
| position: relative; | |
| transition: all var(--transition-normal); | |
| will-change: transform; | |
| } | |
| @media (max-width: 768px) { | |
| .glass-panel { | |
| backdrop-filter: blur(10px) saturate(120%); | |
| -webkit-backdrop-filter: blur(10px) saturate(120%); | |
| } | |
| } | |
| .glass-panel::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.1) 50%, transparent 100%); | |
| opacity: 0.5; | |
| } | |
| .glass-panel:hover { | |
| border-color: var(--panel-border-strong); | |
| transform: translateY(-1px); | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); | |
| } | |
| /* --- Enhanced 3D Buttons --- */ | |
| .btn-3d { | |
| background: linear-gradient(135deg, var(--accent-color) 0%, #2563eb 100%); | |
| color: white; | |
| border: none; | |
| border-radius: 12px; | |
| font-weight: 600; | |
| box-shadow: | |
| 0 4px 0 var(--btn-shadow), | |
| 0 5px 15px rgba(59, 130, 246, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1); | |
| cursor: pointer; | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .btn-3d::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; | |
| } | |
| .btn-3d:hover { | |
| transform: translateY(-2px); | |
| box-shadow: | |
| 0 6px 0 var(--btn-shadow), | |
| 0 8px 20px rgba(59, 130, 246, 0.4), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| } | |
| .btn-3d:hover::before { | |
| left: 100%; | |
| } | |
| .btn-3d:active { | |
| transform: translateY(4px); | |
| box-shadow: | |
| 0 0 0 var(--btn-shadow), | |
| 0 2px 5px rgba(59, 130, 246, 0.3); | |
| } | |
| .btn-3d:disabled { | |
| background: linear-gradient(135deg, #475569 0%, #334155 100%); | |
| box-shadow: none; | |
| transform: none; | |
| opacity: 0.7; | |
| cursor: not-allowed; | |
| } | |
| /* --- Layout --- */ | |
| .app-container { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| width: 100%; | |
| height: 100%; | |
| display: flex; | |
| flex-direction: column; | |
| position: relative; | |
| animation: slideUp 0.6s ease-out; | |
| } | |
| @keyframes slideUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| header { | |
| padding: 15px 20px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| flex-shrink: 0; | |
| margin-top: 70px; | |
| transition: margin-top var(--transition-normal); | |
| } | |
| header h2 { | |
| font-size: 1.2rem; | |
| font-weight: 700; | |
| letter-spacing: 0.5px; | |
| background: linear-gradient(135deg, var(--text-main) 0%, var(--text-sub) 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| body.has-preview header { | |
| margin-top: 170px; | |
| } | |
| /* --- History Gallery --- */ | |
| .history-container { | |
| flex: 1; | |
| overflow-y: auto; | |
| padding: 10px 20px; | |
| padding-bottom: 20px; | |
| scroll-behavior: smooth; | |
| } | |
| .history-container::-webkit-scrollbar { | |
| width: 8px; | |
| } | |
| .history-container::-webkit-scrollbar-track { | |
| background: rgba(0, 0, 0, 0.2); | |
| border-radius: 4px; | |
| } | |
| .history-container::-webkit-scrollbar-thumb { | |
| background: var(--panel-bg); | |
| border-radius: 4px; | |
| transition: background var(--transition-fast); | |
| } | |
| .history-container::-webkit-scrollbar-thumb:hover { | |
| background: var(--panel-bg-strong); | |
| } | |
| .grid-layout { | |
| display: grid; | |
| grid-template-columns: repeat(2, 1fr); | |
| gap: 16px; | |
| } | |
| .public-gallery-section { | |
| margin-top: 40px; | |
| padding: 32px; | |
| border-radius: 24px; | |
| border: 1px solid var(--panel-border); | |
| background: linear-gradient(135deg, rgba(15, 23, 42, 0.8) 0%, rgba(20, 30, 50, 0.8) 100%); | |
| backdrop-filter: blur(20px) saturate(180%); | |
| box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4); | |
| animation: slideUp 0.6s ease-out; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .public-gallery-section::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.1) 50%, transparent 100%); | |
| opacity: 0.5; | |
| } | |
| .section-title { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: flex-start; | |
| gap: 16px; | |
| flex-wrap: wrap; | |
| position: relative; | |
| } | |
| .section-title h3 { | |
| margin: 0; | |
| font-size: 1.3rem; | |
| letter-spacing: 0.5px; | |
| background: linear-gradient(135deg, var(--text-main) 0%, var(--text-sub) 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| font-weight: 700; | |
| } | |
| .section-subtitle { | |
| margin-top: 8px; | |
| font-size: 0.95rem; | |
| color: var(--text-sub); | |
| transition: color var(--transition-fast); | |
| } | |
| .section-subtitle.is-success { | |
| color: #34d399; | |
| font-weight: 500; | |
| } | |
| .section-subtitle.is-error { | |
| color: #f87171; | |
| font-weight: 500; | |
| } | |
| .section-actions { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| } | |
| .public-grid { | |
| margin-top: 28px; | |
| grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); | |
| gap: 24px; | |
| } | |
| .public-card { | |
| position: relative; | |
| border-radius: 18px; | |
| overflow: hidden; | |
| border: 1px solid var(--panel-border); | |
| background: rgba(15, 23, 42, 0.85); | |
| aspect-ratio: 16 / 9; | |
| cursor: pointer; | |
| transition: all var(--transition-normal); | |
| box-shadow: 0 10px 35px rgba(0, 0, 0, 0.3); | |
| animation: scaleIn 0.5s ease-out backwards; | |
| will-change: transform, box-shadow; | |
| } | |
| @media (max-width: 768px) { | |
| .public-card { | |
| animation: fadeIn 0.3s ease-out backwards; | |
| } | |
| } | |
| .public-card img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| display: block; | |
| transition: transform var(--transition-normal); | |
| } | |
| .public-card:hover { | |
| transform: translateY(-8px); | |
| box-shadow: 0 20px 50px rgba(59, 130, 246, 0.3); | |
| border-color: rgba(59, 130, 246, 0.4); | |
| } | |
| .public-card:hover img { | |
| transform: scale(1.08); | |
| } | |
| .public-card:nth-child(1) { animation-delay: 0.05s; } | |
| .public-card:nth-child(2) { animation-delay: 0.1s; } | |
| .public-card:nth-child(3) { animation-delay: 0.15s; } | |
| .public-card:nth-child(4) { animation-delay: 0.2s; } | |
| .public-card:nth-child(5) { animation-delay: 0.25s; } | |
| .public-card:nth-child(6) { animation-delay: 0.3s; } | |
| .public-card-info { | |
| position: absolute; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| padding: 16px; | |
| background: linear-gradient(180deg, rgba(15, 23, 42, 0) 0%, rgba(15, 23, 42, 0.7) 40%, rgba(15, 23, 42, 0.95) 100%); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| transition: all var(--transition-normal); | |
| } | |
| .public-card:hover .public-card-info { | |
| padding-bottom: 20px; | |
| background: linear-gradient(180deg, rgba(15, 23, 42, 0) 0%, rgba(15, 23, 42, 0.85) 30%, rgba(15, 23, 42, 0.98) 100%); | |
| } | |
| .public-card-prompt { | |
| margin: 0; | |
| font-size: 0.9rem; | |
| color: #f1f5f9; | |
| line-height: 1.4; | |
| display: -webkit-box; | |
| -webkit-line-clamp: 2; | |
| -webkit-box-orient: vertical; | |
| overflow: hidden; | |
| font-weight: 500; | |
| } | |
| .public-card-footer { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| font-size: 0.75rem; | |
| color: rgba(148, 163, 184, 0.9); | |
| gap: 10px; | |
| } | |
| .public-gallery-empty { | |
| grid-column: 1 / -1; | |
| text-align: center; | |
| color: var(--text-sub); | |
| padding: 60px 30px; | |
| background: linear-gradient(135deg, rgba(15, 23, 42, 0.5) 0%, rgba(20, 30, 50, 0.5) 100%); | |
| border-radius: 20px; | |
| border: 2px dashed var(--panel-border); | |
| font-size: 1.1rem; | |
| } | |
| .public-gallery-empty > div:first-child { | |
| font-size: 48px; | |
| margin-bottom: 16px; | |
| } | |
| .icon-btn.small { | |
| width: 36px; | |
| height: 36px; | |
| font-size: 14px; | |
| background: rgba(239, 68, 68, 0.9); | |
| border-color: rgba(248, 113, 113, 0.7); | |
| transition: all var(--transition-fast); | |
| } | |
| .icon-btn.small:hover { | |
| background: rgba(239, 68, 68, 0.95); | |
| transform: scale(1.15); | |
| box-shadow: 0 6px 20px rgba(239, 68, 68, 0.4); | |
| } | |
| .icon-btn.share-btn { | |
| background: rgba(59, 130, 246, 0.25); | |
| border-color: rgba(59, 130, 246, 0.4); | |
| } | |
| .icon-btn.share-btn:hover { | |
| background: rgba(59, 130, 246, 0.4); | |
| } | |
| .icon-btn.public-delete-btn { | |
| background: rgba(239, 68, 68, 0.9); | |
| border-color: rgba(248, 113, 113, 0.7); | |
| } | |
| .icon-btn.spinning { | |
| animation: spin 0.8s linear infinite; | |
| } | |
| @media (max-width: 768px) { | |
| .icon-btn.spinning { | |
| animation: spin 1s linear infinite; | |
| opacity: 0.8; | |
| } | |
| } | |
| .history-item { | |
| position: relative; | |
| aspect-ratio: 16 / 9; | |
| border-radius: 12px; | |
| overflow: hidden; | |
| border: 1px solid var(--panel-border); | |
| background: rgba(0,0,0,0.2); | |
| cursor: pointer; | |
| transition: all var(--transition-normal); | |
| animation: scaleIn 0.4s ease-out backwards; | |
| } | |
| @keyframes scaleIn { | |
| from { | |
| opacity: 0; | |
| transform: scale(0.9); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| } | |
| .history-item:nth-child(1) { animation-delay: 0.05s; } | |
| .history-item:nth-child(2) { animation-delay: 0.1s; } | |
| .history-item:nth-child(3) { animation-delay: 0.15s; } | |
| .history-item:nth-child(4) { animation-delay: 0.2s; } | |
| .history-item:nth-child(5) { animation-delay: 0.25s; } | |
| .history-item:nth-child(6) { animation-delay: 0.3s; } | |
| .history-item img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| transition: transform var(--transition-normal); | |
| } | |
| .history-item:hover { | |
| border-color: var(--panel-border-strong); | |
| box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4); | |
| transform: translateY(-4px); | |
| } | |
| .history-item:hover img { | |
| transform: scale(1.08); | |
| } | |
| .item-badge { | |
| position: absolute; | |
| top: 8px; | |
| left: 8px; | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.95) 0%, rgba(37, 99, 235, 0.95) 100%); | |
| font-size: 10px; | |
| padding: 4px 8px; | |
| border-radius: 6px; | |
| z-index: 2; | |
| backdrop-filter: blur(8px); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); | |
| transition: all var(--transition-fast); | |
| } | |
| .item-badge:hover { | |
| transform: scale(1.05); | |
| } | |
| .item-actions { | |
| position: absolute; | |
| bottom: 0; | |
| right: 0; | |
| left: 0; | |
| padding: 12px; | |
| background: linear-gradient(to top, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.4) 50%, transparent 100%); | |
| backdrop-filter: blur(8px); | |
| display: flex; | |
| justify-content: flex-end; | |
| gap: 8px; | |
| opacity: 0; | |
| transition: opacity var(--transition-normal); | |
| } | |
| .history-item:hover .item-actions { | |
| opacity: 1; | |
| } | |
| @media (hover: none) { | |
| .item-actions { opacity: 1; } | |
| } | |
| .icon-btn { | |
| width: 36px; | |
| height: 36px; | |
| border-radius: 8px; | |
| background: rgba(255,255,255,0.15); | |
| color: white; | |
| border: 1px solid rgba(255,255,255,0.2); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| backdrop-filter: blur(8px); | |
| cursor: pointer; | |
| transition: all var(--transition-fast); | |
| font-size: 16px; | |
| } | |
| .icon-btn:hover { | |
| background: rgba(255,255,255,0.25); | |
| transform: scale(1.1); | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); | |
| } | |
| .icon-btn:active { | |
| transform: scale(0.95); | |
| } | |
| /* --- Fixed Input Section (Top) --- */ | |
| .input-section { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| width: 100%; | |
| display: flex; | |
| flex-direction: column; | |
| border-radius: 0; | |
| box-shadow: 0 4px 24px rgba(0,0,0,0.4); | |
| z-index: 100; | |
| border-bottom: 1px solid var(--panel-border); | |
| transition: box-shadow var(--transition-normal); | |
| } | |
| .input-section:hover { | |
| box-shadow: 0 6px 32px rgba(0,0,0,0.5); | |
| } | |
| /* Preview Bar */ | |
| .preview-bar { | |
| padding: 0; | |
| max-height: 0; | |
| overflow-x: auto; | |
| overflow-y: hidden; | |
| background: rgba(15, 23, 42, 0.6); | |
| backdrop-filter: blur(12px); | |
| display: flex; | |
| gap: 8px; | |
| transition: all var(--transition-normal) cubic-bezier(0.4, 0, 0.2, 1); | |
| white-space: nowrap; | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| width: 100%; | |
| scroll-behavior: smooth; | |
| } | |
| .preview-bar::-webkit-scrollbar { | |
| height: 4px; | |
| } | |
| .preview-bar::-webkit-scrollbar-track { | |
| background: rgba(0, 0, 0, 0.2); | |
| } | |
| .preview-bar::-webkit-scrollbar-thumb { | |
| background: var(--accent-color); | |
| border-radius: 2px; | |
| } | |
| .preview-bar.visible { | |
| padding: 12px 20px; | |
| max-height: 100px; | |
| } | |
| .thumb-wrapper { | |
| position: relative; | |
| width: 64px; | |
| height: 64px; | |
| flex-shrink: 0; | |
| border-radius: 8px; | |
| border: 2px solid rgba(255,255,255,0.1); | |
| overflow: hidden; | |
| transition: all var(--transition-fast); | |
| animation: slideInThumb 0.3s ease-out; | |
| } | |
| @keyframes slideInThumb { | |
| from { | |
| opacity: 0; | |
| transform: scale(0.8) translateY(-10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: scale(1) translateY(0); | |
| } | |
| } | |
| .thumb-wrapper:hover { | |
| border-color: var(--accent-color); | |
| transform: scale(1.05); | |
| } | |
| .thumb-wrapper img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| } | |
| .thumb-remove { | |
| position: absolute; | |
| top: 2px; | |
| right: 2px; | |
| width: 18px; | |
| height: 18px; | |
| background: linear-gradient(135deg, rgba(239,68,68,0.95) 0%, rgba(220,38,38,0.95) 100%); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 12px; | |
| cursor: pointer; | |
| border: 1px solid rgba(255,255,255,0.3); | |
| transition: all var(--transition-fast); | |
| box-shadow: 0 2px 6px rgba(0,0,0,0.3); | |
| } | |
| .thumb-remove:hover { | |
| transform: scale(1.2); | |
| background: linear-gradient(135deg, rgba(220,38,38,1) 0%, rgba(185,28,28,1) 100%); | |
| } | |
| .thumb-remove:active { | |
| transform: scale(0.9); | |
| } | |
| /* Control Bar */ | |
| .control-bar { | |
| display: flex; | |
| align-items: flex-end; | |
| padding: 12px 20px; | |
| gap: 10px; | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| width: 100%; | |
| } | |
| .upload-trigger { | |
| width: 44px; | |
| height: 44px; | |
| border-radius: 12px; | |
| background: rgba(255,255,255,0.05); | |
| border: 2px dashed rgba(255,255,255,0.3); | |
| color: var(--text-sub); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 20px; | |
| flex-shrink: 0; | |
| transition: all var(--transition-normal); | |
| cursor: pointer; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .upload-trigger::before { | |
| content: ''; | |
| position: absolute; | |
| inset: 0; | |
| background: radial-gradient(circle, rgba(59, 130, 246, 0.2) 0%, transparent 70%); | |
| opacity: 0; | |
| transition: opacity var(--transition-fast); | |
| } | |
| .upload-trigger:hover, .upload-trigger.active { | |
| background: rgba(59, 130, 246, 0.15); | |
| border-color: var(--accent-color); | |
| border-style: solid; | |
| color: var(--accent-color); | |
| transform: scale(1.05); | |
| } | |
| .upload-trigger:hover::before, .upload-trigger.active::before { | |
| opacity: 1; | |
| } | |
| .upload-trigger:active { | |
| transform: scale(0.95); | |
| } | |
| /* Drag Active State */ | |
| .input-section.drag-active { | |
| background: rgba(59, 130, 246, 0.1); | |
| border-color: var(--accent-color); | |
| box-shadow: | |
| 0 6px 32px rgba(59, 130, 246, 0.4), | |
| inset 0 0 0 2px var(--accent-color); | |
| animation: pulse 1s ease-in-out infinite; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { | |
| box-shadow: | |
| 0 6px 32px rgba(59, 130, 246, 0.4), | |
| inset 0 0 0 2px var(--accent-color); | |
| } | |
| 50% { | |
| box-shadow: | |
| 0 8px 40px rgba(59, 130, 246, 0.6), | |
| inset 0 0 0 3px var(--accent-color); | |
| } | |
| } | |
| .main-input { | |
| flex: 1; | |
| background: transparent; | |
| border: none; | |
| color: white; | |
| font-size: 16px; | |
| padding: 10px 5px; | |
| resize: none; | |
| max-height: 120px; | |
| outline: none; | |
| line-height: 1.5; | |
| transition: all var(--transition-fast); | |
| } | |
| .main-input::placeholder { | |
| color: rgba(255,255,255,0.3); | |
| transition: color var(--transition-fast); | |
| } | |
| .main-input:focus::placeholder { | |
| color: rgba(255,255,255,0.5); | |
| } | |
| .send-btn { | |
| height: 44px; | |
| padding: 0 20px; | |
| font-size: 15px; | |
| flex-shrink: 0; | |
| min-width: 90px; | |
| } | |
| /* Enhanced Loading Animation */ | |
| .loader { | |
| width: 18px; | |
| height: 18px; | |
| border: 2px solid rgba(255,255,255,0.2); | |
| border-top-color: white; | |
| border-radius: 50%; | |
| animation: spin 0.8s linear infinite; | |
| display: none; | |
| will-change: transform; | |
| } | |
| .loading .loader { display: block; } | |
| .loading span { display: none; } | |
| @keyframes spin { | |
| from { transform: rotate(0deg); } | |
| to { transform: rotate(360deg); } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .loader, | |
| .icon-btn.spinning { | |
| animation: none; | |
| opacity: 0.7; | |
| } | |
| } | |
| /* --- Enhanced Modal --- */ | |
| .modal { | |
| display: none; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: rgba(0,0,0,0.85); | |
| z-index: 1000; | |
| justify-content: center; | |
| align-items: center; | |
| backdrop-filter: blur(8px); | |
| animation: fadeIn var(--transition-normal); | |
| } | |
| .modal.show { | |
| display: flex; | |
| } | |
| .modal-content { | |
| background: var(--panel-bg-strong); | |
| backdrop-filter: blur(24px) saturate(180%); | |
| width: 95%; | |
| max-width: 1000px; | |
| height: 90%; | |
| max-height: 900px; | |
| border-radius: 20px; | |
| display: flex; | |
| flex-direction: column; | |
| position: relative; | |
| border: 1px solid var(--panel-border-strong); | |
| box-shadow: | |
| 0 20px 60px rgba(0, 0, 0, 0.6), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| animation: modalSlideIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); | |
| } | |
| @keyframes modalSlideIn { | |
| from { | |
| opacity: 0; | |
| transform: scale(0.9) translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: scale(1) translateY(0); | |
| } | |
| } | |
| .close-modal { | |
| position: absolute; | |
| top: 15px; | |
| right: 15px; | |
| width: 40px; | |
| height: 40px; | |
| border-radius: 50%; | |
| background: rgba(0,0,0,0.7); | |
| backdrop-filter: blur(8px); | |
| color: white; | |
| border: 1px solid rgba(255,255,255,0.2); | |
| z-index: 10; | |
| font-size: 24px; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: all var(--transition-fast); | |
| } | |
| .close-modal:hover { | |
| background: rgba(239,68,68,0.9); | |
| transform: rotate(90deg) scale(1.1); | |
| border-color: rgba(255,255,255,0.4); | |
| } | |
| .close-modal:active { | |
| transform: rotate(90deg) scale(0.95); | |
| } | |
| .modal-img-area { | |
| flex: 1; | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| background: rgba(0,0,0,0.5); | |
| overflow: hidden; | |
| border-radius: 20px 20px 0 0; | |
| position: relative; | |
| } | |
| .modal-img-area::before { | |
| content: ''; | |
| position: absolute; | |
| inset: 0; | |
| background: radial-gradient(circle at center, transparent 0%, rgba(0,0,0,0.3) 100%); | |
| pointer-events: none; | |
| } | |
| .modal-img-area img { | |
| max-width: 100%; | |
| max-height: 100%; | |
| object-fit: contain; | |
| animation: imageZoomIn 0.5s ease-out; | |
| } | |
| @keyframes imageZoomIn { | |
| from { | |
| opacity: 0; | |
| transform: scale(0.95); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| } | |
| .modal-footer { | |
| padding: 20px; | |
| background: rgba(30, 41, 59, 0.95); | |
| backdrop-filter: blur(16px); | |
| border-top: 1px solid var(--panel-border-strong); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| border-radius: 0 0 20px 20px; | |
| } | |
| .input-refs { | |
| display: flex; | |
| gap: 8px; | |
| overflow-x: auto; | |
| padding-bottom: 5px; | |
| scroll-behavior: smooth; | |
| } | |
| .input-refs::-webkit-scrollbar { | |
| height: 4px; | |
| } | |
| .input-refs::-webkit-scrollbar-track { | |
| background: rgba(0, 0, 0, 0.2); | |
| border-radius: 2px; | |
| } | |
| .input-refs::-webkit-scrollbar-thumb { | |
| background: var(--accent-color); | |
| border-radius: 2px; | |
| } | |
| .ref-thumb { | |
| width: 44px; | |
| height: 44px; | |
| border-radius: 8px; | |
| border: 2px solid rgba(255,255,255,0.2); | |
| cursor: pointer; | |
| transition: all var(--transition-fast); | |
| object-fit: cover; | |
| } | |
| .ref-thumb:hover { | |
| border-color: var(--accent-color); | |
| transform: scale(1.1); | |
| } | |
| .prompt-display { | |
| background: rgba(0,0,0,0.3); | |
| padding: 12px; | |
| border-radius: 10px; | |
| color: #cbd5e1; | |
| font-size: 0.9rem; | |
| max-height: 100px; | |
| overflow-y: auto; | |
| line-height: 1.5; | |
| border: 1px solid rgba(255,255,255,0.05); | |
| } | |
| .prompt-display::-webkit-scrollbar { | |
| width: 6px; | |
| } | |
| .prompt-display::-webkit-scrollbar-track { | |
| background: rgba(0, 0, 0, 0.2); | |
| border-radius: 3px; | |
| } | |
| .prompt-display::-webkit-scrollbar-thumb { | |
| background: var(--accent-color); | |
| border-radius: 3px; | |
| } | |
| /* --- Login Overlay --- */ | |
| #login-overlay { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 5000; | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); | |
| animation: fadeIn 0.5s ease-out; | |
| } | |
| .login-card { | |
| width: 340px; | |
| padding: 40px; | |
| text-align: center; | |
| border-radius: 20px; | |
| box-shadow: | |
| 0 20px 60px rgba(0, 0, 0, 0.5), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| animation: modalSlideIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); | |
| } | |
| .login-card h1 { | |
| font-size: 3rem; | |
| margin-bottom: 10px; | |
| animation: bounce 1s ease-in-out infinite; | |
| } | |
| @keyframes bounce { | |
| 0%, 100% { transform: translateY(0); } | |
| 50% { transform: translateY(-10px); } | |
| } | |
| .login-card h3 { | |
| margin: 15px 0; | |
| color: #cbd5e1; | |
| font-weight: 600; | |
| } | |
| .login-card input { | |
| width: 100%; | |
| padding: 14px; | |
| margin: 20px 0; | |
| background: rgba(0,0,0,0.4); | |
| border: 2px solid rgba(255,255,255,0.1); | |
| color: white; | |
| border-radius: 10px; | |
| font-size: 15px; | |
| transition: all var(--transition-normal); | |
| outline: none; | |
| } | |
| .login-card input:focus { | |
| border-color: var(--accent-color); | |
| background: rgba(0,0,0,0.5); | |
| box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); | |
| } | |
| .login-card .btn-3d { | |
| width: 100%; | |
| padding: 14px; | |
| font-size: 16px; | |
| } | |
| /* --- Mobile Responsive Design --- */ | |
| @media (max-width: 768px) { | |
| .grid-layout { | |
| grid-template-columns: 1fr; | |
| gap: 12px; | |
| } | |
| .public-gallery-section { | |
| padding: 20px; | |
| margin-top: 30px; | |
| border-radius: 18px; | |
| backdrop-filter: blur(10px) saturate(120%); | |
| -webkit-backdrop-filter: blur(10px) saturate(120%); | |
| } | |
| .section-title h3 { | |
| font-size: 1.1rem; | |
| } | |
| .section-subtitle { | |
| font-size: 0.85rem; | |
| } | |
| .public-grid { | |
| grid-template-columns: 1fr; | |
| gap: 14px; | |
| margin-top: 16px; | |
| } | |
| .public-card { | |
| border-radius: 14px; | |
| transition: none; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); | |
| } | |
| .public-card:hover { | |
| transform: none; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); | |
| } | |
| .public-card-prompt { | |
| font-size: 0.8rem; | |
| -webkit-line-clamp: 2; | |
| } | |
| .public-card-footer { | |
| font-size: 0.7rem; | |
| } | |
| .icon-btn.small { | |
| width: 32px; | |
| height: 32px; | |
| font-size: 12px; | |
| } | |
| .public-gallery-empty { | |
| padding: 40px 20px; | |
| border-radius: 16px; | |
| font-size: 0.95rem; | |
| } | |
| .public-gallery-empty > div:first-child { | |
| font-size: 36px; | |
| margin-bottom: 12px; | |
| } | |
| .history-item { | |
| animation: fadeIn 0.3s ease-out backwards; | |
| } | |
| .history-item:nth-child(1) { animation-delay: 0s; } | |
| .history-item:nth-child(2) { animation-delay: 0s; } | |
| .history-item:nth-child(3) { animation-delay: 0s; } | |
| .history-item:nth-child(4) { animation-delay: 0s; } | |
| .history-item:nth-child(5) { animation-delay: 0s; } | |
| .history-item:nth-child(6) { animation-delay: 0s; } | |
| .history-item:hover { | |
| transform: none; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); | |
| } | |
| .btn-3d { | |
| transition: none; | |
| } | |
| .btn-3d:hover { | |
| transform: none; | |
| } | |
| } | |
| @media (max-width: 600px) { | |
| .public-gallery-section { | |
| padding: 16px; | |
| margin-top: 20px; | |
| } | |
| .section-title { | |
| flex-direction: column; | |
| } | |
| .section-title h3 { | |
| font-size: 1rem; | |
| } | |
| .public-grid { | |
| grid-template-columns: 1fr; | |
| gap: 12px; | |
| } | |
| .public-card-info { | |
| padding: 12px; | |
| } | |
| .public-card:hover .public-card-info { | |
| padding-bottom: 12px; | |
| } | |
| } | |
| /* --- Tablet Responsive Design --- */ | |
| @media (min-width: 768px) and (max-width: 1024px) { | |
| .grid-layout { | |
| grid-template-columns: repeat(2, 1fr); | |
| gap: 16px; | |
| } | |
| .public-grid { | |
| grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); | |
| gap: 18px; | |
| } | |
| .public-gallery-section { | |
| padding: 28px; | |
| margin-top: 35px; | |
| } | |
| .modal-content { | |
| width: 90%; | |
| height: 85%; | |
| } | |
| header { | |
| margin-top: 75px; | |
| } | |
| body.has-preview header { | |
| margin-top: 160px; | |
| } | |
| } | |
| /* --- Large Screen Optimization --- */ | |
| @media (min-width: 1200px) { | |
| .grid-layout { | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 20px; | |
| } | |
| .public-grid { | |
| grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); | |
| gap: 28px; | |
| } | |
| .public-gallery-section { | |
| padding: 40px; | |
| margin-top: 50px; | |
| } | |
| .section-title h3 { | |
| font-size: 1.5rem; | |
| } | |
| .history-container { | |
| padding: 15px 30px; | |
| padding-bottom: 30px; | |
| } | |
| header { | |
| padding: 20px 30px; | |
| } | |
| .control-bar { | |
| padding: 14px 30px; | |
| } | |
| .preview-bar.visible { | |
| padding: 14px 30px; | |
| } | |
| } | |
| /* --- Accessibility & Reduced Motion --- */ | |
| @media (prefers-reduced-motion: reduce) { | |
| *, | |
| *::before, | |
| *::after { | |
| animation-duration: 0.01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| } | |
| } | |
| /* --- Focus Styles for Accessibility --- */ | |
| button:focus-visible, | |
| input:focus-visible, | |
| textarea:focus-visible { | |
| outline: 2px solid var(--accent-color); | |
| outline-offset: 2px; | |
| } | |
| /* --- Print Styles --- */ | |
| @media print { | |
| .input-section, | |
| .item-actions, | |
| header, | |
| .modal { | |
| display: none ; | |
| } | |
| .history-container { | |
| overflow: visible; | |
| padding: 0; | |
| } | |
| body { | |
| background: white; | |
| color: black; | |
| } | |
| } | |