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;
+}