diff --git a/css/styles.css b/css/styles.css new file mode 100644 index 0000000..603677d --- /dev/null +++ b/css/styles.css @@ -0,0 +1,681 @@ +@import url('https://fonts.googleapis.com/css2?family=Exo+2:wght@400;700&display=swap'); + +/* root section */ +:root { + --primary-gold: #ffd700; + --secondary-gold: #fca311; + --announcement-height: 48px; + --dark-bg: #121212; + --light-text: #e0e0e0; + --card-bg: #1a1a1a; +} + +/* announcement bar styles - topbar announcement */ +.announcement-bar { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: var(--announcement-height); + display: flex; + align-items: center; + justify-content: center; + z-index: 1100; + background: linear-gradient(90deg, var(--primary-gold), var(--secondary-gold)); + color: #111; + font-weight: 800; + text-transform: uppercase; + letter-spacing: 1px; + box-sizing: border-box; +} +.announcement-bar a { + color: #111; + text-decoration: underline; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + padding: 0; + text-align: center; +} + +@media (max-width: 768px) { + .announcement-bar { + height: calc(var(--announcement-height) - 8px); + font-size: clamp(0.65rem, 2.8vw, 1rem); + padding: 0 8px; + justify-content: center; + letter-spacing: 0.25px; + } + .announcement-bar a { + padding: 0 6px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +} + +/* basic styles */ +html { + scroll-behavior: smooth; +} + +/* accessibility */ +.skip-link { + position: absolute; + left: -9999px; + top: auto; + width: 1px; + height: 1px; + overflow: hidden; +} +.skip-link:focus { + left: 8px; + top: 8px; + width: auto; + height: auto; + padding: 8px 12px; + background: #111; + color: var(--primary-gold); + z-index: 2000; + border-radius: 4px; +} + +:focus { + outline: none; +} + +:focus-visible { + outline: 3px solid var(--primary-gold); + outline-offset: 2px; +} + +body { + font-family: 'Exo 2', sans-serif; + line-height: 1.6; + margin: 0; + padding: 0; + background: var(--dark-bg); + color: var(--light-text); + overflow-x: hidden; +} + +.container { + width: 85%; + margin: auto; + overflow: hidden; +} + +h1, h2, h3 { + font-weight: 700; + text-transform: uppercase; + letter-spacing: 1.5px; + text-align: center; + color: #fff; +} + +/* discord section */ +.discord-section { + margin-top: 2rem; +} + +.discord-embed { + max-width: 100%; + margin: 2rem auto 0; + border-radius: 10px; + overflow: hidden; + box-shadow: 0 10px 30px rgba(0,0,0,0.2); +} + +.discord-embed iframe { + width: 100% !important; + height: 600px !important; + display: block; + border: 0; +} + +/* navbar */ +.navbar { + background: rgba(18, 18, 18, 0.7); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + padding: 1rem 0; + position: fixed; + width: 100%; + top: 0; + z-index: 1000; + transition: background 0.3s ease-in-out; +} + +/* When an announcement bar is visible before the navbar, +offset the navbar */ +.announcement-bar + .navbar { + top: var(--announcement-height); +} + +.navbar .container { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; +} + +.navbar-brand { + display: flex; + align-items: center; + text-decoration: none; + color: #fff; + font-size: 1.7rem; + font-weight: 700; + letter-spacing: 1px; +} + +.logo { + height: 45px; + margin-right: 12px; + transition: transform 0.3s ease; +} + +.navbar-brand:hover .logo { + transform: scale(1.1); +} + +.navbar-nav { + list-style: none; + display: flex; + align-items: center; + margin: 0; + padding: 0; +} + +.navbar-nav li { + margin-left: 25px; +} + +.navbar-nav a { + color: #fff; + text-decoration: none; + text-transform: uppercase; + letter-spacing: 1px; + padding: 10px 15px; + border-radius: 5px; + position: relative; + transition: color 0.3s ease, background-color 0.3s ease; + display: flex; + align-items: center; +} + +.navbar-nav a i { + margin-right: 8px; +} + +.navbar-nav a:hover { + color: var(--dark-bg); + background-color: var(--primary-gold); +} + +.navbar-nav a.btn-primary { + background: linear-gradient(90deg, var(--primary-gold), var(--secondary-gold)); + color: #111; + padding: 10px 20px; + border-radius: 50px; + font-weight: 700; + transition: transform 0.3s ease, box-shadow 0.3s ease, color 0.3s ease; +} + +.navbar-nav a.btn-primary:hover { + transform: none; + box-shadow: 0 2px 4px rgba(252, 163, 17, 0.2); + color: #000; +} + +.navbar-toggler { + display: none; + background: none; + border: none; + color: #fff; + font-size: 1.5rem; + cursor: pointer; +} + +/* main header */ +.main-header { + position: relative; + height: calc(100vh - var(--announcement-height)); + display: flex; + justify-content: center; + align-items: center; + text-align: center; + color: #fff; + padding-top: calc(80px + var(--announcement-height)); + box-sizing: border-box; +} + +.video-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; +} + +.background-video { + min-width: 100%; + min-height: 100%; + width: auto; + height: auto; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + filter: blur(4px) brightness(0.6); + object-fit: cover; +} + +.content-overlay { + z-index: 1; + animation: fadeIn 2s ease-in-out; + text-shadow: 0 2px 20px rgba(0,0,0,0.5); +} + +.content-overlay h1 { + font-size: 5rem; + font-weight: 700; + margin-bottom: 0.5rem; +} + +.content-overlay p { + font-size: 1.6rem; + margin-bottom: 2.5rem; + font-weight: 300; +} + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + background: linear-gradient(90deg, var(--primary-gold), var(--secondary-gold)); + color: #111; + padding: 1rem 2.5rem; + text-decoration: none; + border-radius: 50px; + font-size: 1.2rem; + font-weight: 700; + text-transform: uppercase; + transition: transform 0.3s ease, box-shadow 0.3s ease; + position: relative; + overflow: hidden; + z-index: 1; +} + +.btn i { + margin-right: 10px; + font-size: 1.4rem; +} + +.btn::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: linear-gradient(90deg, var(--secondary-gold), var(--primary-gold)); + transition: transform 0.4s ease; + transform: scaleX(0); + transform-origin: right; + z-index: -1; +} + +.btn:hover { + transform: translateY(-2px); + box-shadow: 0 5px 15px rgba(252, 163, 17, 0.2); +} + +.btn:hover::before { + transform: scaleX(1); + transform-origin: left; +} + +/* sections */ +section { + padding: 5rem 0; + opacity: 0; + transform: translateY(20px); + transition: opacity 0.6s ease-out, transform 0.6s ease-out; +} + +section.visible { + opacity: 1; + transform: translateY(0); +} + +/* features section */ +.features-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + margin-top: 3rem; +} + +.feature-card { + background: var(--card-bg); + padding: 2.5rem 2rem; + border-radius: 10px; + text-align: center; + border: 1px solid rgba(255, 255, 255, 0.1); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.feature-card:hover { + transform: translateY(-5px); + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2), 0 0 15px rgba(255, 215, 0, 0.5); +} + +.feature-card i { + font-size: 3rem; + color: var(--primary-gold); + margin-bottom: 1rem; +} + +.feature-card h3 { + font-size: 1.5rem; + margin-bottom: 0.5rem; +} + + +/* latest pack section */ +.latest-pack-section .pack-content { + display: flex; + align-items: center; + gap: 3rem; + margin-top: 3rem; +} + +.latest-pack-section .pack-info { + flex: 1; + text-align: left; +} + +.latest-pack-section .pack-info p { + font-size: 1.2rem; + margin-bottom: 2rem; +} + +.latest-pack-section .video-wrapper { + flex: 1.5; + position: relative; + padding-bottom: 31.25%; + height: 0; + overflow: hidden; + border-radius: 10px; + box-shadow: 0 10px 30px rgba(0,0,0,0.2); +} + +.latest-pack-section .video-wrapper iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/* about section */ +.about-section { + display: flex; + align-items: center; + gap: 3rem; +} + +.about-content { + flex: 1; +} + +.about-image { + flex: 1; + text-align: center; +} + +.about-image img { + max-width: 80%; + border-radius: 10px; + box-shadow: 0 10px 30px rgba(0,0,0,0.2); +} + +/* staff section */ +.staff-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + margin-top: 3rem; +} + +.staff-card { + background: var(--card-bg); + padding: 2rem; + border-radius: 10px; + text-align: center; + border: 1px solid rgba(255, 255, 255, 0.1); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.staff-card:hover { + transform: translateY(-5px); + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2), 0 0 15px rgba(255, 215, 0, 0.5); +} + +.staff-card img { + width: 100px; + height: auto; + margin-bottom: 1rem; +} + +.staff-card h3 { + font-size: 1.5rem; + margin-bottom: 0.2rem; +} + +/* footer */ +.footer-container { + position: relative; + text-align: center; +} + +.footer-logo-above { + width: 80px; + height: 80px; + border-radius: 50%; + border: 4px solid var(--primary-gold); + background-color: var(--dark-bg); + position: absolute; + top: -40px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} + +.footer { + background: #0a0a0a; + color: #aaa; + text-align: center; + padding: 5rem 0 3rem; + border-top: 1px solid rgba(255, 255, 255, 0.05); + position: relative; + margin-top: 40px; +} + +.social-media { + margin-bottom: 1.5rem; +} + +.social-media a { + color: #aaa; + font-size: 1.8rem; + margin: 0 15px; + transition: color 0.3s ease, transform 0.3s ease; +} + +.social-media a:hover { + color: var(--primary-gold); + transform: translateY(-2px); +} + +.footer p { + margin: 0.5rem 0; +} + +.footer a { + color: var(--primary-gold); + text-decoration: none; + transition: color 0.3s ease; +} + +.footer a:hover { + color: var(--secondary-gold); +} + +/* animations */ +@keyframes fadeIn { + from { opacity: 0; transform: scale(0.95); } + to { opacity: 1; transform: scale(1); } +} + +@media (max-width: 992px) { + .latest-pack-section .pack-content { + flex-direction: column; + } + + .latest-pack-section .pack-info { + text-align: center; + } + + .latest-pack-section .video-wrapper { + width: 100%; + padding-bottom: 56.25%; + } + + .discord-embed iframe { + height: 520px !important; + } +} + +@media(max-width: 768px) { + /* only offset on mobile when an announcement bar exists */ + .announcement-bar + .navbar { + top: calc(var(--announcement-height) - 8px); + } + .navbar-toggler { + display: block; + } + + .navbar-collapse { + display: none; + width: 100%; + } + + .navbar-collapse.active { + display: block; + } + /* extra padding only when announcement bar exists */ + .announcement-bar + .navbar .navbar-collapse.active { + padding-top: var(--announcement-height); + } + + .navbar-nav { + flex-direction: column; + align-items: center; + padding: 1rem 0 0 0; + } + + .navbar-nav li { + margin: 0 0 1rem 0; + } + + .navbar .container { + flex-wrap: wrap; + } + + .about-section { + flex-direction: column; + } + + .content-overlay h1 { + font-size: 3rem; + } + + .content-overlay p { + font-size: 1.3rem; + } + + .discord-embed iframe { + height: 420px !important; + } + .main-header { + height: calc(100vh - (var(--announcement-height) - 8px)); + padding-top: calc(80px + (var(--announcement-height) - 8px)); + box-sizing: border-box; + } +} + +.main-logo { + max-width: 80%; + height: auto; + margin-bottom: 1.5rem; +} + +/* pages w/o without an announcement bar */ +body.no-announcement .navbar { + top: 0; +} +body.no-announcement .main-header { + height: 100vh; + padding-top: 80px; +} +body.no-announcement .navbar-collapse.active { + padding-top: 0; +} + +/* 404 page styles */ +body.page-404 .main-header { + height: auto; + min-height: 60vh; + padding-top: 80px; + padding-bottom: 60px; +} + +body.page-404 .content-overlay .main-logo { + width: clamp(120px, 16vw, 200px); + max-width: none; + margin-bottom: 1rem; +} + +body.page-404 .content-overlay h1 { + font-size: clamp(1.5rem, 2.6vw + 1rem, 2.75rem); + margin: 0.25rem 0 0.5rem; +} + +body.page-404 .content-overlay p { + font-size: clamp(1rem, 1.2vw + 0.8rem, 1.25rem); + margin: 0.5rem 0 1rem; +} + +body.page-404 .btn { + padding: clamp(0.55rem, 1vw, 0.9rem) clamp(1rem, 2vw, 1.6rem); + font-size: clamp(0.95rem, 1vw, 1.05rem); +} + +@media (max-width: 768px) { + body.page-404 .main-header { + padding-top: 70px; + min-height: 70vh; + } + body.page-404 .content-overlay h1 { + font-size: clamp(1.25rem, 4.5vw + 0.5rem, 2rem); + } + body.page-404 .content-overlay p { + font-size: 1rem; + } +}