From add9056261446073956b560a1c05595b7f983d56 Mon Sep 17 00:00:00 2001 From: mawkone Date: Thu, 14 May 2026 13:58:52 -0700 Subject: [PATCH] design(ui): adjust mobile h1 size to prevent text wrapping issues --- vibn-frontend/app/styles/new-site.css | 692 ++++++++++++++++++-------- 1 file changed, 473 insertions(+), 219 deletions(-) diff --git a/vibn-frontend/app/styles/new-site.css b/vibn-frontend/app/styles/new-site.css index 242835b8..db4780b9 100644 --- a/vibn-frontend/app/styles/new-site.css +++ b/vibn-frontend/app/styles/new-site.css @@ -1,240 +1,494 @@ +.new-site-wrapper { + --bg: oklch(0.155 0.008 60); + --bg-1: oklch(0.185 0.009 60); + --bg-2: oklch(0.225 0.01 60); + --hairline: oklch(0.32 0.01 60 / 0.55); + --hairline-2: oklch(0.4 0.012 60 / 0.35); + --fg: oklch(0.97 0.005 80); + --fg-dim: oklch(0.78 0.006 80); + --fg-mute: oklch(0.58 0.006 80); + --fg-faint: oklch(0.42 0.006 80); - .new-site-wrapper { - --bg: oklch(0.155 0.008 60); - --bg-1: oklch(0.185 0.009 60); - --bg-2: oklch(0.225 0.010 60); - --hairline: oklch(0.32 0.010 60 / 0.55); - --hairline-2: oklch(0.40 0.012 60 / 0.35); - --fg: oklch(0.97 0.005 80); - --fg-dim: oklch(0.78 0.006 80); - --fg-mute: oklch(0.58 0.006 80); - --fg-faint: oklch(0.42 0.006 80); + --accent: oklch(0.74 0.175 35); /* warm coral, default */ + --accent-soft: oklch(0.74 0.175 35 / 0.18); + --accent-glow: oklch(0.74 0.175 35 / 0.35); + --accent-fg: oklch(0.18 0.04 35); - --accent: oklch(0.74 0.175 35); /* warm coral, default */ - --accent-soft: oklch(0.74 0.175 35 / 0.18); - --accent-glow: oklch(0.74 0.175 35 / 0.35); - --accent-fg: oklch(0.18 0.04 35); + --ok: oklch(0.78 0.16 155); - --ok: oklch(0.78 0.16 155); + --r-sm: 8px; + --r-md: 12px; + --r-lg: 18px; + --r-xl: 28px; - --r-sm: 8px; - --r-md: 12px; - --r-lg: 18px; - --r-xl: 28px; + --maxw: 1240px; + --pad: clamp(20px, 4vw, 56px); - --maxw: 1240px; - --pad: clamp(20px, 4vw, 56px); + --font-sans: + "Geist", ui-sans-serif, system-ui, -apple-system, "Helvetica Neue", + sans-serif; + --font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace; +} - --font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Helvetica Neue", sans-serif; - --font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace; - } +* { + box-sizing: border-box; +} +html, +.new-site-wrapper { + margin: 0; + padding: 0; +} +.new-site-wrapper { + background: var(--bg); + color: var(--fg); + font-family: var(--font-sans); + font-weight: 400; + line-height: 1.45; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + overflow-x: hidden; +} +.new-site-wrapper::before { + /* subtle grid */ + content: ""; + position: fixed; + inset: 0; + background-image: + linear-gradient( + to right, + oklch(0.3 0.01 60 / 0.1) 1px, + transparent 1px + ), + linear-gradient( + to bottom, + oklch(0.3 0.01 60 / 0.1) 1px, + transparent 1px + ); + background-size: 56px 56px; + mask-image: radial-gradient( + ellipse 90% 70% at 50% 30%, + #000 30%, + transparent 80% + ); + -webkit-mask-image: radial-gradient( + ellipse 90% 70% at 50% 30%, + #000 30%, + transparent 80% + ); + pointer-events: none; + z-index: 0; +} +.new-site-wrapper::after { + /* film grain */ + content: ""; + position: fixed; + inset: 0; + pointer-events: none; + z-index: 1; + opacity: 0.035; + mix-blend-mode: overlay; + background-image: url("data:image/svg+xml;utf8,"); +} - * { box-sizing: border-box; } - html, .new-site-wrapper { margin: 0; padding: 0; } - .new-site-wrapper { - background: var(--bg); - color: var(--fg); - font-family: var(--font-sans); - font-weight: 400; - line-height: 1.45; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; - overflow-x: hidden; - } - .new-site-wrapper::before { - /* subtle grid */ - content: ""; - position: fixed; inset: 0; - background-image: - linear-gradient(to right, oklch(0.30 0.01 60 / 0.10) 1px, transparent 1px), - linear-gradient(to bottom, oklch(0.30 0.01 60 / 0.10) 1px, transparent 1px); - background-size: 56px 56px; - mask-image: radial-gradient(ellipse 90% 70% at 50% 30%, #000 30%, transparent 80%); - -webkit-mask-image: radial-gradient(ellipse 90% 70% at 50% 30%, #000 30%, transparent 80%); - pointer-events: none; - z-index: 0; - } - .new-site-wrapper::after { - /* film grain */ - content: ""; - position: fixed; inset: 0; - pointer-events: none; - z-index: 1; - opacity: 0.035; - mix-blend-mode: overlay; - background-image: url("data:image/svg+xml;utf8,"); - } +/* base typography */ +h1, +h2, +h3, +h4 { + margin: 0; + font-weight: 500; + letter-spacing: -0.02em; + line-height: 1.05; +} +p { + margin: 0; +} +a { + color: inherit; + text-decoration: none; +} +button { + font: inherit; + color: inherit; + background: none; + border: 0; + padding: 0; + cursor: pointer; +} +::selection { + background: var(--accent); + color: var(--accent-fg); +} - /* base typography */ - h1, h2, h3, h4 { margin: 0; font-weight: 500; letter-spacing: -0.02em; line-height: 1.05; } - p { margin: 0; } - a { color: inherit; text-decoration: none; } - button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; } - ::selection { background: var(--accent); color: var(--accent-fg); } +/* re-usable layout */ +.wrap { + position: relative; + width: 100%; + max-width: var(--maxw); + margin: 0 auto; + padding-inline: var(--pad); + z-index: 2; +} - /* re-usable layout */ - .wrap { - position: relative; - width: 100%; - max-width: var(--maxw); - margin: 0 auto; - padding-inline: var(--pad); - z-index: 2; - } +.mono { + font-family: var(--font-mono); + font-feature-settings: "ss01" on; +} +.eyebrow { + display: inline-flex; + align-items: center; + gap: 8px; + font-family: var(--font-mono); + font-size: 11px; + letter-spacing: 0.14em; + text-transform: uppercase; + color: var(--fg-mute); +} +.eyebrow::before { + content: ""; + width: 5px; + height: 5px; + border-radius: 50%; + background: var(--accent); + box-shadow: 0 0 12px var(--accent-glow); +} - .mono { font-family: var(--font-mono); font-feature-settings: "ss01" on; } - .eyebrow { - display: inline-flex; align-items: center; gap: 8px; - font-family: var(--font-mono); - font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; - color: var(--fg-mute); - } - .eyebrow::before { - content: ""; width: 5px; height: 5px; border-radius: 50%; - background: var(--accent); box-shadow: 0 0 12px var(--accent-glow); - } - - /* primary button */ - .btn { - display: inline-flex; align-items: center; gap: 10px; - height: 46px; padding: 0 22px; - border-radius: 999px; - font-weight: 500; - transition: transform .12s ease, box-shadow .2s ease, background .2s ease; - white-space: nowrap; - } - .btn-primary { - background: var(--accent); - color: var(--accent-fg); - box-shadow: +/* primary button */ +.btn { + display: inline-flex; + align-items: center; + gap: 10px; + height: 46px; + padding: 0 22px; + border-radius: 999px; + font-weight: 500; + transition: + transform 0.12s ease, + box-shadow 0.2s ease, + background 0.2s ease; + white-space: nowrap; +} +.btn-primary { + background: var(--accent); + color: var(--accent-fg); + box-shadow: 0 0 0 1px oklch(0.84 0.16 35 / 0.5) inset, 0 10px 40px -10px var(--accent-glow), 0 0 50px -8px var(--accent-glow); - } - .btn-primary:hover { transform: translateY(-1px); } - .btn-primary .arrow { transition: transform .15s ease; } - .btn-primary:hover .arrow { transform: translateX(3px); } - .btn-ghost { - color: var(--fg-dim); - border: 1px solid var(--hairline); - background: oklch(0.20 0.009 60 / 0.4); - backdrop-filter: blur(8px); - } - .btn-ghost:hover { color: var(--fg); border-color: var(--hairline-2); } +} +.btn-primary:hover { + transform: translateY(-1px); +} +.btn-primary .arrow { + transition: transform 0.15s ease; +} +.btn-primary:hover .arrow { + transform: translateX(3px); +} +.btn-ghost { + color: var(--fg-dim); + border: 1px solid var(--hairline); + background: oklch(0.2 0.009 60 / 0.4); + backdrop-filter: blur(8px); +} +.btn-ghost:hover { + color: var(--fg); + border-color: var(--hairline-2); +} - /* gradient hairline card */ - .card { - position: relative; - background: linear-gradient(180deg, oklch(0.20 0.009 60 / 0.55), oklch(0.17 0.008 60 / 0.5)); - border-radius: var(--r-lg); - padding: 28px; - } - .card::before { - content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px; - background: linear-gradient(180deg, var(--hairline-2), oklch(0.22 0.010 60 / 0.2)); - -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); - mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); - -webkit-mask-composite: xor; - mask-composite: exclude; - pointer-events: none; - } +/* gradient hairline card */ +.card { + position: relative; + background: linear-gradient( + 180deg, + oklch(0.2 0.009 60 / 0.55), + oklch(0.17 0.008 60 / 0.5) + ); + border-radius: var(--r-lg); + padding: 28px; +} +.card::before { + content: ""; + position: absolute; + inset: 0; + border-radius: inherit; + padding: 1px; + background: linear-gradient( + 180deg, + var(--hairline-2), + oklch(0.22 0.01 60 / 0.2) + ); + -webkit-mask: + linear-gradient(#000 0 0) content-box, + linear-gradient(#000 0 0); + mask: + linear-gradient(#000 0 0) content-box, + linear-gradient(#000 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; +} - /* hide ::-webkit-scrollbar globally where it'd jitter layout */ - .no-scrollbar::-webkit-scrollbar { display: none; } +/* hide ::-webkit-scrollbar globally where it'd jitter layout */ +.no-scrollbar::-webkit-scrollbar { + display: none; +} - /* nav */ - .nav { - position: sticky; top: 0; - z-index: 50; - backdrop-filter: blur(12px) saturate(140%); - -webkit-backdrop-filter: blur(12px) saturate(140%); - background: oklch(0.155 0.008 60 / 0.55); - border-bottom: 1px solid oklch(0.30 0.01 60 / 0.0); - transition: border-color .2s; +/* nav */ +.nav { + position: sticky; + top: 0; + z-index: 50; + backdrop-filter: blur(12px) saturate(140%); + -webkit-backdrop-filter: blur(12px) saturate(140%); + background: oklch(0.155 0.008 60 / 0.55); + border-bottom: 1px solid oklch(0.3 0.01 60 / 0); + transition: border-color 0.2s; +} +.nav.scrolled { + border-bottom-color: oklch(0.3 0.01 60 / 0.4); +} +.nav-inner { + display: flex; + align-items: center; + justify-content: space-between; + height: 64px; +} +.logo { + display: inline-flex; + align-items: center; + gap: 9px; + font-weight: 600; + font-size: 17px; + letter-spacing: -0.02em; +} +.logo-mark { + width: 26px; + height: 26px; + border-radius: 50%; + background: linear-gradient( + 135deg, + var(--accent) 0%, + oklch(0.65 0.2 18) 100% + ); + box-shadow: + 0 0 22px var(--accent-glow), + inset 0 1px 0 oklch(1 0 0 / 0.25); + display: grid; + place-items: center; + color: var(--accent-fg); + flex-shrink: 0; +} +.logo-mark svg { + display: block; +} +.logo-caret { + animation: caret-blink 1.4s steps(2) infinite; +} +@keyframes caret-blink { + 50% { + opacity: 0.25; + } +} +.nav-links { + display: flex; + gap: 28px; + color: var(--fg-mute); + font-size: 14px; +} +.nav-links a:hover { + color: var(--fg); +} +.nav-cta { + display: flex; + gap: 10px; + align-items: center; +} +.nav-cta .btn { + height: 36px; + padding: 0 16px; + font-size: 14px; +} +@media (max-width: 760px) { + .nav-links { + display: none; + } +} + +/* section spacing */ +.section { + position: relative; + padding-block: clamp(80px, 11vh, 140px); +} +.section-tight { + padding-block: clamp(60px, 8vh, 100px); +} + +/* responsive grid helper */ +.grid-3 { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 18px; +} +@media (max-width: 880px) { + .grid-3 { + grid-template-columns: 1fr; + } +} + +/* -- Mobile Adjustments -- */ +@media (max-width: 760px) { + .nav-links { + display: none; } - .nav.scrolled { border-bottom-color: oklch(0.30 0.01 60 / 0.4); } .nav-inner { - display: flex; align-items: center; justify-content: space-between; - height: 64px; + padding: 0 16px; } - .logo { - display: inline-flex; align-items: center; gap: 9px; - font-weight: 600; font-size: 17px; letter-spacing: -0.02em; - } - .logo-mark { - width: 26px; height: 26px; border-radius: 50%; - background: linear-gradient(135deg, var(--accent) 0%, oklch(0.65 0.20 18) 100%); - box-shadow: 0 0 22px var(--accent-glow), inset 0 1px 0 oklch(1 0 0 / 0.25); - display: grid; place-items: center; - color: var(--accent-fg); - flex-shrink: 0; - } - .logo-mark svg { display: block; } - .logo-caret { animation: caret-blink 1.4s steps(2) infinite; } - @keyframes caret-blink { 50% { opacity: 0.25; } } - .nav-links { display: flex; gap: 28px; color: var(--fg-mute); font-size: 14px; } - .nav-links a:hover { color: var(--fg); } - .nav-cta { display: flex; gap: 10px; align-items: center; } - .nav-cta .btn { height: 36px; padding: 0 16px; font-size: 14px; } - @media (max-width: 760px) { .nav-links { display: none; } } - - /* section spacing */ - .section { position: relative; padding-block: clamp(80px, 11vh, 140px); } - .section-tight { padding-block: clamp(60px, 8vh, 100px); } - - /* responsive grid helper */ - .grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; } - @media (max-width: 880px) { .grid-3 { grid-template-columns: 1fr; } } - - - /* -- Mobile Adjustments -- */ - @media (max-width: 760px) { - .nav-links { display: none; } - .nav-inner { padding: 0 16px; } - .wrap { padding-inline: 20px; } - - h1, h2 { text-wrap: balance; word-wrap: break-word; overflow-wrap: break-word; hyphens: auto; } - p { text-wrap: pretty; } - - .hero-quote { font-size: clamp(36px, 12vw, 56px) !important; padding: 0 10px; } - .hero-sub { font-size: 18px !important; padding: 0 10px; } - - .prompt { margin: 14px 16px 0; max-width: calc(100% - 32px); } - .prompt-inner { padding: 14px 14px 10px !important; } - .prompt-bar { flex-direction: column; align-items: stretch !important; gap: 12px; } - .prompt-tools { justify-content: center; flex-wrap: wrap; } - .prompt-send { width: 100%; justify-content: center; } - - .wall-title { font-size: clamp(32px, 10vw, 44px) !important; } - .window { margin: 0 16px; width: calc(100% - 32px); border-radius: 12px; } - .window-bar { padding: 10px 12px; } - .window-name { font-size: 11px; } - .window-tag { display: none; } - .msg { padding: 16px 12px; flex-direction: column; gap: 10px; } - .msg-name { font-size: 11px; } - .homework-list { font-size: 13px; padding-left: 20px; } - - .crossed-title { font-size: clamp(32px, 10vw, 44px) !important; } - .crossed-sub { font-size: 16px !important; } - - .journey-grid { grid-template-columns: 1fr !important; padding: 0 16px; } - .step { min-height: auto; padding: 24px 20px; } - - .audience-grid { grid-template-columns: 1fr !important; padding: 0 16px; } - .a-card { min-height: auto; padding: 24px 20px; } - - .closing-title { font-size: clamp(36px, 12vw, 52px) !important; } - .closing-cta .row { flex-direction: column; width: 100%; padding: 0 20px; } - .closing-cta .row .btn { width: 100%; justify-content: center; } - - .vibn-footer-inner { flex-direction: column; align-items: center; text-align: center; gap: 20px; } - .vibn-footer-trust { justify-content: center; } - .vibn-footer-bottom { flex-direction: column-reverse; gap: 24px; text-align: center; } - .vibn-footer-links { flex-wrap: wrap; justify-content: center; } - - /* Hide the modal steps animation on mobile to save space */ - .modal { padding: 20px 20px 16px !important; margin: 16px; width: calc(100% - 32px) !important; } - .modal-steps { display: none !important; } + .wrap { + padding-inline: 20px; } -.new-site-wrapper { min-height: 100vh; position: relative; overflow: hidden; } + h1, + h2 { + text-wrap: balance; + word-wrap: break-word; + overflow-wrap: break-word; + hyphens: auto; + } + p { + text-wrap: pretty; + } + + .hero-quote { + font-size: clamp(32px, 10.5vw, 48px) !important; + padding: 0 5px; + } + .hero-sub { + font-size: 18px !important; + padding: 0 10px; + } + + .prompt { + margin: 14px 16px 0; + max-width: calc(100% - 32px); + } + .prompt-inner { + padding: 14px 14px 10px !important; + } + .prompt-bar { + flex-direction: column; + align-items: stretch !important; + gap: 12px; + } + .prompt-tools { + justify-content: center; + flex-wrap: wrap; + } + .prompt-send { + width: 100%; + justify-content: center; + } + + .wall-title { + font-size: clamp(32px, 10vw, 44px) !important; + } + .window { + margin: 0 16px; + width: calc(100% - 32px); + border-radius: 12px; + } + .window-bar { + padding: 10px 12px; + } + .window-name { + font-size: 11px; + } + .window-tag { + display: none; + } + .msg { + padding: 16px 12px; + flex-direction: column; + gap: 10px; + } + .msg-name { + font-size: 11px; + } + .homework-list { + font-size: 13px; + padding-left: 20px; + } + + .crossed-title { + font-size: clamp(32px, 10vw, 44px) !important; + } + .crossed-sub { + font-size: 16px !important; + } + + .journey-grid { + grid-template-columns: 1fr !important; + padding: 0 16px; + } + .step { + min-height: auto; + padding: 24px 20px; + } + + .audience-grid { + grid-template-columns: 1fr !important; + padding: 0 16px; + } + .a-card { + min-height: auto; + padding: 24px 20px; + } + + .closing-title { + font-size: clamp(36px, 12vw, 52px) !important; + } + .closing-cta .row { + flex-direction: column; + width: 100%; + padding: 0 20px; + } + .closing-cta .row .btn { + width: 100%; + justify-content: center; + } + + .vibn-footer-inner { + flex-direction: column; + align-items: center; + text-align: center; + gap: 20px; + } + .vibn-footer-trust { + justify-content: center; + } + .vibn-footer-bottom { + flex-direction: column-reverse; + gap: 24px; + text-align: center; + } + .vibn-footer-links { + flex-wrap: wrap; + justify-content: center; + } + + /* Hide the modal steps animation on mobile to save space */ + .modal { + padding: 20px 20px 16px !important; + margin: 16px; + width: calc(100% - 32px) !important; + } + .modal-steps { + display: none !important; + } +} + +.new-site-wrapper { + min-height: 100vh; + position: relative; + overflow: hidden; +}