diff --git a/src/App.tsx b/src/App.tsx index dbc1d99..0955470 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -2,6 +2,7 @@ import { Header } from "./components/layout/Header"; import { Footer } from "./components/layout/Footer"; import { Hero } from "./components/sections/Hero"; import { Audience } from "./components/sections/Audience"; +import { VideoShowcase } from "./components/sections/VideoShowcase"; import { Benefits } from "./components/sections/Benefits"; import { Features } from "./components/sections/Features"; import { Steps } from "./components/sections/Steps"; @@ -20,6 +21,7 @@ export function App() {
+ diff --git a/src/components/sections/Audience.module.css b/src/components/sections/Audience.module.css index 3fcc6d4..e67ac97 100644 --- a/src/components/sections/Audience.module.css +++ b/src/components/sections/Audience.module.css @@ -1,3 +1,8 @@ +.section { + padding-top: calc(88px * 0.7); + padding-bottom: calc(88px * 0.7); +} + .grid { display: grid; grid-template-columns: repeat(3, 1fr); @@ -36,3 +41,10 @@ grid-template-columns: 1fr; } } + +@media (max-width: 640px) { + .section { + padding-top: calc(64px * 0.7); + padding-bottom: calc(64px * 0.7); + } +} diff --git a/src/components/sections/Audience.tsx b/src/components/sections/Audience.tsx index 9077732..aa15147 100644 --- a/src/components/sections/Audience.tsx +++ b/src/components/sections/Audience.tsx @@ -8,7 +8,11 @@ export function Audience() { const { copy } = useLocale(); return ( -
+
{AUDIENCE_CARD_IDS.map((id) => { const card = copy.audience.cards[id]; diff --git a/src/components/sections/Hero.module.css b/src/components/sections/Hero.module.css index 224a0ec..05e35ee 100644 --- a/src/components/sections/Hero.module.css +++ b/src/components/sections/Hero.module.css @@ -1,5 +1,5 @@ .hero { - padding: 48px 24px 80px; + padding: 48px 24px calc(80px * 0.7); } .inner { diff --git a/src/components/sections/VideoShowcase.module.css b/src/components/sections/VideoShowcase.module.css new file mode 100644 index 0000000..d91a21b --- /dev/null +++ b/src/components/sections/VideoShowcase.module.css @@ -0,0 +1,80 @@ +.section { + padding-top: calc(88px * 0.7); +} + +.section :global(.subtitle) { + max-width: 720px; + margin-bottom: 36px; +} + +.frame { + position: relative; + width: 100%; +} + +.glow { + position: absolute; + inset: 8% 4%; + background: radial-gradient( + ellipse at 50% 50%, + rgba(124, 58, 237, 0.35), + transparent 70% + ); + filter: blur(36px); + pointer-events: none; +} + +.player { + position: relative; + width: 100%; + aspect-ratio: 16 / 9; + overflow: hidden; + border: 1px solid var(--color-border-strong); + border-radius: var(--radius-lg); + background: #050408; + box-shadow: + var(--shadow-glow), + 0 24px 56px rgba(0, 0, 0, 0.45), + inset 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.iframe { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + border: 0; +} + +.caption { + margin: 16px 0 0; + font-size: 13px; + text-align: center; + color: var(--color-text-dim); +} + +.link { + color: var(--color-gold); + text-decoration: underline; + text-decoration-color: var(--color-gold-dim); + text-underline-offset: 3px; + transition: color 0.15s ease; +} + +.link:hover { + color: var(--color-gold-bright); +} + +@media (max-width: 640px) { + .section { + padding-top: calc(64px * 0.7); + } + + .section :global(.subtitle) { + margin-bottom: 28px; + } + + .player { + border-radius: var(--radius-md); + } +} diff --git a/src/components/sections/VideoShowcase.tsx b/src/components/sections/VideoShowcase.tsx new file mode 100644 index 0000000..93dfd63 --- /dev/null +++ b/src/components/sections/VideoShowcase.tsx @@ -0,0 +1,43 @@ +import { SHOWCASE_VIDEO } from "../../data/siteContent"; +import { useLocale } from "../../i18n/LocaleProvider"; +import { Section } from "../layout/Section"; + +import styles from "./VideoShowcase.module.css"; + +export function VideoShowcase() { + const { copy } = useLocale(); + + return ( +
+
+