:root { --primary-color: #2196F3; --primary-dark: #1976D2; --bg-color: #1a1a1a; --text-color: #ffffff; --success-color: #4CAF50; --error-color: #f44336; } body { margin: 0; padding: 0; min-height: 100vh; background-color: var(--bg-color); color: var(--text-color); font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Inter', Arial, sans-serif; display: flex; justify-content: center; align-items: center; overflow: hidden; } .snow-container { position: fixed; width: 100vw; height: 100vh; top: 0; left: 0; pointer-events: none; z-index: 1; } .snow { position: absolute; width: 4px; height: 4px; background: var(--text-color); border-radius: 50%; opacity: 0.2; animation: fall linear infinite; will-change: transform; } @keyframes fall { to { transform: translateY(100vh); } } .container { background: rgba(26, 26, 26, 0.8); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); padding: 3rem; border-radius: 20px; box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); text-align: center; max-width: 500px; width: 90%; position: relative; border: 1px solid rgba(255, 255, 255, 0.1); z-index: 2; } .glow-effect { animation: glow 2s ease-in-out infinite alternate; } @keyframes glow { from { box-shadow: 0 0 20px rgba(33, 150, 243, 0.2); } to { box-shadow: 0 0 30px rgba(33, 150, 243, 0.4); } } h1 { margin-bottom: 2rem; font-weight: 700; font-size: 2.5rem; background: linear-gradient(45deg, var(--primary-color), var(--primary-dark)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } .upload-box { display: flex; flex-direction: column; gap: 1.5rem; } .file-input-label { padding: 2rem; border: 2px dashed rgba(255, 255, 255, 0.2); border-radius: 10px; background-color: rgba(255, 255, 255, 0.05); cursor: pointer; transition: all 0.2s ease; } .file-input-label:hover { border-color: var(--primary-color); background-color: rgba(33, 150, 243, 0.1); } .file-input-label.drag-over { border-color: var(--primary-color); background-color: rgba(33, 150, 243, 0.15); transform: scale(1.02); } .upload-icon { margin-bottom: 1rem; } .upload-icon svg { width: 48px; height: 48px; stroke: var(--primary-color); } .upload-text { font-size: 1.1rem; color: rgba(255, 255, 255, 0.8); } .upload-button { padding: 1rem 2rem; background: linear-gradient(45deg, var(--primary-color), var(--primary-dark)); color: var(--text-color); border: none; border-radius: 8px; cursor: pointer; font-size: 1.1rem; font-weight: 600; transition: transform 0.2s ease, box-shadow 0.2s ease; text-transform: uppercase; letter-spacing: 1px; } .upload-button:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(33, 150, 243, 0.4); } .upload-button:disabled { opacity: 0.5; cursor: not-allowed; } .status-message { margin-top: 1.5rem; font-size: 1.1rem; min-height: 24px; opacity: 0; transform: translateY(10px); transition: all 0.3s ease; } .status-message.show { opacity: 1; transform: translateY(0); } .status-message.error { color: var(--error-color); } .status-message a { color: var(--success-color); text-decoration: none; } .status-message a:hover { text-decoration: underline; } .file-details-container { margin-top: 1.5rem; padding: 1rem; background: rgba(33, 150, 243, 0.1); border-radius: 8px; display: none; } .file-details-container.show { display: block; animation: slideIn 0.3s ease-out; } @keyframes slideIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .upload-link { margin-bottom: 1rem; } .upload-link a { color: var(--primary-color); text-decoration: none; font-weight: 500; font-size: 1.1rem; transition: all 0.2s ease; display: inline-block; } .upload-link a:hover { color: var(--primary-dark); transform: translateY(-1px); } .copy-button { padding: 0.5rem 1rem; background: var(--primary-color); color: var(--text-color); border: none; border-radius: 4px; cursor: pointer; font-size: 0.9rem; transition: all 0.2s ease; } .copy-button:hover { background: var(--primary-dark); } .repo-size { margin-top: 1.5rem; font-size: 0.9rem; color: rgba(255, 255, 255, 0.7); opacity: 0; transition: opacity 0.3s ease; } .repo-size.show { opacity: 1; } .progress-bar { height: 4px; background: linear-gradient(90deg, var(--primary-color), var(--primary-dark)); position: absolute; bottom: 0; left: 0; border-radius: 0 0 20px 20px; animation: progress 1s ease-in-out; will-change: transform; } @keyframes progress { 0% { width: 0%; } 100% { width: 100%; } } .file-info { margin-top: 1rem; font-size: 0.9rem; color: rgba(255, 255, 255, 0.7); } .file-info.warning { color: #ffa500; } .file-url { word-break: break-all; font-family: monospace; background-color: rgba(255, 255, 255, 0.1); padding: 0.2em 0.4em; border-radius: 4px; }