/
Centermant
/
web-nodejs
Обзор
Документация
Войти
/
Centermant
/
web-nodejs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
public/css/main.css
398 строк
11 KB
Centermant
feat(lab7): final
28 окт 2025, 18:23
28 окт 2025, 18:23
6d125d4
Код
Авторство
О чём код?
:root { --primary-gradient: linear-gradient(135deg, #6e8efb, #a777e3, #5c4ac7); --secondary-gradient: linear-gradient(45deg, #ff6b6b, #feca57, #48dbfb, #1dd1a1); --text-gradient: linear-gradient(90deg, #ff8a00, #e52e71, #4a00e0); } * { margin: 0; padding: 0; box-sizing: border-box; } html, body { height: 100%; margin: 0; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: radial-gradient(circle at center, #0f0c29, #302b63, #24243e); min-height: 100vh; overflow-x: hidden; perspective: 1000px; display: flex; flex-direction: column; } .wrapper { flex: 1 0 auto; } footer { flex-shrink: 0; } .container { max-width: 1200px; margin: 40px auto; padding: 30px; } .header { text-align: center; margin-bottom: 50px; position: relative; } .header h1 { font-family: 'Arial Black', Arial, sans-serif; font-size: 3.5rem; font-weight: 900; background: var(--text-gradient); -webkit-background-clip: text; background-clip: text; color: transparent; text-shadow: 0 0 20px rgba(255, 138, 0, 0.3); letter-spacing: 2px; transform-style: preserve-3d; animation: float 3s ease-in-out infinite; } @keyframes float { 0%, 100% { transform: translateY(0) rotateX(0deg) rotateY(0deg); } 50% { transform: translateY(-10px) rotateX(5deg) rotateY(5deg); } } .subtitle { font-size: 1.2rem; color: #a0a0ff; margin-top: 15px; letter-spacing: 1px; animation: glow 2s ease-in-out infinite alternate; } @keyframes glow { from { text-shadow: 0 0 5px #fff, 0 0 10px #a777e3, 0 0 15px #a777e3; } to { text-shadow: 0 0 10px #fff, 0 0 20px #a777e3, 0 0 30px #a777e3; } } .grid-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; perspective: 1000px; } .lab-card { position: relative; background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(10px); border-radius: 20px; padding: 30px; text-align: center; transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275); transform-style: preserve-3d; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); border: 1px solid rgba(255, 255, 255, 0.1); overflow: hidden; } .lab-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: var(--primary-gradient); opacity: 0; z-index: -1; transition: opacity 0.5s ease; border-radius: 20px; } .lab-card:hover::before { opacity: 0.2; } .lab-card:hover { transform: translateY(-15px) rotateX(5deg) rotateY(5deg) scale(1.05); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5); } .lab-link { display: block; text-decoration: none; font-family: 'Arial Black', Arial, sans-serif; font-size: 1.8rem; font-weight: 700; background: var(--text-gradient); -webkit-background-clip: text; background-clip: text; color: transparent; text-shadow: 0 0 10px rgba(255, 255, 255, 0.5); padding: 20px; position: relative; transform-style: preserve-3d; animation: rotate3d 6s linear infinite; } @keyframes rotate3d { 0% { transform: rotateX(0deg) rotateY(0deg); } 25% { transform: rotateX(5deg) rotateY(5deg); } 50% { transform: rotateX(0deg) rotateY(10deg); } 75% { transform: rotateX(-5deg) rotateY(5deg); } 100% { transform: rotateX(0deg) rotateY(0deg); } } .lab-link::before { content: ''; position: absolute; top: -2px; left: -2px; right: -2px; bottom: -2px; background: var(--secondary-gradient); background-size: 400% 400%; z-index: -1; filter: blur(10px); opacity: 0; transition: opacity 0.3s ease-in-out; animation: gradientShift 4s ease infinite; border-radius: 15px; } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .lab-link:hover::before { opacity: 0.7; } .lab-link:hover { text-shadow: 0 0 20px rgba(255, 255, 255, 0.8), 0 0 30px rgba(255, 138, 0, 0.5); transform: scale(1.1) rotateX(0deg) rotateY(0deg) !important; animation: none !important; } .lab-number { font-size: 4rem; font-weight: 900; opacity: 0.1; position: absolute; top: 20px; right: 20px; transform: rotate(15deg); pointer-events: none; font-family: 'Arial Black', Arial, sans-serif; color: #ffffff; } .hover-effect { position: absolute; width: 100%; height: 100%; top: 0; left: 0; background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%); opacity: 0; pointer-events: none; transition: opacity 0.3s ease; border-radius: 20px; } .lab-card:hover .hover-effect { opacity: 1; } .lab-card::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 20px; padding: 3px; background: linear-gradient(45deg, #ff00cc, #3333ff, #00ffcc, #ffcc00); background-size: 400% 400%; animation: gradientBorder 4s ease infinite; -webkit-mask: linear-gradient(#fff, #fff) content-box, linear-gradient(#fff, #fff); mask: linear-gradient(#fff, #fff) content-box, linear-gradient(#fff, #fff); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; opacity: 0; transition: opacity 0.3s ease; } .lab-card:hover::after { opacity: 1; } @keyframes gradientBorder { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .lab-card { opacity: 0; transform: translateY(50px) rotateX(30deg); animation: fadeInUp 0.8s ease forwards; } .lab-card:nth-child(1) { animation-delay: 0.1s; } .lab-card:nth-child(2) { animation-delay: 0.2s; } .lab-card:nth-child(3) { animation-delay: 0.3s; } .lab-card:nth-child(4) { animation-delay: 0.4s; } .lab-card:nth-child(5) { animation-delay: 0.5s; } .lab-card:nth-child(6) { animation-delay: 0.6s; } .lab-card:nth-child(7) { animation-delay: 0.7s; } .lab-card:nth-child(8) { animation-delay: 0.8s; } .lab-card:nth-child(9) { animation-delay: 0.9s; } .lab-card:nth-child(10) { animation-delay: 1.0s; } .lab-card:nth-child(11) { animation-delay: 1.1s; } .lab-card:nth-child(12) { animation-delay: 1.2s; } .task-card { position: relative; background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(10px); border-radius: 20px; padding: 30px; text-align: center; transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275); transform-style: preserve-3d; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); border: 1px solid rgba(255, 255, 255, 0.1); overflow: hidden; } .task-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: var(--primary-gradient); opacity: 0; z-index: -1; transition: opacity 0.5s ease; border-radius: 20px; } .task-card:hover::before { opacity: 0.2; } .task-card:hover { transform: translateY(-15px) rotateX(5deg) rotateY(5deg) scale(1.05); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5); } .task-link { display: block; text-decoration: none; font-family: 'Arial Black', Arial, sans-serif; font-size: 1.8rem; font-weight: 700; background: var(--text-gradient); -webkit-background-clip: text; background-clip: text; color: transparent; text-shadow: 0 0 10px rgba(255, 255, 255, 0.5); padding: 20px; position: relative; transform-style: preserve-3d; animation: rotate3d 6s linear infinite; } @keyframes rotate3d { 0% { transform: rotateX(0deg) rotateY(0deg); } 25% { transform: rotateX(5deg) rotateY(5deg); } 50% { transform: rotateX(0deg) rotateY(10deg); } 75% { transform: rotateX(-5deg) rotateY(5deg); } 100% { transform: rotateX(0deg) rotateY(0deg); } } .task-link::before { content: ''; position: absolute; top: -2px; left: -2px; right: -2px; bottom: -2px; background: var(--secondary-gradient); background-size: 400% 400%; z-index: -1; filter: blur(10px); opacity: 0; transition: opacity 0.3s ease-in-out; animation: gradientShift 4s ease infinite; border-radius: 15px; } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .task-link:hover::before { opacity: 0.7; } .task-link:hover { text-shadow: 0 0 20px rgba(255, 255, 255, 0.8), 0 0 30px rgba(255, 138, 0, 0.5); transform: scale(1.1) rotateX(0deg) rotateY(0deg) !important; animation: none !important; } .task-number { font-size: 4rem; font-weight: 900; opacity: 0.1; position: absolute; top: 20px; right: 20px; transform: rotate(15deg); pointer-events: none; font-family: 'Arial Black', Arial, sans-serif; color: #ffffff; } .task-card:hover .hover-effect { opacity: 1; } .task-card::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 20px; padding: 3px; background: linear-gradient(45deg, #ff00cc, #3333ff, #00ffcc, #ffcc00); background-size: 400% 400%; animation: gradientBorder 4s ease infinite; -webkit-mask: linear-gradient(#fff, #fff) content-box, linear-gradient(#fff, #fff); mask: linear-gradient(#fff, #fff) content-box, linear-gradient(#fff, #fff); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; opacity: 0; transition: opacity 0.3s ease; } .task-card:hover::after { opacity: 1; } .task-card { opacity: 0; transform: translateY(50px) rotateX(30deg); animation: fadeInUp 0.8s ease forwards; } .task-card:nth-child(1) { animation-delay: 0.1s; } .task-card:nth-child(2) { animation-delay: 0.2s; } .task-card:nth-child(3) { animation-delay: 0.3s; } .task-card:nth-child(4) { animation-delay: 0.4s; } .task-card:nth-child(5) { animation-delay: 0.5s; } .task-card:nth-child(6) { animation-delay: 0.6s; } .task-card:nth-child(7) { animation-delay: 0.7s; } .task-card:nth-child(8) { animation-delay: 0.8s; } .task-card:nth-child(9) { animation-delay: 0.9s; } .task-card:nth-child(10) { animation-delay: 1.0s; } @keyframes fadeInUp { to { opacity: 1; transform: translateY(0) rotateX(0deg); } } @media (max-width: 768px) { .header h1 { font-size: 2.5rem; } .lab-link, .task-link { font-size: 1.5rem; } .lab-number, .task-number { font-size: 3rem; } } @media (max-width: 480px) { .header h1 { font-size: 2rem; } .lab-link, .task-link { font-size: 1.3rem; padding: 15px; } .container { padding: 15px; margin: 20px auto; } }