diff --git a/assets/FiraCode-VariableFont_wght.ttf b/assets/FiraCode-VariableFont_wght.ttf deleted file mode 100644 index 5655ed5..0000000 Binary files a/assets/FiraCode-VariableFont_wght.ttf and /dev/null differ diff --git a/assets/FiraSans-Regular.ttf b/assets/FiraSans-Regular.ttf deleted file mode 100644 index 6f80647..0000000 Binary files a/assets/FiraSans-Regular.ttf and /dev/null differ diff --git a/assets/FiraSans-Regular.woff2 b/assets/FiraSans-Regular.woff2 new file mode 100644 index 0000000..38b50ef Binary files /dev/null and b/assets/FiraSans-Regular.woff2 differ diff --git a/css/styles.css b/css/styles.css index c55dd36..ad27399 100644 --- a/css/styles.css +++ b/css/styles.css @@ -51,7 +51,8 @@ img { @font-face { font-family: "FiraSans"; - src: url("/assets/FiraSans-Regular.ttf") format("truetype"); + src: url("/assets/FiraSans-Regular.woff2") format("woff2"); + font-display: swap; } /* ---------- Medieval theme base ---------- */ @@ -526,7 +527,7 @@ h6 { bottom: 0; left: 0; width: 100%; - display: none; + display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; @@ -538,17 +539,62 @@ h6 { padding: 8px 12px; box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.3); transform: translateY(100%); - transition: transform 0.3s ease; + visibility: hidden; + pointer-events: none; + transition: transform 0.4s ease-in-out, visibility 0s linear 0.4s; } .sticky-bar.is-visible { - display: flex; transform: translateY(0); + visibility: visible; + pointer-events: auto; + transition: transform 0.4s ease-in-out, visibility 0s linear 0s; } @media (min-width: 961px) { .sticky-bar { - display: none !important; + max-width: 1200px; + left: 50%; + transform: translateX(-50%) translateY(100%); + border-radius: 16px 16px 0 0; + padding: 12px 24px; + gap: 16px; + box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.35); + } + + .sticky-bar.is-visible { + transform: translateX(-50%) translateY(0); + } + + .sticky-bar__label { + font-size: 0.85rem; + } + + .sticky-bar__countdown { + font-size: 0.85rem; + } + + .sticky-bar__actions { + gap: 10px; + } + + .sticky-bar__btn { + width: 40px; + height: 40px; + font-size: 1rem; + } + + .sticky-bar__cta { + padding: 0.6rem 1.4rem; + font-size: 0.9rem; + } + + .sticky-bar .attendee-counter__number { + font-size: 0.9rem; + } + + .sticky-bar .attendee-counter__label { + font-size: 0.6rem; } } @@ -744,7 +790,7 @@ h6 { top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.9); - z-index: 200; + z-index: 1100; text-align: center; padding: 36px 28px 28px; max-width: 560px; @@ -806,7 +852,7 @@ h6 { .hero__popup-backdrop { position: fixed; inset: 0; - z-index: 199; + z-index: 1099; background: rgba(0, 0, 0, 0.6); opacity: 0; visibility: hidden; @@ -1714,12 +1760,11 @@ footer { .speaker:hover .speaker__media img { transform: scale(1.05); } - .speaker__play { position: absolute; top: 50%; left: 50%; - transform: translate(-50%, -50%); + transform: translate(-50%, -50%) scale(0.8); width: 56px; height: 56px; border-radius: 50%; @@ -1732,16 +1777,52 @@ footer { align-items: center; justify-content: center; opacity: 0; - transition: opacity 0.25s ease, transform 0.25s ease; + transition: opacity 0.25s ease, transform 0.25s ease, + box-shadow 0.25s ease; z-index: 2; } -.speaker:hover .speaker__play { +.speaker:hover .speaker__play, +.speaker__play:focus-visible { opacity: 1; + transform: translate(-50%, -50%) scale(1); } .speaker__play:hover { transform: translate(-50%, -50%) scale(1.1); + box-shadow: 0 0 0 8px rgba(52, 168, 90, 0.25); +} + +@media (hover: none) { + .speaker__play { + opacity: 1; + transform: translate(-50%, -50%) scale(1); + } +} + +.speaker__video-badge { + position: absolute; + bottom: 8px; + left: 8px; + display: inline-flex; + align-items: center; + gap: 5px; + padding: 4px 10px; + border-radius: 999px; + background: rgba(0, 0, 0, 0.65); + color: var(--color-white); + font-size: 0.7rem; + font-weight: 700; + letter-spacing: 0.02em; + z-index: 2; + pointer-events: none; + backdrop-filter: blur(4px); + -webkit-backdrop-filter: blur(4px); +} + +.speaker__video-badge i { + color: var(--color-gold-light); + font-size: 0.8rem; } .speaker__body { @@ -1804,7 +1885,7 @@ footer { .speaker-modal { position: fixed; inset: 0; - z-index: 100; + z-index: 1100; display: none; align-items: center; justify-content: center; @@ -1859,7 +1940,7 @@ footer { .lightbox { position: fixed; inset: 0; - z-index: 100; + z-index: 1100; display: none; align-items: center; justify-content: center; @@ -4554,3 +4635,113 @@ footer { right: 12px; } } + +/* ---------- Tickets embed ---------- */ +.tickets-embed { + width: 100%; + padding: 80px 24px; + display: flex; + flex-direction: column; + align-items: center; + gap: 24px; + background: var(--bg-surface); +} + +.tickets-embed__title { + text-align: center; + margin: 0; +} + +.tickets-embed__intro { + text-align: center; + max-width: 700px; + font-size: 1.05rem; + line-height: 1.6; + margin: 0; +} + +.tickets-embed__widget { + width: 100%; + max-width: 900px; + border-radius: 16px; + overflow: hidden; + background: var(--color-white); + box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08); +} + +.tickets-embed__widget iframe { + display: block; + width: 100% !important; + overflow: hidden; +} + +@media (max-width: 640px) { + .tickets-embed__widget { + overflow: visible; + } + .tickets-embed__widget iframe { + max-width: 100%; + overflow: hidden; + scrollbar-width: none; + -ms-overflow-style: none; + } + .tickets-embed__widget iframe::-webkit-scrollbar { + display: none; + } +} + +.tickets-embed__fallback { + display: none; + flex-direction: column; + align-items: center; + gap: 16px; + padding: 40px 24px; + text-align: center; +} + +.tickets-embed__fallback.is-visible { + display: flex; +} + +.tickets-embed__fallback p { + margin: 0; + font-size: 1rem; + color: var(--text-muted); +} + +.tickets-embed__notes { + list-style: none; + margin: 0; + padding: 0; + max-width: 760px; + width: 100%; + display: flex; + flex-direction: column; + gap: 14px; +} + +.tickets-embed__notes li { + display: flex; + align-items: flex-start; + gap: 12px; + font-size: 0.98rem; + line-height: 1.6; + color: var(--color-text); +} + +.tickets-embed__notes li i { + margin-top: 4px; + color: var(--color-primary, #579c8b); + flex-shrink: 0; +} + +.tickets-embed__notes-hero { + border: 1px solid #d1c8e6; + background: #f6f3fc; + border-radius: 12px; + padding: 14px 16px; +} + +.tickets-embed__notes-hero i { + color: #8b5cf6 !important; +}