/* --- Global Variables (Biến màu sắc và font chính) --- */ :root { --bg-dark: #1a1a2e; /* Nền tối sâu */ --primary-neon: #00bcd4; /* Aqua - Màu neon chính, chói lóa */ --secondary-neon: #ff007f; /* Pink - Màu neon phụ, nổi bật */ --accent-glow: #e0f2f7; /* Light Blue - Màu sáng dùng cho hiệu ứng glow */ --text-color: #e0e0e0; /* Màu chữ chính, dễ đọc trên nền tối */ --border-color: #3f4a6e; /* Màu viền cho các module */ --card-bg: #21213e; /* Nền của các module/card */ --hover-bg: #2d2d52; /* Nền khi hover các module/card */ --button-text-dark: #111122; /* Màu chữ cho button nền sáng */ } /* --- Base Styles (Cái này là khung xương, phải đẹp ngay từ đầu) --- */ body { font-family: 'Share Tech Mono', monospace; /* Font chữ chính, nhìn như code trong terminal */ line-height: 1.8; /* Giãn dòng cho dễ đọc */ margin: 0; padding: 0; background-color: var(--bg-dark); /* Nền tối bao trùm */ color: var(--text-color); /* Chữ sáng trên nền tối */ display: flex; flex-direction: column; /* Sắp xếp nội dung theo cột */ min-height: 100vh; /* Đảm bảo trang chiếm hết chiều cao màn hình */ overflow-x: hidden; /* Tránh thanh cuộn ngang khó chịu */ position: relative; /* Để dùng cho hiệu ứng nền */ } /* Hiệu ứng nền glitch/scanline nhẹ nhàng, tạo cảm giác công nghệ */ body::before { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: repeating-linear-gradient( 0deg, rgba(0,0,0,0.05) 0px, rgba(0,0,0,0.05) 1px, transparent 1px, transparent 2px ); pointer-events: none; /* Không chặn click chuột */ z-index: -1; /* Đặt dưới tất cả nội dung */ opacity: 0.1; /* Nhẹ nhàng thôi */ animation: scanline 8s infinite linear; /* Chạy animation liên tục */ } @keyframes scanline { 0% { background-position: 0 0; } 100% { background-position: 0 100%; } } /* --- Header & Navigation (Phần đầu trang, nơi Kinz tỏa sáng) --- */ header { background: linear-gradient(45deg, #1f4287, #21213e); /* Gradient xanh đậm */ color: #fff; padding: 60px 20px 40px; /* Tăng padding-top cho nút ngôn ngữ */ text-align: center; width: 100%; box-shadow: 0 0 25px rgba(0, 200, 255, 0.4); /* Bóng đổ phát sáng */ border-bottom: 2px solid var(--primary-neon); /* Đường kẻ neon dưới header */ position: relative; /* Để nút ngôn ngữ định vị absolute */ z-index: 10; } .header-content { margin-bottom: 25px; } /* Tên Kinz - Hiệu ứng Glow + Flicker */ header h1 { font-family: 'Orbitron', sans-serif; /* Font hầm hố */ margin: 0; font-size: 4.5em; /* Kích thước chữ to đùng */ letter-spacing: 5px; /* Giãn chữ */ text-transform: uppercase; /* Viết hoa hết */ animation: text-flicker 1.5s infinite alternate; /* Hiệu ứng nhấp nháy */ } /* Class cho chữ có hiệu ứng glow */ .glow-text { text-shadow: 0 0 8px var(--primary-neon), 0 0 15px var(--primary-neon), 0 0 25px var(--primary-neon); color: var(--accent-glow); } .glow-text-small { text-shadow: 0 0 5px var(--primary-neon), 0 0 10px var(--primary-neon); color: var(--accent-glow); } /* Dòng tagline bên dưới tên Kinz */ .tagline { font-size: 1.3em; opacity: 0.8; text-shadow: 0 0 5px var(--secondary-neon); /* Bóng đổ màu pink */ } /* Hiệu ứng nhấp nháy cho | */ .blink { animation: blink-effect 1s step-end infinite; } @keyframes blink-effect { 50% { opacity: 0; } } /* Keyframes cho hiệu ứng chữ nhấp nháy */ @keyframes text-flicker { 0%, 19.999%, 22%, 62.999%, 64%, 69.999%, 71%, 100% { text-shadow: 0 0 8px var(--primary-neon), 0 0 15px var(--primary-neon), 0 0 25px var(--primary-neon); color: var(--accent-glow); } 20%, 21.999%, 63%, 63.999%, 70%, 70.999% { text-shadow: none; color: var(--text-color); } } /* Navigation buttons */ .main-nav { display: flex; justify-content: center; flex-wrap: wrap; /* Cho responsive */ gap: 15px; /* Khoảng cách giữa các nút */ margin-top: 25px; } .nav-button { display: inline-block; padding: 15px 30px; background-color: var(--primary-neon); color: var(--button-text-dark); /* Chữ màu tối trên nền neon */ text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 1em; text-transform: uppercase; transition: all 0.3s ease; border: 2px solid var(--primary-neon); box-shadow: 0 0 10px var(--primary-neon); position: relative; overflow: hidden; } .nav-button:hover { background-color: transparent; /* Nền trong suốt khi hover */ color: var(--primary-neon); box-shadow: 0 0 20px var(--primary-neon), 0 0 40px var(--primary-neon); /* Hiệu ứng glow mạnh hơn */ transform: translateY(-3px) scale(1.02); /* Nhấc nhẹ lên và to ra tí */ } .nav-button.active { /* Nút đang hoạt động */ background-color: var(--secondary-neon); /* Màu hồng neon */ border-color: var(--secondary-neon); color: #fff; box-shadow: 0 0 15px var(--secondary-neon), 0 0 30px var(--secondary-neon); } .nav-button:active { /* Khi click */ transform: translateY(1px); } /* --- Language Switcher (Nút chuyển Anh/Việt) --- */ .lang-switcher { position: absolute; top: 20px; right: 20px; z-index: 20; } .small-button { padding: 8px 15px; font-size: 0.9em; border-radius: 4px; background-color: var(--primary-neon); color: var(--button-text-dark); border: 1px solid var(--primary-neon); box-shadow: 0 0 5px var(--primary-neon); transition: all 0.2s ease; cursor: pointer; /* Cho biết là nút có thể click */ } .small-button:hover { background-color: transparent; color: var(--primary-neon); box-shadow: 0 0 10px var(--primary-neon); transform: translateY(-2px); } /* --- Main Content Layout (Bố cục chính của trang) --- */ .container { width: 100%; max-width: 1000px; /* Chiều rộng tối đa của nội dung */ margin: 30px auto; /* Căn giữa */ padding: 0 20px; flex-grow: 1; /* Cho phép main content giãn nở */ } /* --- Module Sections (Các khối nội dung như Dự án, Blog) --- */ .module { background-color: var(--card-bg); padding: 35px; border-radius: 12px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.15), inset 0 0 8px rgba(0, 255, 255, 0.1); margin-bottom: 40px; border: 1px solid var(--border-color); position: relative; overflow: hidden; } /* Hiệu ứng viền phát sáng khi hover module */ .module::before { content: ''; position: absolute; top: -5px; bottom: -5px; left: -5px; right: -5px; background: linear-gradient(45deg, var(--primary-neon), var(--secondary-neon), var(--primary-neon)); z-index: -1; filter: blur(10px); /* Làm mờ hiệu ứng glow */ opacity: 0; transition: opacity 0.5s ease; } .module:hover::before { opacity: 0.4; } /* Tiêu đề của các module */ .module-title { font-family: 'Orbitron', sans-serif; color: var(--primary-neon); font-size: 2.5em; margin-bottom: 30px; text-align: center; text-shadow: 0 0 5px var(--primary-neon), 0 0 10px var(--primary-neon); position: relative; padding-bottom: 10px; } .module-title .icon { font-size: 0.8em; vertical-align: middle; margin-left: 10px; } /* Layout cho các card bên trong module (dự án, bài viết) */ .grid-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); /* Tự động chia cột */ gap: 30px; } /* Các card riêng lẻ */ .module-card { background-color: var(--hover-bg); /* Nền hơi sẫm */ border: 1px solid var(--border-color); padding: 25px; border-radius: 10px; box-shadow: 0 0 15px rgba(0, 255, 255, 0.1); transition: all 0.3s ease; position: relative; overflow: hidden; } /* Hiệu ứng lớp phủ khi hover card */ .module-card::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(circle at center, rgba(0, 255, 255, 0.1) 0%, transparent 70%); opacity: 0; transition: opacity 0.4s ease; pointer-events: none; } .module-card:hover { transform: translateY(-8px) scale(1.03); /* Nhấc lên và to ra */ box-shadow: 0 0 25px rgba(0, 255, 255, 0.4), 0 0 40px rgba(0, 255, 255, 0.2); /* Glow mạnh hơn */ border-color: var(--primary-neon); /* Viền màu neon */ } .module-card:hover::before { opacity: 1; } /* Tiêu đề trong card */ .module-card h3 a, .module-card h4 a { color: var(--primary-neon); text-decoration: none; font-size: 1.8em; margin-bottom: 10px; display: block; text-shadow: 0 0 5px var(--primary-neon); transition: color 0.3s ease; } .module-card h3 a:hover, .module-card h4 a:hover { color: var(--accent-glow); text-shadow: 0 0 8px var(--accent-glow); } /* Hiệu ứng gạch chân phát sáng cho link */ .link-glow { position: relative; } .link-glow::after { content: ''; position: absolute; left: 0; bottom: -5px; width: 100%; height: 2px; background: linear-gradient(90deg, var(--primary-neon), var(--secondary-neon)); transform: scaleX(0); /* Ban đầu ẩn */ transform-origin: bottom right; transition: transform 0.3s ease-out; } .link-glow:hover::after { transform: scaleX(1); /* Hiện ra khi hover */ transform-origin: bottom left; } .module-card p { color: var(--text-color); opacity: 0.8; } /* Hiển thị số lượng bài viết */ .post-count { font-size: 1.2em; text-align: center; margin-bottom: 30px; color: var(--accent-glow); text-shadow: 0 0 5px var(--primary-neon); } .neon-number { /* Số 10 màu neon */ font-size: 1.5em; font-weight: bold; color: var(--secondary-neon); text-shadow: 0 0 10px var(--secondary-neon), 0 0 20px var(--secondary-neon); } /* Vị trí cho nút action (Xem tất cả bài viết) */ .action-area { text-align: center; margin-top: 30px; } .action-button { display: inline-block; padding: 15px 35px; background-color: var(--secondary-neon); /* Màu hồng neon */ color: #fff; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 1.1em; text-transform: uppercase; transition: all 0.3s ease; border: 2px solid var(--secondary-neon); box-shadow: 0 0 12px var(--secondary-neon); cursor: pointer; /* Cho biết là nút click được */ } .action-button:hover { background-color: transparent; color: var(--secondary-neon); box-shadow: 0 0 20px var(--secondary-neon), 0 0 40px var(--secondary-neon); transform: translateY(-3px); } .action-button .icon { margin-left: 10px; } /* Dành riêng cho trang posts.html */ .blog-full-list .post-preview .post-date { display: block; font-size: 0.85em; color: #888; margin-top: 10px; } /* --- Footer (Phần cuối trang) --- */ footer { margin-top: auto; /* Đẩy footer xuống cuối trang */ text-align: center; color: #aaa; font-size: 0.9em; width: 100%; padding: 25px; border-top: 1px solid var(--border-color); background-color: #111122; /* Nền footer hơi tối hơn */ box-shadow: 0 0 15px rgba(0, 188, 212, 0.2); position: relative; z-index: 9; } footer a { color: var(--primary-neon); text-decoration: none; transition: color 0.3s ease; } footer a:hover { color: var(--accent-glow); } /* Audio control button */ .audio-control { margin-top: 20px; } .audio-control button { background-color: #4CAF50; /* Green */ border: none; color: white; padding: 10px 20px; text-align: center; text-decoration: none; display: inline-block; font-size: 1em; border-radius: 5px; cursor: pointer; transition: background-color 0.3s ease; } .audio-control button:hover { background-color: #45a049; } /* --- Module fade-in effect (Hiệu ứng xuất hiện từ dưới lên) --- */ .hidden-module { opacity: 0; transform: translateY(20px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; } .fade-in { opacity: 1; transform: translateY(0); } /* --- Responsive Design (Chỉnh cho đẹp trên mọi thiết bị) --- */ @media (max-width: 768px) { header { padding-top: 80px; /* Tăng padding trên để nút ngôn ngữ không bị đè */ } .lang-switcher { top: 15px; right: 15px; } header h1 { font-size: 3.5em; } .tagline { font-size: 1em; } .main-nav { flex-direction: column; /* Nút nav xếp chồng lên nhau */ gap: 10px; } .nav-button { width: 90%; /* Chiếm gần hết chiều rộng */ margin: 0 auto; /* Căn giữa */ } .module-title { font-size: 2em; } .module-card h3 a, .module-card h4 a { font-size: 1.4em; } } @media (max-width: 480px) { header { padding-top: 70px; } header h1 { font-size: 2.5em; letter-spacing: 2px; } .nav-button { width: 95%; /* Gần full width */ padding: 12px 20px; } .module { padding: 25px; } .module-title { font-size: 1.8em; } .grid-container { grid-template-columns: 1fr; /* 1 cột duy nhất */ } }