shiloh-echo/css/styles.css
2026-07-03 21:51:46 -07:00

4501 lines
78 KiB
CSS

:root {
--text-color: #4a3b34;
--text-muted: #8a7268;
--accent: #3a6b5e;
--accent-dark: #2d5448;
--accent-light: #5a9384;
--bg-light: #fff5ec;
--bg-surface: #f5e4cf;
--bg-surface-2: #ede0cc;
--color-primary: #3a6b5e;
--color-primary-dark: #2d5448;
--color-button: #34a85a;
--color-button-dark: #2d8a4a;
--color-white: #ffffff;
--color-dark: #1f342c;
--color-link: #3a8a9e;
--color-link-dark: #2c6d7e;
--color-gold: #c8a24a;
--color-gold-dark: #a8852e;
--color-gold-light: #e0c068;
--font-display: "FiraSans", Arial, Helvetica, sans-serif;
--header-h: 64px;
}
/* ---------- Preloader ---------- */
.preloader {
position: fixed;
inset: 0;
z-index: 9999;
background: var(--color-dark);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 24px;
transition: opacity 0.6s ease, visibility 0.6s ease;
}
.preloader--done {
opacity: 0;
visibility: hidden;
pointer-events: none;
}
.preloader__sigil {
position: relative;
width: 80px;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
font-size: 2.5rem;
color: var(--color-gold);
z-index: 1;
animation: sigil-glow 1.8s ease-in-out infinite;
text-shadow: 0 0 20px rgba(200, 162, 74, 0.6), 0 0 40px rgba(200, 162, 74, 0.3);
}
@keyframes sigil-glow {
0%, 100% {
transform: scale(1);
text-shadow: 0 0 20px rgba(200, 162, 74, 0.5), 0 0 40px rgba(200, 162, 74, 0.2);
opacity: 0.85;
}
50% {
transform: scale(1.08);
text-shadow: 0 0 30px rgba(200, 162, 74, 0.8), 0 0 60px rgba(200, 162, 74, 0.4);
opacity: 1;
}
}
.preloader__ring {
position: absolute;
width: 120px;
height: 120px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: var(--color-gold);
border-bottom-color: var(--color-gold);
animation: ring-spin 1.2s linear infinite;
opacity: 0.6;
}
@keyframes ring-spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.preloader__text {
font-family: var(--font-display);
color: var(--color-gold-light);
font-size: 1.2rem;
font-weight: 700;
letter-spacing: 0.15em;
text-transform: uppercase;
margin: 0;
opacity: 0;
animation: text-fade-in 0.8s ease 0.3s forwards;
}
@keyframes text-fade-in {
0% { opacity: 0; transform: translateY(10px); }
100% { opacity: 0.8; transform: translateY(0); }
}
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
margin: 0;
padding: 0;
background: var(--bg-light);
font-family: "FiraSans", Arial, Helvetica, sans-serif;
scroll-behavior: smooth;
}
img {
max-width: 100%;
height: auto;
}
[id] {
scroll-margin-top: calc(var(--header-h) + 16px);
}
@font-face {
font-family: "FiraSans";
src: url("/assets/FiraSans-Regular.ttf") format("truetype");
}
/* ---------- Medieval theme base ---------- */
h1, h2, h3, h4, h5, h6 {
font-family: var(--font-display);
}
.eyebrow,
.badge__label,
.activity__badge,
.session__label,
.countdown-fun__label,
.giveaway__eyebrow,
.hero__popup-tag,
.speaker__tag {
font-family: var(--font-display);
text-transform: uppercase;
letter-spacing: 0.12em;
}
/* Parchment texture overlay utility */
.parchment {
position: relative;
}
.parchment::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
opacity: 0.4;
border-radius: inherit;
background-image:
radial-gradient(ellipse at 20% 30%, rgba(138, 114, 104, 0.06) 0%, transparent 50%),
radial-gradient(ellipse at 80% 70%, rgba(138, 114, 104, 0.05) 0%, transparent 50%),
radial-gradient(ellipse at 50% 50%, rgba(200, 162, 74, 0.03) 0%, transparent 60%);
}
/* Ornamental section divider */
.divider-ornament {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
width: 100%;
max-width: 300px;
margin: 0 auto;
color: var(--color-gold);
font-size: 1.2rem;
}
.divider-ornament::before,
.divider-ornament::after {
content: "";
flex: 1;
height: 1px;
background: linear-gradient(90deg, transparent, var(--color-gold), transparent);
}
/* ---------- Sound toggle ---------- */
/* ---------- Quest badge ---------- */
.quest-badge--pulse {
animation: quest-pulse 0.5s ease;
}
@keyframes quest-pulse {
0% { transform: scale(1); }
50% { transform: scale(1.2); }
100% { transform: scale(1); }
}
/* ---------- Achievement toast ---------- */
.achievement-toast {
position: fixed;
top: 80px;
left: 50%;
transform: translateX(-50%) translateY(-80px);
z-index: 5000;
background: var(--color-dark);
border: 2px solid var(--color-gold);
border-radius: 12px;
padding: 14px 24px;
display: flex;
align-items: center;
gap: 14px;
color: var(--color-white);
box-shadow: 0 8px 32px rgba(200, 162, 74, 0.3);
opacity: 0;
transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.4s ease;
pointer-events: none;
}
.achievement-toast--show {
transform: translateX(-50%) translateY(0);
opacity: 1;
}
.achievement-toast__icon {
width: 40px;
height: 40px;
border-radius: 50%;
background: var(--color-gold);
color: var(--color-dark);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.2rem;
flex: 0 0 auto;
}
.achievement-toast__body {
display: flex;
flex-direction: column;
gap: 2px;
}
.achievement-toast__label {
font-size: 0.65rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--color-gold-light);
font-weight: 700;
}
.achievement-toast__name {
font-size: 1rem;
font-weight: 700;
color: var(--color-white);
}
@media (max-width: 600px) {
.achievement-toast {
top: 72px;
padding: 10px 14px;
gap: 10px;
max-width: calc(100vw - 24px);
left: 12px;
transform: translateY(-80px);
font-size: 0.85rem;
}
.achievement-toast--show {
transform: translateY(0);
}
.achievement-toast__name { font-size: 0.8rem; }
.achievement-toast__label { font-size: 0.6rem; }
.achievement-toast__icon { width: 32px; height: 32px; font-size: 0.9rem; }
}
/* ---------- Parchment notes ---------- */
.parchment-notes {
position: absolute;
inset: 0;
z-index: 1;
pointer-events: none;
overflow: hidden;
transition: opacity 2s ease;
}
.parchment-notes--done {
opacity: 0;
}
.parchment-note {
position: absolute;
top: 100%;
left: var(--note-x);
background: var(--bg-surface);
color: var(--text-color);
padding: 6px 14px;
border-radius: 6px;
border: 1px solid var(--color-gold);
font-size: 0.8rem;
font-weight: 600;
white-space: nowrap;
pointer-events: auto;
cursor: pointer;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
opacity: 0;
animation: note-float 16s ease-in-out forwards;
animation-delay: var(--note-delay);
}
@keyframes note-float {
0% { top: 100%; opacity: 0; transform: rotate(-2deg) scale(0.8); }
8% { opacity: 0.9; transform: rotate(-2deg) scale(1); }
85% { opacity: 0.9; }
100% { top: 5%; opacity: 0; transform: rotate(2deg) scale(0.8); }
}
.parchment-note--pop {
animation: note-pop 0.6s ease;
}
@keyframes note-pop {
0% { transform: scale(1); }
50% { transform: scale(1.2) rotate(-5deg); }
100% { transform: scale(1); }
}
/* ---------- Night theme ---------- */
.theme--night {
--bg-light: #1a2a22;
--bg-surface: #233530;
--bg-surface-2: #2a3f38;
--text-color: #e0d8cc;
--text-muted: #a8998a;
--color-dark: #0f1a14;
background: #1a2a22;
}
.theme--night .bg--teal {
background: #152620;
}
.theme--night .bg--light {
background: #1a2a22;
}
.theme--night .hero {
background: #0f1a14;
}
/* ---------- Scroll reveal ---------- */
[data-reveal] {
opacity: 0;
transform: translateY(30px);
transition: opacity 0.7s ease, transform 0.7s ease;
}
[data-reveal].is-revealed {
opacity: 1;
transform: translateY(0);
}
[data-reveal="fade"] {
transform: none;
}
[data-reveal="slide-left"] {
transform: translateX(-50px);
}
[data-reveal="slide-right"] {
transform: translateX(50px);
}
[data-reveal="scale"] {
transform: scale(0.9);
}
[data-reveal="scale"].is-revealed {
transform: scale(1);
}
[data-reveal-delay="1"] { transition-delay: 0.1s; }
[data-reveal-delay="2"] { transition-delay: 0.2s; }
[data-reveal-delay="3"] { transition-delay: 0.3s; }
[data-reveal-delay="4"] { transition-delay: 0.4s; }
[data-reveal-delay="5"] { transition-delay: 0.5s; }
[data-reveal-delay="6"] { transition-delay: 0.6s; }
[data-reveal-delay="7"] { transition-delay: 0.7s; }
[data-reveal-delay="8"] { transition-delay: 0.8s; }
@media (prefers-reduced-motion: reduce) {
[data-reveal] {
opacity: 1;
transform: none;
transition: none;
}
}
/* ---------- Cursor effects ---------- */
.cursor-spark {
position: fixed;
border-radius: 50%;
pointer-events: none;
z-index: 9998;
transform: translate(-50%, -50%);
animation: spark-fade 0.8s ease-out forwards;
}
@keyframes spark-fade {
0% {
opacity: 1;
transform: translate(-50%, -50%) scale(1);
}
50% {
opacity: 0.7;
transform: translate(-50%, -50%) scale(0.6) translateY(-8px);
}
100% {
opacity: 0;
transform: translate(-50%, -50%) scale(0.2) translateY(-18px);
}
}
.cursor-ring {
position: fixed;
width: 12px;
height: 12px;
border: 2px solid rgba(200, 162, 74, 0.8);
border-radius: 50%;
pointer-events: none;
z-index: 9998;
transform: translate(-50%, -50%);
animation: ring-expand 0.7s ease-out forwards;
}
@keyframes ring-expand {
0% {
width: 12px;
height: 12px;
opacity: 1;
border-width: 2px;
}
100% {
width: 60px;
height: 60px;
opacity: 0;
border-width: 1px;
}
}
/* ---------- Layout utilities ---------- */
.container {
display: flex;
flex-wrap: wrap;
width: 100%;
max-width: 1200px;
margin: 0 auto;
}
.row {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-evenly;
align-items: center;
gap: 16px;
margin: 10px;
padding: 10px;
text-align: center;
border-radius: 5px;
}
.row--items {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-evenly;
align-items: center;
gap: 50px;
margin: 10px;
}
.column {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 100%;
padding: 60px 16px;
text-align: center;
min-height: 80vh;
}
.cell {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-evenly;
align-items: center;
flex: 1 1 0;
margin: 10px;
padding: 20px;
}
.cell--left {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-evenly;
align-items: flex-start;
flex: 1 1 0;
margin: 10px;
padding: 20px;
}
.cell--left img {
margin: auto;
display: block;
}
.col {
flex: 1;
padding: 1rem;
}
.sticky-bar {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
display: none;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
gap: 8px;
background: var(--color-dark);
border-top: 1px solid var(--color-gold);
z-index: 1001;
padding: 8px 12px;
box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.3);
transform: translateY(100%);
transition: transform 0.3s ease;
}
.sticky-bar.is-visible {
display: flex;
transform: translateY(0);
}
@media (min-width: 961px) {
.sticky-bar {
display: none !important;
}
}
.sticky-bar__info {
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
overflow: hidden;
}
.sticky-bar__label {
color: var(--color-gold-light);
font-weight: 700;
font-size: 0.7rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.sticky-bar__countdown {
color: var(--color-white);
font-size: 0.72rem;
white-space: nowrap;
font-variant-numeric: tabular-nums;
}
.sticky-bar__actions {
display: flex;
align-items: center;
gap: 6px;
flex: 0 0 auto;
}
.sticky-bar__btn {
width: 36px;
height: 36px;
border-radius: 50%;
border: 1px solid var(--color-gold);
background: transparent;
color: var(--color-gold);
font-size: 0.85rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
flex: 0 0 auto;
transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
}
.sticky-bar__btn:hover {
background: var(--color-gold);
color: var(--color-dark);
transform: scale(1.08);
}
.sticky-bar__cta {
margin: 0;
padding: 0.5rem 1rem;
font-size: 0.8rem;
white-space: nowrap;
flex: 0 0 auto;
}
.sticky-bar .quest-badge {
position: static;
transform: none;
width: 36px;
height: 36px;
border-radius: 50%;
border: 1px solid var(--color-gold);
background: transparent;
opacity: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 1px;
transition: transform 0.2s ease;
}
.sticky-bar .quest-badge--visible {
opacity: 1;
transform: none;
}
.sticky-bar .quest-badge--pulse {
animation: quest-pulse 0.5s ease;
}
.sticky-bar .quest-badge__icon {
font-size: 0.75rem;
color: var(--color-gold);
}
.sticky-bar .quest-badge__count {
font-size: 0.5rem;
color: var(--color-gold-light);
}
.sticky-bar .attendee-counter {
position: static;
background: transparent;
border: none;
border-radius: 0;
padding: 0;
gap: 6px;
box-shadow: none;
}
.sticky-bar .attendee-counter i {
font-size: 0.9rem;
color: var(--color-gold);
}
.sticky-bar .attendee-counter__body {
display: flex;
flex-direction: column;
line-height: 1;
}
.sticky-bar .attendee-counter__number {
font-size: 0.8rem;
font-weight: 800;
color: var(--color-gold-light);
}
.sticky-bar .attendee-counter__label {
font-size: 0.5rem;
color: rgba(255, 255, 255, 0.6);
}
@media (max-width: 400px) {
.sticky-bar .attendee-counter {
display: none;
}
}
/* ---------- Backgrounds ---------- */
.bg--teal { background: var(--accent); }
.bg--fireworks { background: #c4707c; }
.bg--sapphire { background: #3a8a9e; }
.bg--gold { background: #c89858; }
.bg--silver { background: #8a7268; }
.bg--bronze { background: #a87544; }
.bg--light { background: var(--bg-light); }
.bg--green { background: var(--accent-dark); }
/* ---------- Hero ---------- */
.hero {
position: relative;
width: 100%;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
background: url("https://lasthourcloud.b-cdn.net/assets/BACKGROUND.webp") center no-repeat;
background-size: cover;
background-position: center;
}
.hero__image {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
z-index: 0;
transform: scale(1.1);
filter: blur(30px) brightness(0.3) contrast(0.8) saturate(0.5);
opacity: 0;
animation: hero-mist-reveal 3.5s cubic-bezier(0.16, 1, 0.3, 1) 1.8s forwards;
}
@keyframes hero-mist-reveal {
0% {
opacity: 0;
transform: scale(1.1) translateY(20px);
filter: blur(30px) brightness(0.2) contrast(0.7) saturate(0.3);
}
30% {
opacity: 0.4;
filter: blur(18px) brightness(0.4) contrast(0.8) saturate(0.4);
}
60% {
opacity: 0.7;
transform: scale(1.04) translateY(6px);
filter: blur(8px) brightness(0.6) contrast(0.9) saturate(0.6);
}
85% {
opacity: 0.9;
filter: blur(2px) brightness(0.85) contrast(0.98) saturate(0.85);
}
100% {
opacity: 1;
transform: scale(1) translateY(0);
filter: blur(0) brightness(1) contrast(1) saturate(1);
}
}
.hero__overlay {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(0.9);
z-index: 200;
text-align: center;
padding: 36px 28px 28px;
max-width: 560px;
width: calc(100% - 48px);
background: rgba(67, 120, 107, 0.95);
border-radius: 16px;
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity 0.4s ease, transform 0.4s ease, visibility 0.4s;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
}
.hero__popup--open {
opacity: 1;
visibility: visible;
pointer-events: auto;
transform: translate(-50%, -50%) scale(1);
}
.hero__popup-close {
position: absolute;
top: 12px;
right: 12px;
width: 36px;
height: 36px;
border-radius: 50%;
border: none;
background: rgba(255, 255, 255, 0.2);
color: var(--color-white);
font-size: 1.1rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s ease;
z-index: 2;
}
.hero__popup-close:hover {
background: rgba(255, 255, 255, 0.4);
}
.hero__popup-tag {
display: inline-block;
background: var(--color-primary);
color: var(--color-white);
font-weight: 800;
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 0.08em;
padding: 5px 14px;
border-radius: 20px;
margin-bottom: 14px;
}
.hero__popup-backdrop {
position: fixed;
inset: 0;
z-index: 199;
background: rgba(0, 0, 0, 0.6);
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity 0.4s ease, visibility 0.4s;
}
.hero__popup-backdrop--open {
opacity: 1;
visibility: visible;
pointer-events: auto;
}
.hero__title {
color: var(--color-white);
font-size: clamp(2rem, 5vw, 3.5rem);
font-weight: 800;
line-height: 1.15;
margin: 0 0 12px;
text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
letter-spacing: 0.02em;
}
.hero__title .fw-bold {
color: var(--color-gold-light);
}
.hero__subtitle {
color: var(--color-white);
font-size: clamp(1rem, 2vw, 1.3rem);
margin: 0 0 12px;
letter-spacing: 0.04em;
}
.hero__value-prop {
color: rgba(255, 255, 255, 0.9);
font-size: clamp(0.95rem, 1.5vw, 1.1rem);
margin: 0 0 28px;
line-height: 1.5;
}
.hero__ctas {
display: flex;
flex-wrap: wrap;
gap: 16px;
justify-content: center;
margin-bottom: 16px;
}
.hero__cta {
margin: 0;
font-size: 1.1rem;
padding: 1rem 2.5rem;
}
.hero__cta--primary {
box-shadow: 0 4px 16px rgba(52, 168, 90, 0.4);
}
.hero__microcopy {
color: rgba(255, 255, 255, 0.8);
font-size: 0.85rem;
margin: 0;
}
.hero__scroll {
position: absolute;
bottom: 24px;
left: 50%;
transform: translateX(-50%);
z-index: 1;
color: var(--color-white);
font-size: 1.5rem;
text-decoration: none;
animation: bounce 2s ease-in-out infinite;
}
@keyframes bounce {
0%, 100% { transform: translateX(-50%) translateY(0); }
50% { transform: translateX(-50%) translateY(8px); }
}
/* ---------- Fun Countdown ---------- */
.countdown-fun {
width: 100%;
padding: 64px 24px 80px;
background: var(--bg-light);
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 20px;
position: relative;
}
.countdown-fun__heading {
font-size: clamp(1.6rem, 4vw, 2.6rem);
font-weight: 700;
color: var(--text-color);
margin: 0;
line-height: 1.15;
letter-spacing: 0.02em;
}
.countdown-fun__heading .fw-bold {
color: var(--color-gold-dark);
}
.countdown-fun__icon {
font-size: 3rem;
color: var(--accent);
margin-bottom: 4px;
}
.countdown-fun__sub {
font-size: 1.05rem;
color: var(--text-muted);
margin: 0;
transition: opacity 0.4s ease;
min-height: 1.6em;
}
.countdown-fun__board {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
justify-content: center;
opacity: 0;
transform: translateY(20px);
transition: opacity 0.6s ease, transform 0.6s ease;
}
.countdown-fun__board--animate {
opacity: 1;
transform: translateY(0);
}
.countdown-fun__unit {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
background: var(--bg-surface);
border: 2px solid var(--color-gold);
border-radius: 14px;
padding: 18px 20px;
min-width: 90px;
box-shadow: 0 4px 12px rgba(200, 162, 74, 0.15);
}
.countdown-fun__number {
font-size: clamp(2rem, 6vw, 3rem);
font-weight: 800;
color: var(--color-gold-dark);
font-variant-numeric: tabular-nums;
line-height: 1;
font-family: var(--font-display);
}
.countdown-fun__label {
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--text-muted);
font-weight: 700;
}
.countdown-fun__sep i {
font-size: 1.2rem;
color: var(--accent);
opacity: 0.5;
}
.countdown-fun__cta {
margin-top: 8px;
font-size: 1.1rem;
padding: 1rem 2.5rem;
box-shadow: 0 4px 20px rgba(52, 168, 90, 0.4);
}
@media (max-width: 600px) {
.countdown-fun__unit {
min-width: 70px;
padding: 14px 12px;
}
.countdown-fun__sep {
display: none;
}
}
/* ---------- Video section ---------- */
.video-section {
width: 100%;
background: var(--bg-light);
padding: 80px 24px;
text-align: center;
}
.video-section__title {
margin-bottom: 32px;
}
.video-section__wrap {
position: relative;
width: 100%;
max-width: 800px;
margin: 0 auto;
aspect-ratio: 16 / 9;
}
.video-section__wrap video,
.video-section__wrap iframe {
width: 100%;
height: 100%;
border-radius: 12px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
}
.bg-video {
position: relative;
overflow: hidden;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.bg-video::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0);
z-index: -1;
}
.bg-video video {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
min-width: 100%;
min-height: 100%;
z-index: -1;
filter: blur(7px);
}
.bg-video__media {
width: 100%;
height: 100%;
object-fit: cover;
}
.bg-video--main {
/* variant hook for main video sections */
}
/* ---------- Typography ---------- */
h1,
h2 {
color: var(--text-color);
text-align: center;
position: relative;
z-index: 1;
font-size: clamp(1.75rem, 3vw + 1rem, 3rem);
font-weight: 100;
line-height: 1.2;
}
h3,
h4 {
color: var(--text-color);
text-align: center;
position: relative;
z-index: 1;
font-size: clamp(1.125rem, 1.5vw + 0.75rem, 1.5rem);
font-weight: 100;
line-height: 1.3;
}
p,
ul,
ol,
td,
li,
cite {
word-break: normal;
color: var(--text-color);
text-align: left;
max-width: 1000px;
margin: 15px;
line-height: 1.6;
}
p {
font-size: clamp(1rem, 0.5vw + 0.9rem, 1.25rem);
}
.text--white { color: var(--color-white); }
.text--muted { color: var(--text-muted); }
.fw-bold { font-weight: 900; }
.fw-thin { font-weight: 100; }
.fs-italic { font-style: italic; }
.u-underline {
text-decoration: underline;
text-decoration-color: var(--color-gold);
text-decoration-thickness: 3px;
text-underline-offset: 4px;
}
.u-text-sm { font-size: small; }
.u-text-lg { font-size: larger; }
.u-text-xl { font-size: clamp(2rem, 4vw, 3.5rem); }
.u-break-all { word-break: break-all; }
.u-no-space { padding: 1px; margin: 0; }
/* ---------- Links ---------- */
a {
color: var(--color-white);
text-decoration: none;
text-align: left;
margin: 0 auto;
padding: 5px;
transition: color 0.3s ease;
}
.link {
color: var(--color-white);
text-decoration: none;
text-align: left;
margin: 0 auto;
padding: 0;
transition: color 0.3s ease;
}
.link:hover,
a:hover {
color: var(--color-link);
}
.link--dark {
color: var(--color-link-dark);
}
/* ---------- Buttons ---------- */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 20px;
color: var(--color-white);
cursor: pointer;
flex: 0 0 auto;
font-family: Inter, sans-serif;
font-size: clamp(1rem, 0.5vw + 0.9rem, 1.25rem);
font-weight: 700;
line-height: 1;
margin: 1rem;
outline: none;
text-align: center;
text-decoration: none;
white-space: nowrap;
user-select: none;
touch-action: manipulation;
padding: 1rem 3rem;
height: fit-content;
position: relative;
z-index: 1;
background-color: var(--color-button);
transition: transform 0.2s ease, color 0.3s ease, background-color 0.2s ease;
}
.btn:hover {
transform: scale(1.05);
color: var(--color-white);
background-color: var(--color-button-dark);
}
.btn--primary {
background-color: var(--color-button);
}
.btn--primary:hover {
background-color: var(--color-button-dark);
}
.btn--outline {
background-color: transparent;
border: 2px solid var(--color-white);
color: var(--color-white);
}
.btn--outline:hover {
background-color: var(--color-white);
color: var(--accent);
border-color: var(--color-white);
}
.btn:focus-visible,
a:focus-visible {
outline: 3px solid var(--color-link);
outline-offset: 2px;
}
/* ---------- Cards ---------- */
.card {
max-width: 320px;
text-align: center;
margin: 10px;
display: flex;
flex-direction: column;
justify-content: space-between;
background: transparent;
border-radius: 8px;
overflow: hidden;
}
.card__title {
color: grey;
font-size: 18px;
}
.card > a {
text-decoration: none;
font-size: 22px;
color: #000;
}
.card > img {
border-radius: 35px 5px 5px 5px;
max-width: 100%;
max-height: 300px;
object-fit: cover;
}
/* ---------- Utilities: effects ---------- */
.u-shadow {
box-shadow: 6.4px 12.8px 12.8px hsl(0deg 0% 0% / 0.3);
}
.is-blinking {
animation: blinker 2s linear infinite;
font-size: larger;
}
.is-floating {
animation: floatUpDown 1.2s ease-in-out infinite;
}
@keyframes blinker {
50% { opacity: 0; }
}
@keyframes floatUpDown {
0% { transform: translateY(0); }
50% { transform: translateY(-10px); }
100% { transform: translateY(0); }
}
/* ---------- Navigation ---------- */
header {
padding: 0;
margin: 0;
position: sticky;
top: 0;
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
z-index: 10;
}
main {
flex: 1;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
align-items: flex-start;
}
.nav {
display: flex;
width: 100%;
justify-content: space-between;
align-items: center;
padding: 1rem;
margin: 0;
position: relative;
background: var(--accent);
}
.logo {
color: var(--color-white);
font-size: 24px;
display: flex;
justify-content: center;
align-items: center;
}
.nav__menu {
display: flex;
list-style: none;
margin: 0;
padding: 0;
}
.nav__item {
font-size: 18px;
position: relative;
transition: all 0.2s;
color: var(--color-white);
margin: 0 10px;
cursor: pointer;
}
.nav__item::before {
content: "";
position: absolute;
width: 0%;
height: 1px;
bottom: -2px;
left: 0;
background-color: var(--color-white);
transition: all 0.2s;
z-index: 1;
}
.nav__item:hover::before {
width: 100%;
}
.nav__cta {
padding: 0.5rem 1.5rem;
font-size: 0.95rem;
margin: 0;
}
.nav__item:has(.nav__cta)::before {
display: none;
}
.nav__toggle {
display: none;
}
/* ---------- Footer ---------- */
footer {
color: var(--text-color);
background-color: var(--accent);
text-align: center;
padding: 1rem;
margin-bottom: 90px;
flex: 1;
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
}
/* ---------- Progress bar ---------- */
.progress {
margin: 0 auto;
width: 65%;
max-width: 600px;
height: 50px;
border-radius: 10px;
text-align: center;
box-shadow: inset 0 0 10px var(--bg-surface-2);
}
.progress__bar {
height: 50px;
border-radius: 10px;
float: left;
width: 5%;
background: linear-gradient(to bottom, #1c314a, #27425f);
animation: progress-fill 2s ease forwards;
}
@keyframes progress-fill {
from { width: 2%; }
to { width: 5%; }
}
.progress__raised,
.progress__goal {
font-family: Arial, sans-serif;
font-size: 2em;
font-weight: 600;
line-height: 50px;
margin: 0;
padding: 0;
text-align: center;
display: inline;
}
.progress__raised {
color: #fff;
margin: 14px 25px 0 50px;
padding: 0 25px 0 0;
animation: fadein 4s;
}
.progress__goal {
color: var(--text-muted);
float: right;
padding: 0 25px 0 0;
}
@keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
/* ---------- Donate ---------- */
.donate {
width: 100%;
padding: 80px 24px;
}
.donate__inner {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 48px;
max-width: 1100px;
margin: 0 auto;
align-items: center;
}
.donate__title {
color: var(--color-white);
font-size: clamp(1.75rem, 4vw, 2.5rem);
margin: 0 0 16px;
}
.donate__lead {
color: rgba(255, 255, 255, 0.9);
font-size: 1.05rem;
line-height: 1.6;
margin: 0 0 24px;
}
.donate__partner-link {
display: inline-block;
margin: 0 0 4px;
}
.donate__partner-logo {
max-height: 100px;
width: auto;
}
.donate__partner-name {
color: rgba(255, 255, 255, 0.7);
font-size: 0.9rem;
margin: 0 0 24px;
}
.donate__progress-wrap {
margin: 0 0 28px;
}
.donate__progress-labels {
display: flex;
justify-content: space-between;
margin-bottom: 8px;
}
.donate__progress-current,
.donate__progress-goal {
color: var(--color-white);
font-size: 0.85rem;
font-weight: 700;
}
.donate__progress-track {
position: relative;
width: 100%;
height: 24px;
background: rgba(255, 255, 255, 0.15);
border-radius: 12px;
overflow: hidden;
}
.donate__progress-fill {
height: 100%;
width: 0;
border-radius: 12px;
background: linear-gradient(90deg, var(--color-primary), var(--accent-light));
transition: width 1.5s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 0 12px rgba(52, 168, 90, 0.5);
}
.donate__progress-milestones {
position: absolute;
inset: 0;
display: flex;
align-items: center;
pointer-events: none;
}
.donate__milestone {
position: absolute;
font-size: 0.65rem;
color: rgba(255, 255, 255, 0.5);
transform: translateX(-50%);
}
.donate__stats {
display: flex;
gap: 16px;
margin: 0 0 24px;
}
.donate__stat {
flex: 1;
text-align: center;
background: rgba(255, 255, 255, 0.1);
border-radius: 12px;
padding: 16px 8px;
display: flex;
flex-direction: column;
gap: 4px;
transition: transform 0.2s ease, background 0.2s ease;
}
.donate__stat:hover {
transform: translateY(-3px);
background: rgba(255, 255, 255, 0.18);
}
.donate__stat-number {
color: var(--color-white);
font-size: 1.5rem;
font-weight: 800;
}
.donate__stat-label {
color: rgba(255, 255, 255, 0.7);
font-size: 0.75rem;
}
.donate__cta {
margin: 4px 0;
}
.donate__video {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.donate__video-title {
color: var(--color-white);
margin: 0;
}
.donate__video-wrap {
width: 100%;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}
.donate__video-wrap video {
width: 100%;
height: auto;
display: block;
}
/* ---------- Speakers ---------- */
.speakers {
width: 100%;
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 32px;
}
.speakers__title {
text-align: center;
font-style: italic;
margin: 0;
}
.speakers__intro {
text-align: center;
max-width: 700px;
font-size: 1.05rem;
line-height: 1.6;
margin: 0;
}
.speakers__filters {
display: flex;
gap: 8px;
flex-wrap: wrap;
justify-content: center;
}
.speakers__filter {
padding: 8px 18px;
border-radius: 20px;
border: 2px solid rgba(110, 86, 79, 0.2);
background: transparent;
color: var(--text-color);
font-size: 0.9rem;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
}
.speakers__filter:hover {
border-color: var(--accent);
color: var(--accent);
}
.speakers__filter.is-active {
background: var(--accent);
border-color: var(--accent);
color: var(--color-white);
}
.speakers__grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
width: 100%;
max-width: 1200px;
}
.speaker {
background: var(--bg-surface);
border-radius: 16px;
overflow: hidden;
transition: transform 0.25s ease, box-shadow 0.25s ease;
display: flex;
flex-direction: column;
}
.speaker:hover {
transform: translateY(-6px);
box-shadow: 0 12px 32px rgba(67, 120, 107, 0.15);
}
.speaker__media {
position: relative;
overflow: hidden;
aspect-ratio: 1;
}
.speaker__media img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
transition: transform 0.3s ease;
}
.speaker:hover .speaker__media img {
transform: scale(1.05);
}
.speaker__play {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 56px;
height: 56px;
border-radius: 50%;
border: none;
background: rgba(52, 168, 90, 0.9);
color: var(--color-white);
font-size: 1.25rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
transition: opacity 0.25s ease, transform 0.25s ease;
z-index: 2;
}
.speaker:hover .speaker__play {
opacity: 1;
}
.speaker__play:hover {
transform: translate(-50%, -50%) scale(1.1);
}
.speaker__body {
padding: 16px;
display: flex;
flex-direction: column;
gap: 6px;
flex: 1;
}
.speaker__name {
font-size: 1.05rem;
font-weight: 800;
color: var(--text-color);
margin: 0;
text-align: left;
}
.speaker__tag {
display: inline-block;
width: fit-content;
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--accent);
background: rgba(67, 120, 107, 0.1);
border-radius: 12px;
padding: 3px 10px;
margin-bottom: 4px;
}
.speaker__bio {
font-size: 0.85rem;
line-height: 1.5;
color: var(--text-muted);
margin: 0;
text-align: left;
flex: 1;
}
.speaker__link {
display: inline-flex;
width: fit-content;
margin-top: 8px;
color: var(--accent);
font-size: 1.1rem;
padding: 0;
transition: color 0.2s ease;
}
.speaker__link:hover {
color: var(--accent-dark);
}
.speakers__cta {
margin-top: 8px;
}
.speaker-modal {
position: fixed;
inset: 0;
z-index: 100;
display: none;
align-items: center;
justify-content: center;
}
.speaker-modal.is-open {
display: flex;
}
.speaker-modal__backdrop {
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.85);
}
.speaker-modal__dialog {
position: relative;
max-width: 90vw;
max-height: 90vh;
}
.speaker-modal__close {
position: absolute;
top: -44px;
right: 0;
width: 36px;
height: 36px;
border-radius: 50%;
border: none;
background: rgba(255, 255, 255, 0.2);
color: var(--color-white);
font-size: 1.1rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s ease;
}
.speaker-modal__close:hover {
background: rgba(255, 255, 255, 0.4);
}
.speaker-modal__video {
max-width: 90vw;
max-height: 90vh;
border-radius: 12px;
display: block;
}
/* ---------- Image Lightbox ---------- */
.lightbox {
position: fixed;
inset: 0;
z-index: 100;
display: none;
align-items: center;
justify-content: center;
}
.lightbox.is-open {
display: flex;
}
.lightbox__backdrop {
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.9);
}
.lightbox__image {
position: relative;
max-width: 92vw;
max-height: 90vh;
object-fit: contain;
border-radius: 8px;
display: block;
z-index: 1;
}
.lightbox__close {
position: absolute;
top: 16px;
right: 16px;
z-index: 2;
width: 40px;
height: 40px;
border-radius: 50%;
border: none;
background: rgba(255, 255, 255, 0.2);
color: var(--color-white);
font-size: 1.2rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s ease;
}
.lightbox__close:hover {
background: rgba(255, 255, 255, 0.4);
}
.lightbox-trigger {
cursor: zoom-in;
transition: transform 0.3s ease;
}
.lightbox-trigger:hover {
transform: scale(1.02);
}
/* ---------- Activities ---------- */
.activities {
width: 100%;
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 32px;
}
.activities__title {
text-align: center;
margin: 0;
}
.activities__intro {
text-align: center;
max-width: 700px;
font-size: 1.05rem;
line-height: 1.6;
margin: 0;
}
.activities__filters {
display: flex;
gap: 8px;
flex-wrap: wrap;
justify-content: center;
}
.activities__filter {
padding: 8px 18px;
border-radius: 20px;
border: 2px solid rgba(110, 86, 79, 0.2);
background: transparent;
color: var(--text-color);
font-size: 0.9rem;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
}
.activities__filter:hover {
border-color: var(--accent);
color: var(--accent);
}
.activities__filter.is-active {
background: var(--accent);
border-color: var(--accent);
color: var(--color-white);
}
.activities__grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
width: 100%;
max-width: 1200px;
}
.activity {
background: var(--bg-surface);
border: 1px solid var(--color-gold);
border-radius: 16px;
overflow: hidden;
transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
display: flex;
flex-direction: column;
}
.activity:hover {
transform: translateY(-6px);
box-shadow: 0 12px 32px rgba(200, 162, 74, 0.2);
border-color: var(--color-gold-light);
}
.activity__media {
position: relative;
overflow: hidden;
aspect-ratio: 4 / 3;
}
.activity__media img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
transition: transform 0.3s ease;
}
.activity:hover .activity__media img {
transform: scale(1.05);
}
.activity__gallery {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
margin-top: 12px;
}
.activity__gallery img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
border-radius: 8px;
aspect-ratio: 4 / 3;
}
.activity__badge {
position: absolute;
top: 12px;
left: 12px;
font-size: 0.65rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--color-white);
background: rgba(67, 120, 107, 0.9);
border-radius: 12px;
padding: 4px 10px;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
z-index: 1;
}
.activity__badge--restricted {
background: rgba(222, 121, 134, 0.9);
}
.activity__badge--food {
background: rgba(200, 152, 88, 0.95);
color: var(--color-dark);
}
.activity__body {
padding: 16px;
display: flex;
flex-direction: column;
gap: 6px;
flex: 1;
}
.activity__name {
font-size: 1.05rem;
font-weight: 800;
color: var(--text-color);
margin: 0;
text-align: left;
}
.activity__desc {
font-size: 0.85rem;
line-height: 1.5;
color: var(--text-muted);
margin: 0;
text-align: left;
flex: 1;
}
.activity__link {
display: inline-flex;
align-items: center;
gap: 6px;
width: fit-content;
margin-top: 8px;
color: var(--accent);
font-size: 0.85rem;
font-weight: 600;
padding: 0;
transition: color 0.2s ease;
}
.activity__link:hover {
color: var(--accent-dark);
}
.activities__cta {
margin-top: 8px;
}
/* ---------- Lodging ---------- */
.lodging {
width: 100%;
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 32px;
}
.lodging__title {
text-align: center;
margin: 0;
}
.lodging__intro {
text-align: center;
max-width: 700px;
font-size: 1.05rem;
line-height: 1.6;
margin: 0;
}
.lodging__options {
display: flex;
gap: 8px;
flex-wrap: wrap;
justify-content: center;
}
.lodging__tab {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 12px 24px;
border-radius: 12px;
border: 2px solid rgba(110, 86, 79, 0.2);
background: transparent;
color: var(--text-color);
font-size: 1rem;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
}
.lodging__tab:hover {
border-color: var(--accent);
color: var(--accent);
}
.lodging__tab.is-active {
background: var(--accent);
border-color: var(--accent);
color: var(--color-white);
}
.lodging__tab i {
font-size: 1.1rem;
}
.lodging__panels {
width: 100%;
max-width: 900px;
position: relative;
}
.lodging__panel {
display: none;
grid-template-columns: 1fr 1fr;
gap: 32px;
align-items: center;
background: var(--bg-surface);
border: 1px solid var(--color-gold);
border-radius: 16px;
overflow: hidden;
padding: 24px;
}
.lodging__panel.is-active {
display: grid;
}
.lodging__panel-media {
border-radius: 12px;
overflow: hidden;
}
.lodging__panel-media--icon {
display: flex;
align-items: center;
justify-content: center;
background: var(--color-primary);
color: var(--color-white);
min-height: 280px;
}
.lodging__panel-media--icon i {
font-size: 6rem;
}
.lodging__panel-media img {
width: 100%;
height: auto;
display: block;
object-fit: cover;
}
.lodging__panel-gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
gap: 8px;
margin-top: 8px;
}
.lodging__panel-gallery img {
border-radius: 8px;
}
.lodging__panel-body {
display: flex;
flex-direction: column;
gap: 12px;
}
.lodging__price-tag {
display: inline-block;
width: fit-content;
background: var(--color-primary);
color: var(--color-white);
font-weight: 800;
font-size: 0.9rem;
padding: 4px 12px;
border-radius: 20px;
}
.lodging__panel-title {
font-size: 1.5rem;
font-weight: 800;
color: var(--text-color);
margin: 0;
}
.lodging__panel-desc {
color: var(--text-muted);
line-height: 1.6;
margin: 0;
}
.lodging__features {
list-style: none;
padding: 0;
margin: 8px 0 0;
display: flex;
flex-direction: column;
gap: 8px;
}
.lodging__features li {
display: flex;
align-items: center;
gap: 10px;
color: var(--text-color);
font-size: 0.95rem;
margin: 0;
text-align: left;
line-height: 1.4;
}
.lodging__features i {
color: var(--accent);
font-size: 1rem;
flex: 0 0 auto;
}
.lodging__highlights {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
width: 100%;
max-width: 1000px;
}
.lodging__highlight {
text-align: center;
padding: 24px 16px;
border-radius: 12px;
background: var(--bg-surface);
transition: transform 0.2s ease;
}
.lodging__highlight:hover {
transform: translateY(-4px);
}
.lodging__highlight i {
font-size: 1.75rem;
color: var(--color-gold-dark);
margin-bottom: 8px;
}
.lodging__highlight h3 {
font-size: 1rem;
font-weight: 700;
color: var(--text-color);
margin: 0 0 6px;
}
.lodging__highlight p {
font-size: 0.85rem;
color: var(--text-muted);
margin: 0;
line-height: 1.4;
text-align: center;
}
.lodging__cta {
margin-top: 8px;
}
/* ---------- Challenge ---------- */
.challenge {
width: 100%;
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 40px;
}
.challenge__header {
text-align: center;
max-width: 700px;
width: 100%;
}
.challenge__title {
color: var(--color-white);
font-size: clamp(1.75rem, 4vw, 2.5rem);
margin: 0 0 16px;
}
.challenge__intro {
color: rgba(255, 255, 255, 0.85);
font-size: 1.05rem;
line-height: 1.6;
margin: 0 0 24px;
}
.challenge__counter {
display: flex;
align-items: baseline;
gap: 8px;
justify-content: center;
margin-bottom: 12px;
}
.challenge__counter-text {
display: flex;
align-items: baseline;
gap: 6px;
}
.challenge__counter-number {
color: var(--color-primary);
font-size: 2.5rem;
font-weight: 800;
line-height: 1;
}
.challenge__counter-label {
color: var(--color-white);
font-size: 0.95rem;
}
.challenge__counter-total {
color: rgba(255, 255, 255, 0.6);
font-size: 0.9rem;
}
.challenge__progress {
width: 100%;
max-width: 500px;
height: 12px;
background: rgba(255, 255, 255, 0.15);
border-radius: 6px;
overflow: hidden;
margin: 0 auto;
}
.challenge__progress-fill {
height: 100%;
width: 0;
border-radius: 6px;
background: linear-gradient(90deg, var(--color-primary), var(--accent-light), #c89858);
transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 0 8px rgba(52, 168, 90, 0.4);
}
.badges {
display: grid;
grid-template-columns: repeat(6, 1fr);
gap: 16px;
width: 100%;
max-width: 900px;
}
.badge {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
padding: 22px 8px 28px;
border-radius: 16px 16px 48% 48% / 16px 16px 30% 30%;
border: 2px solid var(--color-gold-dark);
background: rgba(31, 52, 44, 0.7);
cursor: pointer;
transition: transform 0.2s ease, border-color 0.2s ease, background 0.2s ease, box-shadow 0.3s ease;
position: relative;
overflow: hidden;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.badge:hover {
transform: translateY(-4px);
border-color: var(--color-gold-light);
background: rgba(45, 84, 72, 0.8);
box-shadow: 0 6px 20px rgba(200, 162, 74, 0.25);
}
.badge__icon {
font-size: 2rem;
color: rgba(200, 162, 74, 0.6);
transition: color 0.2s ease, transform 0.3s ease;
}
.badge__label {
color: rgba(255, 255, 255, 0.7);
font-size: 0.72rem;
font-weight: 600;
text-align: center;
line-height: 1.2;
transition: color 0.2s ease;
}
.badge__check {
position: absolute;
top: 8px;
right: 8px;
font-size: 0.9rem;
color: var(--color-gold);
opacity: 0;
transform: scale(0);
transition: opacity 0.2s ease, transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.badge.is-earned {
border-color: var(--color-gold);
background: rgba(200, 162, 74, 0.15);
box-shadow: 0 0 16px rgba(200, 162, 74, 0.4);
}
.badge.is-earned .badge__icon {
color: var(--color-gold-light);
transform: scale(1.1);
}
.badge.is-earned .badge__label {
color: var(--color-white);
}
.badge.is-earned .badge__check {
opacity: 1;
transform: scale(1);
}
.challenge__prizes {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
width: 100%;
max-width: 900px;
}
.prize-card {
text-align: center;
border-radius: 16px;
padding: 32px 20px;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
transition: transform 0.25s ease;
}
.prize-card:hover {
transform: translateY(-6px);
}
.prize-card--gold {
background: linear-gradient(135deg, rgba(249, 183, 69, 0.2), rgba(249, 183, 69, 0.05));
border: 2px solid rgba(249, 183, 69, 0.4);
}
.prize-card--silver {
background: linear-gradient(135deg, rgba(192, 192, 192, 0.15), rgba(192, 192, 192, 0.03));
border: 2px solid rgba(192, 192, 192, 0.3);
}
.prize-card--bronze {
background: linear-gradient(135deg, rgba(168, 117, 68, 0.2), rgba(168, 117, 68, 0.05));
border: 2px solid rgba(168, 117, 68, 0.4);
}
.prize-card__medal {
font-size: 2.5rem;
margin-bottom: 4px;
}
.prize-card--gold .prize-card__medal { color: #c89858; }
.prize-card--silver .prize-card__medal { color: #8a7268; }
.prize-card--bronze .prize-card__medal { color: #a87544; }
.prize-card__rank {
color: var(--color-white);
font-size: 1.1rem;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.prize-card__name {
color: var(--color-white);
font-size: 1.3rem;
font-weight: 700;
}
.prize-card__desc {
color: rgba(255, 255, 255, 0.65);
font-size: 0.85rem;
margin: 4px 0 0;
line-height: 1.4;
}
.challenge__footer {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.challenge__footer-text {
color: var(--color-white);
font-size: 1.1rem;
font-weight: 600;
margin: 0;
}
.challenge__reset {
font-size: 0.9rem;
padding: 0.5rem 1.5rem;
margin: 0;
}
/* ---------- Schedule ---------- */
.schedule-section {
width: 100%;
padding: 60px 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.schedule-section__title {
text-align: center;
margin: 0;
}
.schedule-section__link {
text-align: center;
margin: 0 0 16px;
}
.schedule-section__link a {
color: var(--accent);
font-weight: 700;
}
.schedule {
display: flex;
flex-direction: column;
width: 100%;
max-width: 1100px;
margin: 0 auto;
background-color: var(--accent-dark);
border-radius: 12px;
overflow: hidden;
}
.tabs {
flex: 0 0 auto;
padding: 12px;
display: flex;
gap: 8px;
flex-wrap: wrap;
background: var(--accent-dark);
position: sticky;
top: var(--header-h);
z-index: 2;
}
.tab {
transition: background-color 160ms ease, color 160ms ease,
transform 120ms ease, box-shadow 120ms ease;
padding: 10px 20px;
border-radius: 10px;
cursor: pointer;
color: whitesmoke;
border: none;
outline: none;
font-size: large;
background-color: var(--accent-dark);
opacity: 0.92;
}
.tab[aria-selected="true"] {
background-color: var(--accent);
color: whitesmoke;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
border: 3px solid whitesmoke;
opacity: 1;
}
.tab:hover {
color: whitesmoke;
transform: translateY(-2px);
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06);
border: 3px solid whitesmoke;
}
.tab[aria-selected="true"]:hover {
background-color: var(--accent);
color: whitesmoke;
transform: translateY(0);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.tab__panel {
display: none;
flex: 1 1 auto;
padding: 12px;
width: 100%;
box-sizing: border-box;
}
.tab__panel[aria-hidden="false"] {
display: block;
}
.schedule__table {
width: 100%;
box-sizing: border-box;
font-size: 0.95rem;
background-color: #fff;
margin: 0;
padding: 12px;
}
.schedule__table caption {
text-align: left;
font-size: 1.25rem;
font-weight: 700;
margin-bottom: 12px;
color: whitesmoke;
}
.schedule__table thead th {
padding: 10px;
background: var(--bg-light);
color: var(--text-muted);
font-weight: 600;
text-align: left;
}
.schedule__table tbody th {
padding: 10px;
font-weight: 700;
text-align: right;
width: 160px;
color: var(--text-muted);
vertical-align: middle;
background: var(--bg-light);
border: 1px solid var(--bg-surface-2);
word-break: break-word;
max-width: fit-content;
}
.schedule__table tbody td {
border: 1px solid var(--bg-surface-2);
padding: 10px;
vertical-align: top;
}
/* ---------- Giveaway ---------- */
.giveaway {
width: 100%;
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
background: var(--bg-light);
}
.giveaway__inner {
width: 100%;
max-width: 1100px;
display: grid;
grid-template-columns: 1.1fr 1fr;
gap: 40px;
align-items: start;
}
.giveaway__content {
display: flex;
flex-direction: column;
gap: 18px;
}
.giveaway__eyebrow {
display: inline-block;
width: fit-content;
background: var(--color-dark);
color: var(--color-gold-light);
font-weight: 700;
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 0.08em;
padding: 5px 14px;
border: 1px solid var(--color-gold);
border-radius: 20px;
}
.giveaway__title {
font-size: 2.4rem;
font-weight: 700;
color: var(--text-color);
margin: 0;
line-height: 1.1;
}
.giveaway__lead {
font-size: 1.05rem;
color: var(--text-color);
line-height: 1.6;
margin: 0;
}
.giveaway__perks {
display: flex;
flex-direction: column;
gap: 12px;
}
.giveaway__perk {
display: flex;
align-items: flex-start;
gap: 14px;
background: var(--bg-surface);
border-radius: 12px;
padding: 14px 16px;
border-left: 4px solid var(--color-gold);
}
.giveaway__perk i {
color: var(--color-gold-dark);
font-size: 1.3rem;
flex: 0 0 auto;
margin-top: 2px;
}
.giveaway__perk span {
color: var(--text-color);
font-size: 0.95rem;
line-height: 1.5;
}
.giveaway__steps {
background: var(--bg-surface);
border-radius: 16px;
padding: 24px;
color: var(--text-color);
border: 1px solid var(--color-gold);
border-left: 4px solid var(--color-gold-dark);
}
.giveaway__steps-title {
margin: 0 0 14px;
font-size: 1.3rem;
font-weight: 800;
}
.giveaway__list {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 12px;
counter-reset: step;
}
.giveaway__list li {
display: flex;
align-items: flex-start;
gap: 14px;
line-height: 1.5;
}
.giveaway__num {
flex: 0 0 auto;
width: 28px;
height: 28px;
border-radius: 50%;
background: var(--color-gold-dark);
color: var(--color-white);
font-weight: 800;
font-size: 0.9rem;
display: flex;
align-items: center;
justify-content: center;
margin-top: 1px;
border: 1px solid var(--color-gold);
}
.giveaway__text {
color: var(--text-color);
font-size: 0.95rem;
}
.giveaway__handle {
color: var(--accent);
font-weight: 700;
text-decoration: underline;
}
.giveaway__footer {
display: flex;
flex-direction: column;
gap: 16px;
margin-top: 4px;
}
.giveaway__deadline {
display: flex;
align-items: center;
gap: 10px;
background: var(--bg-surface);
border-radius: 12px;
padding: 14px 18px;
color: var(--text-color);
font-size: 1rem;
margin: 0;
border-left: 4px solid var(--color-primary);
}
.giveaway__deadline i {
color: var(--color-primary);
font-size: 1.2rem;
}
.giveaway__ctas {
display: flex;
flex-wrap: wrap;
gap: 12px;
}
.giveaway__cta {
flex: 1 1 auto;
min-width: fit-content;
}
.giveaway__post {
position: sticky;
top: 80px;
display: flex;
justify-content: center;
}
.giveaway__post .instagram-media {
width: 100% !important;
max-width: 540px !important;
border-radius: 12px;
overflow: hidden;
}
@media (max-width: 900px) {
.giveaway__inner {
grid-template-columns: 1fr;
}
.giveaway__post {
position: static;
}
}
/* ---------- Venue ---------- */
.venue {
width: 100%;
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 32px;
background: var(--bg-surface);
}
.venue__title {
text-align: center;
margin: 0;
}
.venue__intro {
text-align: center;
max-width: 700px;
font-size: 1.05rem;
line-height: 1.6;
margin: 0;
}
.venue__stats {
display: flex;
gap: 16px;
flex-wrap: wrap;
justify-content: center;
}
.venue__stat {
text-align: center;
background: var(--bg-light);
border-radius: 16px;
padding: 24px 28px;
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
min-width: 120px;
transition: transform 0.2s ease;
}
.venue__stat:hover {
transform: translateY(-4px);
}
.venue__stat i {
font-size: 1.5rem;
color: var(--accent);
margin-bottom: 4px;
}
.venue__stat-number {
font-size: 2rem;
font-weight: 800;
color: var(--text-color);
line-height: 1;
}
.venue__stat-label {
color: var(--text-muted);
font-size: 0.85rem;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.venue__tabs {
display: flex;
gap: 8px;
flex-wrap: wrap;
justify-content: center;
}
.venue__tab {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 12px 24px;
border-radius: 12px;
border: 2px solid rgba(110, 86, 79, 0.2);
background: transparent;
color: var(--text-color);
font-size: 1rem;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
}
.venue__tab:hover {
border-color: var(--accent);
color: var(--accent);
}
.venue__tab.is-active {
background: var(--accent);
border-color: var(--accent);
color: var(--color-white);
}
.venue__tab i {
font-size: 1.1rem;
}
.venue__panels {
width: 100%;
max-width: 1000px;
}
.venue__panel {
display: none;
}
.venue__panel.is-active {
display: block;
}
.venue__map-zoom {
position: relative;
border-radius: 16px;
overflow: hidden;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
background: var(--accent-dark);
}
.venue__map-zoom img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease;
transform-origin: center;
cursor: zoom-in;
}
.venue__zoom-btn {
position: absolute;
bottom: 16px;
right: 16px;
width: 44px;
height: 44px;
border-radius: 50%;
border: none;
background: rgba(0, 0, 0, 0.6);
color: var(--color-white);
font-size: 1rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
transition: background 0.2s ease, transform 0.2s ease;
z-index: 2;
}
.venue__zoom-btn:hover {
background: rgba(0, 0, 0, 0.8);
transform: scale(1.1);
}
.venue__zoom-btn--out {
right: 68px;
}
.venue__map-hint {
text-align: center;
color: var(--text-muted);
font-size: 0.85rem;
margin: 12px 0 0;
}
.venue__map-link {
margin-top: 8px;
}
.venue__location-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 32px;
align-items: start;
}
.venue__address {
display: flex;
flex-direction: column;
gap: 16px;
}
.venue__address-title {
font-size: 1.5rem;
font-weight: 800;
color: var(--text-color);
margin: 0;
text-align: left;
}
.venue__address-text {
font-size: 1.05rem;
color: var(--text-color);
margin: 0;
display: flex;
gap: 10px;
align-items: flex-start;
line-height: 1.5;
}
.venue__address-text i {
color: var(--accent);
margin-top: 4px;
flex: 0 0 auto;
}
.venue__address-actions {
display: flex;
gap: 12px;
flex-wrap: wrap;
}
.venue__directions-btn {
margin: 0;
}
.venue__drive-info {
display: flex;
flex-direction: column;
gap: 12px;
margin-top: 8px;
}
.venue__drive-item {
display: flex;
gap: 12px;
align-items: flex-start;
background: var(--bg-light);
border-radius: 10px;
padding: 14px 16px;
}
.venue__drive-item i {
color: var(--accent);
font-size: 1.25rem;
flex: 0 0 auto;
margin-top: 2px;
}
.venue__drive-item span {
color: var(--text-color);
font-size: 0.95rem;
line-height: 1.5;
}
.venue__embed-map {
border-radius: 16px;
overflow: hidden;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
min-height: 400px;
}
.venue__embed-map iframe {
width: 100%;
height: 100%;
min-height: 400px;
border: none;
display: block;
}
/* ---------- FAQ ---------- */
.faq {
width: 100%;
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 32px;
}
.faq__title {
text-align: center;
margin: 0;
}
.faq__list {
width: 100%;
max-width: 800px;
display: flex;
flex-direction: column;
gap: 12px;
}
.faq__item {
background: var(--bg-surface);
border: 1px solid rgba(110, 86, 79, 0.15);
border-radius: 12px;
overflow: hidden;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.faq__item:hover {
border-color: var(--accent);
}
.faq__item[open] {
box-shadow: 0 4px 16px rgba(67, 120, 107, 0.1);
border-color: var(--accent);
}
.faq__question {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
padding: 20px 24px;
cursor: pointer;
font-size: 1.1rem;
font-weight: 700;
color: var(--text-color);
list-style: none;
user-select: none;
}
.faq__question::-webkit-details-marker {
display: none;
}
.faq__question span {
text-align: left;
flex: 1;
}
.faq__icon {
flex: 0 0 auto;
font-size: 0.9rem;
color: var(--text-muted);
transition: transform 0.25s ease, color 0.2s ease;
}
.faq__item[open] .faq__icon {
transform: rotate(180deg);
color: var(--accent);
}
.faq__answer {
padding: 0 24px 20px;
}
.faq__answer p {
color: var(--text-muted);
font-size: 0.95rem;
line-height: 1.6;
margin: 0 0 12px;
text-align: left;
}
.faq__answer p:last-child {
margin-bottom: 0;
}
.faq__answer a {
color: var(--accent);
font-weight: 600;
padding: 0;
}
.faq__answer a:hover {
color: var(--accent-dark);
}
.faq__warning {
display: flex;
gap: 10px;
align-items: flex-start;
background: rgba(196, 112, 124, 0.1);
border-left: 4px solid #c4707c;
border-radius: 8px;
padding: 14px 16px !important;
margin-top: 12px !important;
color: #8a4a55 !important;
font-size: 0.9rem !important;
}
.faq__warning i {
flex: 0 0 auto;
margin-top: 2px;
}
/* ---------- Sessions ---------- */
.session {
padding: 14px 16px;
border-radius: 8px;
height: 100%;
box-sizing: border-box;
transition: transform 0.3s ease, box-shadow 0.3s ease;
display: flex;
flex-direction: column;
gap: 6px;
}
.session:hover {
transform: translateY(-4px);
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
}
.session__title {
font-weight: 700;
display: flex;
align-items: center;
gap: 8px;
margin: 0;
color: var(--text-color);
font-size: 1.05rem;
line-height: 1.3;
}
.session__title::before {
font-family: "Font Awesome 6 Free", "Font Awesome 5 Free";
font-weight: 900;
font-size: 0.85rem;
flex: 0 0 auto;
}
.session--keynote .session__title::before { content: "\f6a4"; }
.session--talk .session__title::before { content: "\f075"; }
.session--break .session__title::before { content: "\f0f4"; }
.session--workshop .session__title::before { content: "\f552"; }
.session__speaker {
font-size: 0.9rem;
color: var(--text-muted);
display: flex;
align-items: center;
gap: 6px;
font-weight: 600;
}
.session__speaker::before {
content: "\f508";
font-family: "Font Awesome 6 Free", "Font Awesome 5 Free";
font-weight: 900;
font-size: 0.75rem;
opacity: 0.7;
}
.session__details {
font-size: 0.87rem;
margin: 0;
color: var(--text-muted);
line-height: 1.4;
}
.session__details--time {
display: flex;
align-items: center;
gap: 6px;
}
.session__details--time::before {
content: "\f017";
font-family: "Font Awesome 6 Free", "Font Awesome 5 Free";
font-weight: 900;
font-size: 0.7rem;
opacity: 0.7;
flex: 0 0 auto;
}
.session__details--plain::before {
content: none;
}
.session__list {
list-style: none;
padding: 0;
margin: 6px 0 0;
display: flex;
flex-direction: column;
gap: 6px;
}
.session__list li {
font-size: 0.88rem;
color: var(--text-color);
display: flex;
align-items: flex-start;
gap: 8px;
line-height: 1.4;
padding: 4px 0;
border-bottom: 1px dashed rgba(144, 119, 111, 0.18);
}
.session__list li:last-child {
border-bottom: none;
}
.session__list li::before {
content: "\f0da";
font-family: "Font Awesome 6 Free", "Font Awesome 5 Free";
font-weight: 900;
font-size: 0.7rem;
color: var(--accent);
flex: 0 0 auto;
margin-top: 3px;
}
.session--keynote {
background: #f9ecea;
border-left: 4px solid #c4707c;
}
.session--talk {
background: #ecf2f0;
border-left: 4px solid #5a9384;
}
.session--break {
background: #f4efe7;
border-left: 4px solid #8a7268;
}
.session--workshop {
background: #f8f0e4;
border-left: 4px solid #c89858;
}
.responsive-iframe {
width: 100%;
max-width: 640px;
height: 360px;
aspect-ratio: 16 / 9;
}
/* ---------- About ---------- */
.about {
width: 100%;
background: var(--bg-light);
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
}
.about__title {
text-align: center;
margin-bottom: 16px;
}
.about__lead {
text-align: center;
font-size: clamp(1.1rem, 2vw, 1.4rem);
line-height: 1.6;
max-width: 700px;
margin: 0 0 48px;
color: var(--text-muted);
}
.about__short {
width: 100%;
max-width: 320px;
aspect-ratio: 9 / 16;
margin: 0 auto 48px;
border-radius: 16px;
overflow: hidden;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
}
.about__short iframe {
width: 100%;
height: 100%;
border: 0;
display: block;
}
.about__cards {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
width: 100%;
max-width: 1000px;
}
.about__card {
background: var(--bg-surface);
border-radius: 16px;
padding: 32px 24px;
text-align: center;
transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
border: 1px solid var(--color-gold);
}
.about__card:hover {
transform: translateY(-4px);
box-shadow: 0 12px 32px rgba(200, 162, 74, 0.18);
border-color: var(--color-gold-light);
}
.about__card-icon {
width: 64px;
height: 64px;
margin: 0 auto 16px;
border-radius: 50%;
background: var(--accent);
border: 2px solid var(--color-gold);
color: var(--color-gold-light);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
box-shadow: 0 0 12px rgba(200, 162, 74, 0.25);
}
.about__card-title {
font-size: 1.15rem;
font-weight: 700;
color: var(--text-color);
margin: 0 0 10px;
}
.about__card-text {
font-size: 0.95rem;
line-height: 1.55;
color: var(--text-muted);
margin: 0;
text-align: center;
}
/* ---------- Music ---------- */
.music {
width: 100%;
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 40px;
}
.music__heading {
color: var(--color-white);
font-style: italic;
font-size: clamp(1.75rem, 4vw, 2.5rem);
margin: 0;
}
.music__subheading {
color: var(--color-white);
text-align: center;
max-width: 600px;
font-size: 1.1rem;
margin: 0 0 8px;
}
.music__feature {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 32px;
align-items: center;
width: 100%;
max-width: 1000px;
}
.music__video-wrap {
position: relative;
width: 100%;
border-radius: 16px;
overflow: hidden;
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
aspect-ratio: 9 / 16;
max-height: 600px;
}
.music__video {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.music__video-overlay {
position: absolute;
inset: 0;
display: flex;
align-items: flex-end;
justify-content: center;
background: linear-gradient(
to top,
rgba(0, 0, 0, 0.5) 0%,
transparent 50%
);
pointer-events: none;
}
.music__artist-photo {
display: none;
}
.music__sound-toggle {
position: absolute;
bottom: 16px;
right: 16px;
width: 44px;
height: 44px;
border-radius: 50%;
border: none;
background: rgba(0, 0, 0, 0.55);
color: var(--color-white);
font-size: 1.1rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
z-index: 2;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
transition: background 0.2s ease, transform 0.2s ease;
}
.music__sound-toggle:hover {
background: rgba(0, 0, 0, 0.75);
transform: scale(1.1);
}
.music__details {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.music__artist-name {
color: var(--color-white);
font-size: 2rem;
font-weight: 800;
margin: 0;
}
.music__artist-tagline {
color: rgba(255, 255, 255, 0.85);
font-size: 1.1rem;
margin: 0;
}
.music__highlights {
display: flex;
flex-direction: column;
gap: 12px;
width: 100%;
max-width: 320px;
}
.music__highlight {
display: flex;
align-items: center;
gap: 12px;
background: rgba(255, 255, 255, 0.1);
border-radius: 10px;
padding: 12px 16px;
color: var(--color-white);
font-size: 0.95rem;
text-align: left;
transition: background 0.2s ease;
}
.music__highlight:hover {
background: rgba(255, 255, 255, 0.18);
}
.music__highlight i {
font-size: 1.25rem;
color: var(--color-primary);
flex: 0 0 auto;
}
.music__link {
margin: 4px 0;
}
.music__player {
width: 100%;
max-width: 400px;
border-radius: 12px;
overflow: hidden;
}
.music__player iframe {
width: 100%;
display: block;
border: none;
}
.music__footer {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
}
.music__footer-text {
color: rgba(255, 255, 255, 0.85);
max-width: 500px;
margin: 0;
}
.music__footer-cta-title {
color: var(--color-white);
font-size: 1.5rem;
font-weight: 800;
margin: 0;
}
.music__footer-cta {
margin: 0;
}
/* ---------- Trip planner ---------- */
.trip-planner {
width: 100%;
padding: 60px 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 32px;
}
.trip-planner__title {
color: var(--color-white);
text-align: center;
}
.trip-steps {
display: flex;
flex-direction: column;
gap: 24px;
width: 100%;
max-width: 800px;
margin: 0 auto;
}
.trip-step {
display: flex;
gap: 20px;
align-items: center;
background: rgba(255, 255, 255, 0.08);
border-radius: 12px;
padding: 24px;
}
.trip-step__icon {
flex: 0 0 auto;
width: 56px;
height: 56px;
border-radius: 50%;
background: var(--bg-light);
color: var(--accent);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
}
.trip-step__body {
flex: 1;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
.trip-step__title {
color: var(--color-white);
text-align: center;
margin: 0 0 12px;
font-size: 1.25rem;
font-weight: 700;
}
.trip-step__list {
list-style: none;
padding: 0;
margin: 0 0 16px;
}
.trip-step__list li {
color: var(--color-white);
text-align: center;
margin: 8px 0;
padding-left: 24px;
position: relative;
line-height: 1.5;
font-size: 1rem;
}
.trip-step__list li::before {
content: "\f00c";
font-family: "Font Awesome 6 Free", "Font Awesome 5 Free", "FontAwesome";
font-weight: 900;
position: absolute;
left: 0;
top: 0;
color: var(--color-white);
font-size: 0.85rem;
}
.trip-step__cta {
margin: 0;
}
/* ---------- Church Partners ---------- */
.church-partners {
width: 100%;
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
}
.church-partners__inner {
max-width: 800px;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 20px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 20px;
padding: 48px 32px;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
.church-partners__icon {
width: 72px;
height: 72px;
border-radius: 50%;
background: var(--color-primary);
color: var(--color-white);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.75rem;
box-shadow: 0 4px 16px rgba(52, 168, 90, 0.4);
}
.church-partners__title {
font-size: clamp(1.75rem, 4vw, 2.5rem);
margin: 0;
}
.church-partners__lead {
font-size: 1.05rem;
line-height: 1.6;
margin: 0;
max-width: 560px;
}
.church-partners__stat {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
margin: 12px 0;
padding: 20px 32px;
background: linear-gradient(135deg, var(--color-primary), var(--accent-light));
border-radius: 16px;
box-shadow: 0 6px 20px rgba(52, 168, 90, 0.35);
}
.church-partners__stat-number {
color: var(--color-white);
font-size: clamp(2.5rem, 6vw, 3.5rem);
font-weight: 800;
line-height: 1;
text-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
.church-partners__stat-label {
color: var(--color-white);
font-size: 0.95rem;
font-weight: 600;
max-width: 320px;
line-height: 1.4;
}
.church-partners__steps {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
width: 100%;
margin: 12px 0;
}
.church-partners__step {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 10px;
padding: 20px 12px;
background: rgba(255, 255, 255, 0.08);
border-radius: 12px;
transition: transform 0.2s ease, background 0.2s ease;
}
.church-partners__step:hover {
transform: translateY(-4px);
background: rgba(255, 255, 255, 0.16);
}
.church-partners__step-icon {
width: 44px;
height: 44px;
border-radius: 50%;
background: var(--bg-light);
color: var(--accent);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.1rem;
}
.church-partners__step-title {
color: var(--color-white);
font-size: 1rem;
font-weight: 700;
margin: 0;
}
.church-partners__step-text {
color: rgba(255, 255, 255, 0.85);
font-size: 0.85rem;
line-height: 1.4;
margin: 0;
}
.church-partners__cta {
margin: 8px 0 0;
}
.church-partners__footnote {
color: rgba(255, 255, 255, 0.7);
font-size: 0.8rem;
line-height: 1.5;
margin: 8px 0 0;
max-width: 560px;
}
@media (max-width: 768px) {
.church-partners__steps {
grid-template-columns: 1fr;
gap: 12px;
}
.church-partners__inner {
padding: 32px 20px;
}
}
/* ---------- Sponsors ---------- */
.sponsors {
width: 100%;
background: var(--bg-surface);
padding: 80px 24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 24px;
}
.sponsors__title {
text-align: center;
margin-bottom: 8px;
}
.sponsor-partner {
width: 100%;
max-width: 1000px;
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
padding: 32px 16px;
background: var(--accent-dark);
border-radius: 12px;
}
.sponsor-partner__title {
color: var(--color-white);
margin: 0;
}
.sponsor-partner__logo {
max-height: 150px;
width: auto;
}
.sponsor-tier {
width: 100%;
max-width: 1000px;
border-radius: 12px;
overflow: hidden;
}
.sponsor-tier__header {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 16px;
padding: 20px 24px;
}
.sponsor-tier__name {
color: var(--color-white);
margin: 0;
font-size: clamp(1.1rem, 2vw, 1.5rem);
}
.sponsor-tier__cta {
margin: 0;
}
.sponsor-logos {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: 32px;
padding: 24px;
background: rgba(255, 255, 255, 0.08);
}
.sponsor-logos a {
display: flex;
align-items: center;
justify-content: center;
}
.sponsor-logos img {
max-height: 80px;
max-width: 200px;
width: auto;
height: auto;
object-fit: contain;
filter: none;
transition: transform 0.2s ease;
}
.sponsor-logos a:hover img {
transform: scale(1.05);
}
.sponsor-partners {
width: 100%;
max-width: 1000px;
padding: 32px 16px;
background: var(--bg-light);
border-radius: 12px;
}
.sponsor-partners__title {
text-align: center;
margin-bottom: 24px;
}
.partner-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
gap: 24px;
align-items: center;
justify-items: center;
}
.partner-grid a,
.partner-grid > img {
display: flex;
align-items: center;
justify-content: center;
max-width: 160px;
}
.partner-grid img {
max-height: 80px;
max-width: 100%;
width: auto;
height: auto;
object-fit: contain;
filter: grayscale(0.3);
transition: filter 0.3s ease, transform 0.2s ease;
}
.partner-grid a:hover img {
filter: grayscale(0);
transform: scale(1.05);
}
/* ---------- Mobile ---------- */
@media (max-width: 960px) {
.about__cards {
grid-template-columns: repeat(2, 1fr);
}
.speakers__grid {
grid-template-columns: repeat(2, 1fr);
}
.activities__grid {
grid-template-columns: repeat(2, 1fr);
}
.venue__location-grid {
grid-template-columns: 1fr;
}
.venue__embed-map {
min-height: 300px;
}
.lodging__panel {
grid-template-columns: 1fr;
}
.lodging__highlights {
grid-template-columns: repeat(2, 1fr);
}
.badges {
grid-template-columns: repeat(4, 1fr);
}
.challenge__prizes {
grid-template-columns: 1fr;
max-width: 400px;
}
.donate__inner {
grid-template-columns: 1fr;
gap: 32px;
}
.music__feature {
grid-template-columns: 1fr;
gap: 24px;
}
.music__video-wrap {
max-height: 450px;
margin: 0 auto;
max-width: 320px;
}
.nav {
display: block;
flex-direction: column;
align-items: flex-start;
padding: 5px;
}
.hero {
min-height: auto;
height: auto;
display: block;
padding: 0;
}
.hero__image {
position: relative;
width: 100%;
height: auto;
object-fit: contain;
}
.hero__scroll {
display: none;
}
.hero__overlay {
padding: 24px 16px;
max-width: 95%;
}
.nav__menu {
display: none;
position: absolute;
top: 100%;
left: 0;
width: 100%;
background-color: var(--accent);
padding-top: 10px;
padding-bottom: 10px;
}
.nav__menu.is-open {
display: block;
}
.nav__item {
margin-bottom: 5px;
}
.nav__toggle {
display: block;
position: absolute;
top: 15px;
right: 10px;
cursor: pointer;
}
.nav__toggle:hover {
width: 30px;
}
.column {
padding: 30px 8px;
min-height: auto;
}
h1,
h2 {
font-size: 1.5rem;
font-weight: 400;
word-break: break-word;
}
h3 {
font-size: 1.25rem;
}
p {
font-size: 1rem;
text-align: center;
}
.sticky-bar {
flex-wrap: wrap;
gap: 8px;
padding: 8px 12px;
}
.sticky-bar__label,
.sticky-bar__countdown {
font-size: 0.8rem;
}
.sticky-bar__cta {
padding: 0.4rem 1.2rem;
font-size: 0.85rem;
}
.hero__ctas {
flex-direction: column;
align-items: center;
}
.hero__cta {
width: 100%;
max-width: 280px;
}
.col {
width: 100%;
flex: none;
padding: 0;
}
.progress {
width: 90%;
max-width: 400px;
}
.progress__raised,
.progress__goal {
font-size: 1.5em;
}
.progress__raised {
margin: 10px 15px 0 30px;
}
.schedule-section {
padding: 40px 12px;
}
}
@media (max-width: 768px) {
.about__cards {
grid-template-columns: 1fr;
gap: 16px;
}
.speakers__grid {
grid-template-columns: 1fr;
gap: 16px;
}
.activities__grid {
grid-template-columns: 1fr;
gap: 16px;
}
.activities__filter {
padding: 6px 14px;
font-size: 0.8rem;
}
.speakers__filter {
padding: 6px 14px;
font-size: 0.8rem;
}
.venue__stats {
gap: 8px;
}
.venue__stat {
min-width: 100px;
padding: 16px 20px;
}
.venue__stat-number {
font-size: 1.5rem;
}
.venue__tab {
padding: 10px 16px;
font-size: 0.9rem;
}
.lodging__tab {
padding: 10px 16px;
font-size: 0.9rem;
}
.lodging__highlights {
grid-template-columns: 1fr;
}
.badges {
grid-template-columns: repeat(3, 1fr);
gap: 12px;
}
.badge {
padding: 16px 6px 12px;
}
.badge__icon {
font-size: 1.5rem;
}
.badge__label {
font-size: 0.7rem;
}
.donate__stats {
flex-direction: column;
gap: 8px;
}
.donate__stat {
flex-direction: row;
justify-content: space-between;
align-items: center;
padding: 12px 16px;
}
.donate__stat-number {
font-size: 1.25rem;
}
.about__card {
padding: 24px 20px;
}
.schedule__table {
font-size: 0.8rem;
}
.schedule__table th,
.schedule__table td {
padding: 8px;
}
.schedule__table tbody th {
width: 90px;
}
.session {
padding: 8px;
}
.session__title {
font-size: 1rem;
}
.session__speaker {
font-size: 0.8rem;
}
.session__details {
font-size: 0.75rem;
}
.tab {
padding: 8px;
}
.trip-step {
flex-direction: column;
gap: 12px;
padding: 16px;
}
.trip-step__icon {
width: 44px;
height: 44px;
font-size: 1.25rem;
}
.trip-step__title {
font-size: 1.1rem;
}
.trip-step__cta {
width: 100%;
}
.sponsor-tier__header {
flex-direction: column;
align-items: stretch;
text-align: center;
}
.sponsor-tier__cta {
width: 100%;
}
.sponsor-logos {
gap: 16px;
padding: 16px;
}
.sponsor-logos img {
max-height: 60px;
max-width: 140px;
}
.partner-grid {
grid-template-columns: repeat(2, 1fr);
gap: 16px;
}
.partner-grid a,
.partner-grid > img {
max-width: 120px;
}
.partner-grid img {
max-height: 60px;
}
}
@media (min-width: 961px) {
.hero {
background-attachment: fixed;
}
}
@media (max-width: 960px) {
.sound-toggle {
bottom: auto;
top: 76px;
left: 12px;
width: 40px;
height: 40px;
font-size: 0.9rem;
}
.theme-toggle {
bottom: auto;
top: 76px;
left: 60px;
width: 40px;
height: 40px;
font-size: 0.9rem;
}
#back-to-top {
bottom: auto;
top: 76px;
right: 12px;
width: 40px;
height: 40px;
font-size: 0.9rem;
}
.attendee-counter {
bottom: auto;
top: 124px;
right: 12px;
padding: 8px 12px;
}
.quest-badge {
top: 124px;
right: 12px;
width: 48px;
height: 48px;
}
.attendee-counter {
top: 178px;
right: 12px;
}
}