aiplang 2.11.8 → 2.11.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/aiplang.js +609 -624
- package/package.json +1 -1
- package/server/server.js +1 -1
package/bin/aiplang.js
CHANGED
|
@@ -5,7 +5,7 @@ const fs = require('fs')
|
|
|
5
5
|
const path = require('path')
|
|
6
6
|
const http = require('http')
|
|
7
7
|
|
|
8
|
-
const VERSION = '2.11.
|
|
8
|
+
const VERSION = '2.11.9'
|
|
9
9
|
const RUNTIME_DIR = path.join(__dirname, '..', 'runtime')
|
|
10
10
|
const cmd = process.argv[2]
|
|
11
11
|
const args = process.argv.slice(3)
|
|
@@ -686,7 +686,7 @@ function generateTypes(app, srcFile) {
|
|
|
686
686
|
}
|
|
687
687
|
|
|
688
688
|
lines.push(`// ── aiplang version ──────────────────────────────────────────`)
|
|
689
|
-
lines.push(`export const AIPLANG_VERSION = '2.11.
|
|
689
|
+
lines.push(`export const AIPLANG_VERSION = '2.11.9'`)
|
|
690
690
|
lines.push(``)
|
|
691
691
|
return lines.join('\n')
|
|
692
692
|
}
|
|
@@ -1801,868 +1801,853 @@ function genCustomThemeVars(ct) {
|
|
|
1801
1801
|
|
|
1802
1802
|
function genThemeVarCSS(t) {
|
|
1803
1803
|
const r=[]
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
if(t.accent)
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
}
|
|
1814
|
-
if(t.
|
|
1815
|
-
const hex = t.bg.replace('#','')
|
|
1816
|
-
const rgb = hex.length===6 ? `${parseInt(hex.slice(0,2),16)},${parseInt(hex.slice(2,4),16)},${parseInt(hex.slice(4,6),16)}` : '3,7,18'
|
|
1817
|
-
rootVars.push(`--aip-bg:${t.bg}`)
|
|
1818
|
-
rootVars.push(`--aip-bg-rgb:${rgb}`)
|
|
1819
|
-
}
|
|
1820
|
-
if(t.text) rootVars.push(`--aip-text:${t.text}`)
|
|
1821
|
-
if(rootVars.length) r.push(`:root{${rootVars.join(';')}}`)
|
|
1822
|
-
if(t.accent) r.push(`.fx-cta,.fx-btn,.fx-pricing-cta{background:${t.accent}!important;color:#fff!important}`)
|
|
1823
|
-
if(t.bg) r.push(`body{background:${t.bg}!important}`)
|
|
1824
|
-
if(t.text) r.push(`body{color:${t.text}!important}`)
|
|
1825
|
-
if(t.font) r.push(`@import url('https://fonts.googleapis.com/css2?family=${t.font.replace(/ /g,'+')}:wght@400;700;900&display=swap');body{font-family:'${t.font}',system-ui,sans-serif!important}`)
|
|
1826
|
-
if(t.radius) r.push(`.fx-card,.fx-form,.fx-btn,.fx-input,.fx-cta,.fx-pricing-card{border-radius:${t.radius}!important}`)
|
|
1827
|
-
if(t.surface) r.push(`.fx-card,.fx-form{background:${t.surface}!important}`)
|
|
1828
|
-
if(t.border) r.push(`.fx-card,.fx-form,.fx-input{border-color:${t.border}!important}`)
|
|
1829
|
-
if(t.shadow) r.push(`.fx-card:hover{box-shadow:${t.shadow}!important}`)
|
|
1830
|
-
if(t.navbg) r.push(`.fx-nav{background:${t.navbg}!important}`)
|
|
1831
|
-
if(t.spacing) r.push(`.fx-sect,.fx-hero{padding-top:${t.spacing};padding-bottom:${t.spacing}}`)
|
|
1804
|
+
const rv=[]
|
|
1805
|
+
function h2r(h){h=h.replace('#','');return h.length===6?parseInt(h.slice(0,2),16)+','+parseInt(h.slice(2,4),16)+','+parseInt(h.slice(4,6),16):'255,255,255'}
|
|
1806
|
+
if(t.accent){rv.push('--aip-accent:'+t.accent);rv.push('--aip-accent-rgb:'+h2r(t.accent))}
|
|
1807
|
+
if(t.bg){var rgb=h2r(t.bg);rv.push('--ds-background-100:'+t.bg);rv.push('--ds-background-100-rgb:'+rgb);rv.push('--ds-background-200:'+t.bg)}
|
|
1808
|
+
if(t.text){rv.push('--ds-gray-1000:'+t.text)}
|
|
1809
|
+
if(t.radius){rv.push('--radius-sm:'+t.radius);rv.push('--radius-md:'+t.radius)}
|
|
1810
|
+
if(rv.length) r.push(':root{'+rv.join(';')+'}')
|
|
1811
|
+
if(t.font) r.push("body{font-family:'"+t.font+"',var(--geist-font)!important}")
|
|
1812
|
+
if(t.accent) r.push('.fx-cta,.fx-btn,.fx-pricing-cta,.fx-nav-cta{background:'+t.accent+'!important;color:#fff!important}')
|
|
1813
|
+
if(t.bg) r.push('body,html{background:'+t.bg+'!important}')
|
|
1814
|
+
if(t.text) r.push('body{color:'+t.text+'!important}')
|
|
1832
1815
|
return r.join('')
|
|
1833
1816
|
}
|
|
1834
1817
|
|
|
1818
|
+
|
|
1835
1819
|
function css(theme) {
|
|
1836
1820
|
// ════════════════════════════════════════════════════════════════
|
|
1837
|
-
// DESIGN SYSTEM —
|
|
1838
|
-
//
|
|
1821
|
+
// GEIST DESIGN SYSTEM — Vercel's design language for aiplang
|
|
1822
|
+
// Principles: precision, minimalism, Swiss typography, semantic tokens
|
|
1823
|
+
// Fonts: Geist Sans + Geist Mono (Google Fonts)
|
|
1839
1824
|
// ════════════════════════════════════════════════════════════════
|
|
1840
1825
|
const base = `
|
|
1841
|
-
:
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
--
|
|
1845
|
-
--
|
|
1846
|
-
|
|
1826
|
+
@import url('https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700;800;900&family=Geist+Mono:wght@400;500;700&display=swap');
|
|
1827
|
+
|
|
1828
|
+
:root {
|
|
1829
|
+
--geist-font:'Geist','Geist Sans',-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
|
|
1830
|
+
--geist-mono:'Geist Mono','Geist_Mono',ui-monospace,'Cascadia Code','Source Code Pro',Menlo,Consolas,'DejaVu Sans Mono',monospace;
|
|
1831
|
+
/* Spacing scale (4px base) */
|
|
1832
|
+
--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;
|
|
1833
|
+
--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;
|
|
1834
|
+
/* Radius */
|
|
1835
|
+
--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;
|
|
1836
|
+
/* Easing - Vercel guidelines */
|
|
1837
|
+
--ease-out:cubic-bezier(.16,1,.3,1);
|
|
1838
|
+
--ease-in-out:cubic-bezier(.4,0,.2,1);
|
|
1839
|
+
--ease-spring:cubic-bezier(.34,1.56,.64,1);
|
|
1840
|
+
/* Transitions - only opacity + transform per guidelines */
|
|
1841
|
+
--duration-fast:100ms;--duration-normal:150ms;--duration-slow:250ms;
|
|
1842
|
+
}
|
|
1843
|
+
|
|
1844
|
+
/* ── Reset ── */
|
|
1847
1845
|
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
|
|
1848
|
-
html{
|
|
1846
|
+
html{
|
|
1847
|
+
font-size:16px;
|
|
1848
|
+
scroll-behavior:smooth;
|
|
1849
|
+
text-size-adjust:100%;
|
|
1850
|
+
-webkit-text-size-adjust:100%;
|
|
1851
|
+
/* Vercel: tabular nums by default for consistency */
|
|
1852
|
+
font-feature-settings:'ss01','ss02','cv01','cv02';
|
|
1853
|
+
}
|
|
1849
1854
|
body{
|
|
1850
|
-
font-family:var(--
|
|
1851
|
-
background:var(--
|
|
1852
|
-
color:var(--
|
|
1853
|
-
line-height:1.
|
|
1855
|
+
font-family:var(--geist-font);
|
|
1856
|
+
background:var(--ds-background-100);
|
|
1857
|
+
color:var(--ds-gray-1000);
|
|
1858
|
+
line-height:1.5;
|
|
1854
1859
|
-webkit-font-smoothing:antialiased;
|
|
1855
1860
|
-moz-osx-font-smoothing:grayscale;
|
|
1856
1861
|
min-height:100vh;
|
|
1857
1862
|
overflow-x:hidden;
|
|
1863
|
+
/* Reduce banding from gradients */
|
|
1864
|
+
text-rendering:optimizeLegibility;
|
|
1858
1865
|
}
|
|
1859
1866
|
a{text-decoration:none;color:inherit}
|
|
1860
1867
|
img{max-width:100%;height:auto;display:block}
|
|
1861
|
-
input,button,select,textarea{font-family:
|
|
1862
|
-
button{cursor:pointer}
|
|
1863
|
-
code,pre{font-family:var(--
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1868
|
+
input,button,select,textarea{font-family:var(--geist-font);font-size:inherit}
|
|
1869
|
+
button{cursor:pointer;border:none;background:none}
|
|
1870
|
+
code,pre,kbd{font-family:var(--geist-mono)}
|
|
1871
|
+
/* Vercel guideline: touch-action on interactive elements */
|
|
1872
|
+
button,a,[role=button]{touch-action:manipulation}
|
|
1873
|
+
/* Vercel: visible focus ring */
|
|
1874
|
+
:focus-visible{
|
|
1875
|
+
outline:2px solid var(--ds-blue-700);
|
|
1876
|
+
outline-offset:2px;
|
|
1877
|
+
border-radius:var(--radius-sm);
|
|
1878
|
+
}
|
|
1879
|
+
/* Vercel: honor prefers-reduced-motion */
|
|
1880
|
+
@media(prefers-reduced-motion:reduce){
|
|
1881
|
+
*,*::before,*::after{
|
|
1882
|
+
animation-duration:.01ms!important;
|
|
1883
|
+
animation-iteration-count:1!important;
|
|
1884
|
+
transition-duration:.01ms!important;
|
|
1885
|
+
}
|
|
1875
1886
|
}
|
|
1876
1887
|
|
|
1877
1888
|
/* ═══════════════════════════════════════════
|
|
1878
|
-
NAV
|
|
1889
|
+
NAV — Geist nav style
|
|
1879
1890
|
═══════════════════════════════════════════ */
|
|
1880
1891
|
.fx-nav{
|
|
1881
|
-
|
|
1882
|
-
align-items:center;
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
background:rgba(var(--
|
|
1890
|
-
|
|
1891
|
-
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
flex-wrap:wrap;
|
|
1895
|
-
gap:.5rem;
|
|
1896
|
-
}
|
|
1897
|
-
.fx-nav.scrolled{border-bottom-color:var(--aip-border-strong)}
|
|
1892
|
+
position:sticky;top:0;z-index:200;
|
|
1893
|
+
display:flex;align-items:center;justify-content:space-between;
|
|
1894
|
+
padding:0 var(--space-6);height:54px;
|
|
1895
|
+
background:var(--ds-background-100);
|
|
1896
|
+
border-bottom:1px solid var(--ds-gray-alpha-400);
|
|
1897
|
+
/* Vercel: backdrop-blur for glass effect */
|
|
1898
|
+
backdrop-filter:blur(16px) saturate(200%);
|
|
1899
|
+
-webkit-backdrop-filter:blur(16px) saturate(200%);
|
|
1900
|
+
background:rgba(var(--ds-background-100-rgb),.92);
|
|
1901
|
+
flex-wrap:wrap;gap:var(--space-2);
|
|
1902
|
+
transition:border-color var(--duration-slow) var(--ease-in-out);
|
|
1903
|
+
}
|
|
1904
|
+
.fx-nav.scrolled{border-bottom-color:var(--ds-gray-alpha-400)}
|
|
1898
1905
|
.fx-brand{
|
|
1899
|
-
font-size:
|
|
1900
|
-
|
|
1901
|
-
letter-spacing:-.04em;
|
|
1902
|
-
color:var(--aip-text);
|
|
1906
|
+
font-size:14px;font-weight:600;letter-spacing:-.02em;
|
|
1907
|
+
color:var(--ds-gray-1000);
|
|
1903
1908
|
}
|
|
1904
|
-
.fx-nav-links{display:flex;align-items:center;gap
|
|
1909
|
+
.fx-nav-links{display:flex;align-items:center;gap:2px}
|
|
1905
1910
|
.fx-nav-link{
|
|
1906
|
-
|
|
1907
|
-
font-weight:
|
|
1908
|
-
color:var(--
|
|
1909
|
-
padding
|
|
1910
|
-
|
|
1911
|
-
transition:
|
|
1911
|
+
display:inline-flex;align-items:center;
|
|
1912
|
+
font-size:13px;font-weight:400;
|
|
1913
|
+
color:var(--ds-gray-900);
|
|
1914
|
+
padding:5px 10px;border-radius:var(--radius-md);
|
|
1915
|
+
/* Only transition opacity + transform per Vercel guidelines */
|
|
1916
|
+
transition:color var(--duration-normal) var(--ease-in-out),background var(--duration-normal) var(--ease-in-out);
|
|
1917
|
+
}
|
|
1918
|
+
.fx-nav-link:hover{
|
|
1919
|
+
color:var(--ds-gray-1000);
|
|
1920
|
+
background:var(--ds-gray-alpha-200);
|
|
1921
|
+
}
|
|
1922
|
+
/* Vercel CTA button style */
|
|
1923
|
+
.fx-nav-cta{
|
|
1924
|
+
display:inline-flex;align-items:center;gap:6px;
|
|
1925
|
+
height:32px;padding:0 12px;
|
|
1926
|
+
background:var(--ds-gray-1000);
|
|
1927
|
+
color:var(--ds-background-100);
|
|
1928
|
+
font-size:13px;font-weight:500;
|
|
1929
|
+
border-radius:var(--radius-md);
|
|
1930
|
+
transition:opacity var(--duration-normal) var(--ease-in-out);
|
|
1912
1931
|
white-space:nowrap;
|
|
1913
1932
|
}
|
|
1914
|
-
.fx-nav-
|
|
1915
|
-
.fx-
|
|
1916
|
-
|
|
1917
|
-
font-weight:700;
|
|
1918
|
-
padding:.4375rem 1rem;
|
|
1919
|
-
background:var(--aip-accent);
|
|
1920
|
-
color:#fff;
|
|
1921
|
-
border-radius:.5rem;
|
|
1922
|
-
transition:opacity .15s,transform .1s;
|
|
1923
|
-
letter-spacing:-.01em;
|
|
1924
|
-
}
|
|
1925
|
-
.fx-nav-cta:hover{opacity:.88;transform:translateY(-1px)}
|
|
1926
|
-
.fx-hamburger{display:none;flex-direction:column;gap:4px;background:none;border:none;padding:.375rem}
|
|
1927
|
-
.fx-hamburger span{display:block;width:20px;height:1.5px;background:var(--aip-text-muted);border-radius:1px;transition:all .2s}
|
|
1933
|
+
.fx-nav-cta:hover{opacity:.85}
|
|
1934
|
+
.fx-hamburger{display:none;flex-direction:column;gap:5px;padding:6px;border-radius:var(--radius-md)}
|
|
1935
|
+
.fx-hamburger span{display:block;width:18px;height:1px;background:var(--ds-gray-900);transition:all var(--duration-normal) var(--ease-in-out)}
|
|
1928
1936
|
.fx-hamburger.open span:nth-child(1){transform:rotate(45deg) translate(4px,4px)}
|
|
1929
|
-
.fx-hamburger.open span:nth-child(2){opacity:0
|
|
1937
|
+
.fx-hamburger.open span:nth-child(2){opacity:0}
|
|
1930
1938
|
.fx-hamburger.open span:nth-child(3){transform:rotate(-45deg) translate(4px,-4px)}
|
|
1931
1939
|
@media(max-width:640px){
|
|
1932
1940
|
.fx-hamburger{display:flex}
|
|
1933
|
-
.fx-nav-links{
|
|
1941
|
+
.fx-nav-links{
|
|
1942
|
+
display:none;width:100%;
|
|
1943
|
+
flex-direction:column;align-items:stretch;
|
|
1944
|
+
padding:8px 0;gap:1px;
|
|
1945
|
+
border-top:1px solid var(--ds-gray-alpha-400);margin-top:8px;
|
|
1946
|
+
}
|
|
1934
1947
|
.fx-nav-links.open{display:flex}
|
|
1935
|
-
.fx-nav-link{padding
|
|
1948
|
+
.fx-nav-link{padding:8px 10px}
|
|
1936
1949
|
}
|
|
1937
1950
|
|
|
1938
1951
|
/* ═══════════════════════════════════════════
|
|
1939
1952
|
HERO
|
|
1940
1953
|
═══════════════════════════════════════════ */
|
|
1941
1954
|
.fx-hero{
|
|
1942
|
-
display:flex;
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
padding:5rem 1.5rem 4rem;
|
|
1947
|
-
position:relative;
|
|
1955
|
+
display:flex;align-items:center;justify-content:center;
|
|
1956
|
+
min-height:calc(100svh - 54px);
|
|
1957
|
+
padding:80px 24px 64px;
|
|
1958
|
+
position:relative;overflow:hidden;
|
|
1948
1959
|
}
|
|
1949
1960
|
.fx-hero-inner{
|
|
1950
|
-
max-width:
|
|
1961
|
+
max-width:960px;width:100%;
|
|
1951
1962
|
text-align:center;
|
|
1952
|
-
display:flex;
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
gap:1.75rem;
|
|
1956
|
-
position:relative;
|
|
1957
|
-
z-index:1;
|
|
1958
|
-
}
|
|
1959
|
-
.fx-hero-split{
|
|
1960
|
-
display:grid;
|
|
1961
|
-
grid-template-columns:1fr 1fr;
|
|
1962
|
-
gap:4rem;
|
|
1963
|
-
align-items:center;
|
|
1964
|
-
padding:4rem 2.5rem;
|
|
1965
|
-
min-height:80vh;
|
|
1963
|
+
display:flex;flex-direction:column;align-items:center;
|
|
1964
|
+
gap:24px;
|
|
1965
|
+
position:relative;z-index:1;
|
|
1966
1966
|
}
|
|
1967
|
-
|
|
1968
|
-
.fx-hero-
|
|
1969
|
-
|
|
1970
|
-
.fx-hero-minimal{min-height:52vh!important}
|
|
1971
|
-
.fx-hero-tall{min-height:100vh!important}
|
|
1972
|
-
|
|
1973
|
-
/* Landing variant — grid + glow */
|
|
1967
|
+
.fx-hero-minimal{min-height:50vh!important}
|
|
1968
|
+
.fx-hero-tall{min-height:100svh!important}
|
|
1969
|
+
/* Landing: Vercel-style grid + radial */
|
|
1974
1970
|
.fx-hero-landing{overflow:hidden}
|
|
1971
|
+
.fx-hero-grid{
|
|
1972
|
+
position:absolute;inset:0;pointer-events:none;
|
|
1973
|
+
background-image:
|
|
1974
|
+
linear-gradient(var(--ds-gray-alpha-200) 1px,transparent 1px),
|
|
1975
|
+
linear-gradient(90deg,var(--ds-gray-alpha-200) 1px,transparent 1px);
|
|
1976
|
+
background-size:48px 48px;
|
|
1977
|
+
mask-image:radial-gradient(ellipse 80% 70% at 50% 0%,black 40%,transparent 100%);
|
|
1978
|
+
-webkit-mask-image:radial-gradient(ellipse 80% 70% at 50% 0%,black 40%,transparent 100%);
|
|
1979
|
+
}
|
|
1980
|
+
/* Vercel-style ambient glow */
|
|
1975
1981
|
.fx-hero-landing::after{
|
|
1976
|
-
content:'';
|
|
1977
|
-
|
|
1978
|
-
width:900px;height:600px;
|
|
1982
|
+
content:'';position:absolute;
|
|
1983
|
+
width:80vw;height:40vh;max-width:900px;
|
|
1979
1984
|
border-radius:50%;
|
|
1980
|
-
background:radial-gradient(ellipse,rgba(var(--aip-accent-rgb),.
|
|
1981
|
-
left:50%;top:50
|
|
1982
|
-
transform:translate(-50%,-55%);
|
|
1983
|
-
pointer-events:none;
|
|
1984
|
-
animation:fx-breathe 8s ease-in-out infinite;
|
|
1985
|
-
}
|
|
1986
|
-
@keyframes fx-breathe{0%,100%{transform:translate(-50%,-55%) scale(1)}50%{transform:translate(-50%,-55%) scale(1.12)}}
|
|
1987
|
-
.fx-hero-grid{
|
|
1988
|
-
position:absolute;inset:0;
|
|
1989
|
-
background:
|
|
1990
|
-
linear-gradient(var(--aip-grid-line) 1px,transparent 1px),
|
|
1991
|
-
linear-gradient(90deg,var(--aip-grid-line) 1px,transparent 1px);
|
|
1992
|
-
background-size:64px 64px;
|
|
1993
|
-
mask-image:radial-gradient(ellipse 75% 65% at 50% 50%,black 20%,transparent);
|
|
1994
|
-
-webkit-mask-image:radial-gradient(ellipse 75% 65% at 50% 50%,black 20%,transparent);
|
|
1985
|
+
background:radial-gradient(ellipse,rgba(var(--aip-accent-rgb),.08) 0%,transparent 60%);
|
|
1986
|
+
left:50%;top:0;transform:translate(-50%,-20%);
|
|
1995
1987
|
pointer-events:none;
|
|
1988
|
+
animation:fx-glow 8s ease-in-out infinite;
|
|
1996
1989
|
}
|
|
1997
|
-
|
|
1998
|
-
/*
|
|
1999
|
-
.fx-hero-badge{
|
|
2000
|
-
display:inline-flex;align-items:center;gap:.5rem;
|
|
2001
|
-
font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;
|
|
2002
|
-
padding:.3125rem .875rem;
|
|
2003
|
-
border-radius:999px;
|
|
2004
|
-
border:1px solid var(--aip-border-strong);
|
|
2005
|
-
background:var(--aip-surface);
|
|
2006
|
-
color:var(--aip-text-muted);
|
|
2007
|
-
}
|
|
2008
|
-
.fx-hero-badge-dot{
|
|
2009
|
-
width:6px;height:6px;border-radius:50%;
|
|
2010
|
-
background:var(--aip-accent);
|
|
2011
|
-
animation:fx-pulse 2.5s ease infinite;
|
|
2012
|
-
flex-shrink:0;
|
|
2013
|
-
}
|
|
2014
|
-
@keyframes fx-pulse{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(var(--aip-accent-rgb),.5)}60%{opacity:.4;box-shadow:0 0 0 6px rgba(var(--aip-accent-rgb),0)}}
|
|
2015
|
-
|
|
2016
|
-
/* Typography */
|
|
1990
|
+
@keyframes fx-glow{0%,100%{opacity:.6}50%{opacity:1}}
|
|
1991
|
+
/* Vercel hero typography */
|
|
2017
1992
|
.fx-title{
|
|
2018
|
-
font-size:clamp(
|
|
2019
|
-
font-weight:
|
|
2020
|
-
letter-spacing:-.
|
|
2021
|
-
line-height
|
|
2022
|
-
color:var(--
|
|
1993
|
+
font-size:clamp(40px,6vw,80px);
|
|
1994
|
+
font-weight:700;
|
|
1995
|
+
letter-spacing:-.04em;
|
|
1996
|
+
line-height:1.05;
|
|
1997
|
+
color:var(--ds-gray-1000);
|
|
2023
1998
|
}
|
|
2024
1999
|
.fx-gradient-text{
|
|
2025
|
-
background:linear-gradient(
|
|
2026
|
-
-webkit-background-clip:text;
|
|
2027
|
-
|
|
2028
|
-
|
|
2000
|
+
background:linear-gradient(90deg,var(--ds-gray-1000) 0%,var(--ds-gray-700) 100%);
|
|
2001
|
+
-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
|
|
2002
|
+
}
|
|
2003
|
+
/* Override with accent when set */
|
|
2004
|
+
.fx-gradient-text-accent{
|
|
2005
|
+
background:linear-gradient(135deg,var(--ds-gray-1000) 30%,rgba(var(--aip-accent-rgb),1) 100%);
|
|
2006
|
+
-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
|
|
2029
2007
|
}
|
|
2030
2008
|
.fx-sub{
|
|
2031
|
-
font-size:clamp(
|
|
2032
|
-
line-height:1.
|
|
2033
|
-
color:var(--
|
|
2034
|
-
max-width:
|
|
2009
|
+
font-size:clamp(15px,2vw,18px);
|
|
2010
|
+
line-height:1.65;
|
|
2011
|
+
color:var(--ds-gray-900);
|
|
2012
|
+
max-width:540px;font-weight:400;
|
|
2035
2013
|
}
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
color:#fff;
|
|
2014
|
+
/* Vercel hero badge */
|
|
2015
|
+
.fx-hero-badge{
|
|
2016
|
+
display:inline-flex;align-items:center;gap:6px;
|
|
2017
|
+
height:28px;padding:0 10px;
|
|
2018
|
+
background:var(--ds-gray-alpha-100);
|
|
2019
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2020
|
+
border-radius:var(--radius-full);
|
|
2021
|
+
font-size:12px;font-weight:500;color:var(--ds-gray-900);
|
|
2022
|
+
letter-spacing:.01em;
|
|
2046
2023
|
}
|
|
2047
|
-
.fx-
|
|
2024
|
+
.fx-hero-badge-dot{
|
|
2025
|
+
width:5px;height:5px;border-radius:50%;
|
|
2026
|
+
background:var(--ds-green-700);
|
|
2027
|
+
animation:fx-pulse 3s ease infinite;flex-shrink:0;
|
|
2028
|
+
}
|
|
2029
|
+
@keyframes fx-pulse{0%,100%{opacity:1}50%{opacity:.4}}
|
|
2030
|
+
/* Vercel CTA button */
|
|
2031
|
+
.fx-cta{
|
|
2032
|
+
display:inline-flex;align-items:center;gap:6px;
|
|
2033
|
+
height:40px;padding:0 20px;
|
|
2034
|
+
background:var(--ds-gray-1000);
|
|
2035
|
+
color:var(--ds-background-100);
|
|
2036
|
+
font-size:14px;font-weight:500;letter-spacing:-.01em;
|
|
2037
|
+
border-radius:var(--radius-md);
|
|
2038
|
+
/* Only transform per Vercel guidelines */
|
|
2039
|
+
transition:opacity var(--duration-normal) var(--ease-in-out),transform var(--duration-normal) var(--ease-out);
|
|
2040
|
+
}
|
|
2041
|
+
.fx-cta:hover{opacity:.88;transform:translateY(-1px)}
|
|
2048
2042
|
.fx-cta:active{transform:translateY(0)}
|
|
2049
2043
|
.fx-cta-outline{
|
|
2050
2044
|
background:transparent!important;
|
|
2051
|
-
border:1px solid var(--
|
|
2052
|
-
color:var(--
|
|
2053
|
-
box-shadow:none!important;
|
|
2045
|
+
border:1px solid var(--ds-gray-alpha-400)!important;
|
|
2046
|
+
color:var(--ds-gray-900)!important;
|
|
2054
2047
|
}
|
|
2055
|
-
.fx-cta-outline:hover{background:var(--
|
|
2048
|
+
.fx-cta-outline:hover{background:var(--ds-gray-alpha-100)!important}
|
|
2049
|
+
/* Vercel hero split */
|
|
2050
|
+
.fx-hero-split{
|
|
2051
|
+
display:grid;grid-template-columns:1fr 1fr;gap:64px;
|
|
2052
|
+
align-items:center;padding:80px 40px;min-height:80vh;
|
|
2053
|
+
}
|
|
2054
|
+
@media(max-width:768px){.fx-hero-split{grid-template-columns:1fr;padding:48px 24px;min-height:auto}}
|
|
2055
|
+
.fx-hero-split .fx-hero-inner{text-align:left;align-items:flex-start;max-width:none}
|
|
2056
|
+
.fx-hero-img{width:100%;border-radius:var(--radius-lg);border:1px solid var(--ds-gray-alpha-400)}
|
|
2056
2057
|
|
|
2057
2058
|
/* ═══════════════════════════════════════════
|
|
2058
|
-
STATS BAR
|
|
2059
|
+
STATS BAR — Geist big number style
|
|
2059
2060
|
═══════════════════════════════════════════ */
|
|
2060
2061
|
.fx-stats{
|
|
2061
2062
|
display:grid;
|
|
2062
|
-
grid-template-columns:repeat(auto-fit,minmax(
|
|
2063
|
-
border-top:1px solid var(--
|
|
2064
|
-
border-bottom:1px solid var(--
|
|
2063
|
+
grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
|
|
2064
|
+
border-top:1px solid var(--ds-gray-alpha-400);
|
|
2065
|
+
border-bottom:1px solid var(--ds-gray-alpha-400);
|
|
2065
2066
|
}
|
|
2066
2067
|
.fx-stat{
|
|
2067
|
-
padding:
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
position:relative;
|
|
2071
|
-
overflow:hidden;
|
|
2068
|
+
padding:40px 24px;text-align:center;
|
|
2069
|
+
border-right:1px solid var(--ds-gray-alpha-400);
|
|
2070
|
+
transition:background var(--duration-normal) var(--ease-in-out);
|
|
2072
2071
|
}
|
|
2073
2072
|
.fx-stat:last-child{border-right:none}
|
|
2074
|
-
.fx-stat
|
|
2075
|
-
content:'';position:absolute;top:0;left:0;right:0;height:2px;
|
|
2076
|
-
background:linear-gradient(90deg,transparent,var(--aip-accent),transparent);
|
|
2077
|
-
opacity:0;transition:opacity .3s;
|
|
2078
|
-
}
|
|
2079
|
-
.fx-stat:hover::before{opacity:1}
|
|
2073
|
+
.fx-stat:hover{background:var(--ds-gray-alpha-100)}
|
|
2080
2074
|
.fx-stat-val{
|
|
2081
|
-
font-size:clamp(
|
|
2082
|
-
font-weight:
|
|
2083
|
-
|
|
2084
|
-
line-height:1;
|
|
2085
|
-
color:var(--aip-accent);
|
|
2075
|
+
font-size:clamp(28px,4vw,40px);
|
|
2076
|
+
font-weight:700;letter-spacing:-.04em;line-height:1;
|
|
2077
|
+
color:var(--ds-gray-1000);
|
|
2086
2078
|
font-variant-numeric:tabular-nums;
|
|
2087
2079
|
}
|
|
2088
2080
|
.fx-stat-lbl{
|
|
2089
|
-
font-size
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
.fx-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
letter-spacing:.01em;
|
|
2081
|
+
font-size:12px;font-weight:500;
|
|
2082
|
+
text-transform:uppercase;letter-spacing:.08em;
|
|
2083
|
+
color:var(--ds-gray-700);
|
|
2084
|
+
margin-top:8px;
|
|
2085
|
+
}
|
|
2086
|
+
.fx-stat-vs{font-size:11px;color:var(--ds-gray-600);margin-top:4px;letter-spacing:.01em}
|
|
2087
|
+
@media(max-width:640px){
|
|
2088
|
+
.fx-stats{grid-template-columns:repeat(2,1fr)}
|
|
2089
|
+
.fx-stat{border-right:none;border-bottom:1px solid var(--ds-gray-alpha-400)}
|
|
2090
|
+
.fx-stat:nth-child(odd){border-right:1px solid var(--ds-gray-alpha-400)}
|
|
2091
|
+
.fx-stat:last-child,:nth-last-child(-n+2):nth-child(even){border-bottom:none}
|
|
2101
2092
|
}
|
|
2102
|
-
@media(max-width:640px){.fx-stats{grid-template-columns:repeat(2,1fr)}.fx-stat{border-right:none;border-bottom:1px solid var(--aip-border)}.fx-stat:last-child{border-bottom:none}}
|
|
2103
2093
|
|
|
2104
2094
|
/* ═══════════════════════════════════════════
|
|
2105
2095
|
SECTIONS
|
|
2106
2096
|
═══════════════════════════════════════════ */
|
|
2107
|
-
.fx-sect{
|
|
2108
|
-
|
|
2109
|
-
position:relative;
|
|
2110
|
-
}
|
|
2097
|
+
.fx-sect{padding:80px 40px;position:relative}
|
|
2098
|
+
@media(max-width:768px){.fx-sect{padding:64px 24px}}
|
|
2111
2099
|
.fx-sect-title{
|
|
2112
|
-
font-size:clamp(
|
|
2113
|
-
font-weight:
|
|
2114
|
-
|
|
2115
|
-
line-height:1.1;
|
|
2116
|
-
margin-bottom:1rem;
|
|
2117
|
-
text-align:center;
|
|
2100
|
+
font-size:clamp(24px,3.5vw,40px);
|
|
2101
|
+
font-weight:700;letter-spacing:-.03em;line-height:1.15;
|
|
2102
|
+
margin-bottom:12px;text-align:center;color:var(--ds-gray-1000);
|
|
2118
2103
|
}
|
|
2119
2104
|
.fx-sect-body{
|
|
2120
|
-
font-size:1.
|
|
2121
|
-
|
|
2122
|
-
text-align:center;
|
|
2123
|
-
color:var(--aip-text-muted);
|
|
2124
|
-
max-width:44rem;
|
|
2125
|
-
margin:0 auto;
|
|
2126
|
-
}
|
|
2127
|
-
.fx-sect-link{
|
|
2128
|
-
font-size:.875rem;
|
|
2129
|
-
font-weight:600;
|
|
2130
|
-
color:var(--aip-accent);
|
|
2131
|
-
display:inline-block;
|
|
2132
|
-
margin-top:.75rem;
|
|
2105
|
+
font-size:15px;line-height:1.7;text-align:center;
|
|
2106
|
+
color:var(--ds-gray-900);max-width:480px;margin:0 auto;
|
|
2133
2107
|
}
|
|
2134
|
-
|
|
2108
|
+
.fx-sect-link{font-size:13px;font-weight:500;color:var(--ds-blue-700);display:inline-block;margin-top:12px}
|
|
2135
2109
|
|
|
2136
2110
|
/* ═══════════════════════════════════════════
|
|
2137
|
-
CARDS / GRID
|
|
2111
|
+
CARDS / GRID — Geist card style
|
|
2138
2112
|
═══════════════════════════════════════════ */
|
|
2139
|
-
.fx-grid{display:grid;gap
|
|
2113
|
+
.fx-grid{display:grid;gap:12px;padding:0 40px 80px}
|
|
2140
2114
|
.fx-grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
|
|
2141
2115
|
.fx-grid-3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
|
|
2142
2116
|
.fx-grid-4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
|
|
2143
|
-
@media(max-width:640px){.fx-grid{padding:0
|
|
2144
|
-
|
|
2117
|
+
@media(max-width:640px){.fx-grid{padding:0 24px 48px}.fx-grid-2,.fx-grid-3,.fx-grid-4{grid-template-columns:1fr}}
|
|
2145
2118
|
.fx-card{
|
|
2146
|
-
border-radius
|
|
2147
|
-
padding:
|
|
2148
|
-
background:var(--
|
|
2149
|
-
border:1px solid var(--
|
|
2150
|
-
transition:border-color
|
|
2151
|
-
position:relative;
|
|
2152
|
-
overflow:hidden;
|
|
2153
|
-
}
|
|
2154
|
-
.fx-card::before{
|
|
2155
|
-
content:'';
|
|
2156
|
-
position:absolute;
|
|
2157
|
-
inset:0;
|
|
2158
|
-
background:linear-gradient(135deg,rgba(var(--aip-accent-rgb),.04),transparent 60%);
|
|
2159
|
-
opacity:0;
|
|
2160
|
-
transition:opacity .3s;
|
|
2119
|
+
border-radius:var(--radius-lg);
|
|
2120
|
+
padding:24px;
|
|
2121
|
+
background:var(--ds-background-200);
|
|
2122
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2123
|
+
transition:border-color var(--duration-normal) var(--ease-in-out),transform var(--duration-slow) var(--ease-out);
|
|
2124
|
+
position:relative;overflow:hidden;
|
|
2161
2125
|
}
|
|
2162
2126
|
.fx-card:hover{
|
|
2163
|
-
border-color:var(--
|
|
2164
|
-
transform:translateY(-
|
|
2165
|
-
box-shadow:0 16px 48px rgba(0,0,0,.25);
|
|
2127
|
+
border-color:var(--ds-gray-alpha-700);
|
|
2128
|
+
transform:translateY(-1px);
|
|
2166
2129
|
}
|
|
2167
|
-
.fx-card
|
|
2168
|
-
.fx-card-img{width:100%;border-radius:.625rem;height:180px;object-fit:cover;margin-bottom:1rem}
|
|
2130
|
+
.fx-card-img{width:100%;border-radius:var(--radius-md);height:180px;object-fit:cover;margin-bottom:16px;border:1px solid var(--ds-gray-alpha-400)}
|
|
2169
2131
|
.fx-icon{
|
|
2170
|
-
font-size:
|
|
2171
|
-
margin-bottom:
|
|
2172
|
-
width:
|
|
2132
|
+
font-size:20px;
|
|
2133
|
+
margin-bottom:16px;
|
|
2134
|
+
width:40px;height:40px;
|
|
2173
2135
|
display:flex;align-items:center;justify-content:center;
|
|
2174
|
-
border-radius
|
|
2175
|
-
background:
|
|
2176
|
-
border:1px solid
|
|
2136
|
+
border-radius:var(--radius-md);
|
|
2137
|
+
background:var(--ds-gray-alpha-200);
|
|
2138
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2177
2139
|
}
|
|
2178
2140
|
.fx-card-title{
|
|
2179
|
-
font-size:
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
}
|
|
2185
|
-
.fx-
|
|
2186
|
-
font-size:.8375rem;
|
|
2187
|
-
line-height:1.7;
|
|
2188
|
-
color:var(--aip-text-muted);
|
|
2189
|
-
}
|
|
2190
|
-
.fx-card-link{
|
|
2191
|
-
font-size:.8125rem;
|
|
2192
|
-
font-weight:600;
|
|
2193
|
-
color:var(--aip-accent);
|
|
2194
|
-
display:inline-block;
|
|
2195
|
-
margin-top:1rem;
|
|
2196
|
-
opacity:.8;
|
|
2197
|
-
transition:opacity .15s;
|
|
2198
|
-
}
|
|
2199
|
-
.fx-card-link:hover{opacity:1}
|
|
2200
|
-
.fx-grid-feature .fx-card:hover{border-color:rgba(var(--aip-accent-rgb),.3)}
|
|
2141
|
+
font-size:14px;font-weight:600;letter-spacing:-.015em;
|
|
2142
|
+
margin-bottom:6px;color:var(--ds-gray-1000);line-height:1.4;
|
|
2143
|
+
}
|
|
2144
|
+
.fx-card-body{font-size:13px;line-height:1.65;color:var(--ds-gray-900)}
|
|
2145
|
+
.fx-card-link{font-size:13px;font-weight:500;color:var(--ds-blue-700);display:inline-block;margin-top:12px}
|
|
2146
|
+
.fx-grid-feature .fx-card:hover{border-color:rgba(var(--aip-accent-rgb),.4)}
|
|
2147
|
+
.fx-grid-feature .fx-icon{background:rgba(var(--aip-accent-rgb),.06);border-color:rgba(var(--aip-accent-rgb),.15)}
|
|
2201
2148
|
|
|
2202
2149
|
/* ═══════════════════════════════════════════
|
|
2203
|
-
FORMS
|
|
2150
|
+
FORMS — Geist input style
|
|
2204
2151
|
═══════════════════════════════════════════ */
|
|
2205
|
-
.fx-form-wrap{padding:
|
|
2152
|
+
.fx-form-wrap{padding:48px 40px;display:flex;justify-content:center}
|
|
2206
2153
|
.fx-form{
|
|
2207
|
-
width:100%;max-width:
|
|
2208
|
-
background:var(--
|
|
2209
|
-
border:1px solid var(--
|
|
2210
|
-
border-radius:
|
|
2211
|
-
padding:2.25rem;
|
|
2154
|
+
width:100%;max-width:400px;
|
|
2155
|
+
background:var(--ds-background-200);
|
|
2156
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2157
|
+
border-radius:var(--radius-xl);padding:32px;
|
|
2212
2158
|
}
|
|
2213
|
-
.fx-field{margin-bottom:
|
|
2159
|
+
.fx-field{margin-bottom:16px}
|
|
2214
2160
|
.fx-label{
|
|
2215
|
-
display:block;
|
|
2216
|
-
|
|
2217
|
-
font-weight:600;
|
|
2218
|
-
color:var(--aip-text-muted);
|
|
2219
|
-
margin-bottom:.4375rem;
|
|
2220
|
-
letter-spacing:.02em;
|
|
2161
|
+
display:block;font-size:13px;font-weight:500;
|
|
2162
|
+
color:var(--ds-gray-1000);margin-bottom:6px;letter-spacing:-.01em;
|
|
2221
2163
|
}
|
|
2222
2164
|
.fx-input{
|
|
2223
|
-
width:100%;
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
border:
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
-webkit-appearance:none;
|
|
2233
|
-
}
|
|
2165
|
+
width:100%;height:40px;padding:0 12px;
|
|
2166
|
+
background:var(--ds-background-100);
|
|
2167
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2168
|
+
border-radius:var(--radius-md);
|
|
2169
|
+
color:var(--ds-gray-1000);font-size:14px;
|
|
2170
|
+
outline:none;-webkit-appearance:none;
|
|
2171
|
+
transition:border-color var(--duration-normal) var(--ease-in-out),box-shadow var(--duration-normal) var(--ease-in-out);
|
|
2172
|
+
}
|
|
2173
|
+
.fx-input:hover{border-color:var(--ds-gray-alpha-700)}
|
|
2234
2174
|
.fx-input:focus{
|
|
2235
|
-
border-color:var(--
|
|
2236
|
-
box-shadow:0 0 0 3px rgba(var(--
|
|
2175
|
+
border-color:var(--ds-blue-700);
|
|
2176
|
+
box-shadow:0 0 0 3px rgba(var(--ds-blue-rgb),.15);
|
|
2237
2177
|
}
|
|
2238
|
-
.fx-input::placeholder{color:var(--
|
|
2239
|
-
|
|
2178
|
+
.fx-input::placeholder{color:var(--ds-gray-600)}
|
|
2179
|
+
textarea.fx-input{height:auto;padding:10px 12px;resize:vertical;min-height:80px;line-height:1.5}
|
|
2240
2180
|
.fx-btn{
|
|
2241
|
-
width:100%;
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
border-radius
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
cursor:pointer;
|
|
2250
|
-
margin-top:.375rem;
|
|
2251
|
-
transition:transform .15s var(--aip-ease-out),opacity .15s,box-shadow .15s;
|
|
2252
|
-
letter-spacing:-.015em;
|
|
2253
|
-
}
|
|
2254
|
-
.fx-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(var(--aip-accent-rgb),.3)}
|
|
2181
|
+
width:100%;height:40px;padding:0 16px;
|
|
2182
|
+
background:var(--ds-gray-1000);color:var(--ds-background-100);
|
|
2183
|
+
font-size:14px;font-weight:500;letter-spacing:-.01em;
|
|
2184
|
+
border-radius:var(--radius-md);
|
|
2185
|
+
margin-top:4px;
|
|
2186
|
+
transition:opacity var(--duration-normal) var(--ease-in-out),transform var(--duration-normal) var(--ease-out);
|
|
2187
|
+
}
|
|
2188
|
+
.fx-btn:hover{opacity:.88;transform:translateY(-1px)}
|
|
2255
2189
|
.fx-btn:active{transform:translateY(0)}
|
|
2256
|
-
.fx-btn:disabled{opacity:.
|
|
2257
|
-
.fx-btn-wrap{padding:0
|
|
2258
|
-
.fx-standalone-btn{width:auto;padding
|
|
2259
|
-
.fx-form-msg{font-size
|
|
2260
|
-
.fx-form-err{color
|
|
2190
|
+
.fx-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
|
|
2191
|
+
.fx-btn-wrap{padding:0 40px 24px}
|
|
2192
|
+
.fx-standalone-btn{width:auto;padding:0 20px;margin-top:0}
|
|
2193
|
+
.fx-form-msg{font-size:13px;padding:6px 0;min-height:24px;text-align:center;font-weight:500}
|
|
2194
|
+
.fx-form-err{color:var(--ds-red-700)}.fx-form-ok{color:var(--ds-green-700)}
|
|
2261
2195
|
|
|
2262
2196
|
/* ═══════════════════════════════════════════
|
|
2263
|
-
TABLE
|
|
2197
|
+
TABLE — Geist table style
|
|
2264
2198
|
═══════════════════════════════════════════ */
|
|
2265
|
-
.fx-table-wrap{overflow-x:auto;padding:0
|
|
2266
|
-
.fx-table{width:100%;border-collapse:collapse;font-size
|
|
2199
|
+
.fx-table-wrap{overflow-x:auto;padding:0 40px 64px}
|
|
2200
|
+
.fx-table{width:100%;border-collapse:collapse;font-size:13px}
|
|
2267
2201
|
.fx-th{
|
|
2268
|
-
text-align:left;
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
text-transform:uppercase;
|
|
2273
|
-
letter-spacing:.08em;
|
|
2274
|
-
color:var(--aip-text-dim);
|
|
2275
|
-
border-bottom:1px solid var(--aip-border);
|
|
2276
|
-
background:var(--aip-surface);
|
|
2277
|
-
white-space:nowrap;
|
|
2202
|
+
text-align:left;padding:0 12px 10px;
|
|
2203
|
+
font-size:11px;font-weight:600;text-transform:uppercase;
|
|
2204
|
+
letter-spacing:.06em;color:var(--ds-gray-700);
|
|
2205
|
+
border-bottom:1px solid var(--ds-gray-alpha-400);white-space:nowrap;
|
|
2278
2206
|
}
|
|
2279
2207
|
.fx-th-actions{opacity:.5}
|
|
2280
|
-
.fx-tr{border-bottom:1px solid var(--
|
|
2208
|
+
.fx-tr{border-bottom:1px solid var(--ds-gray-alpha-200);transition:background var(--duration-fast) var(--ease-in-out)}
|
|
2281
2209
|
.fx-tr:last-child{border-bottom:none}
|
|
2282
|
-
.fx-tr:hover{background:var(--
|
|
2283
|
-
.fx-td{padding
|
|
2284
|
-
.fx-td:first-child{color:var(--
|
|
2285
|
-
.fx-td-empty{padding:
|
|
2286
|
-
.fx-td-actions{white-space:nowrap;padding
|
|
2210
|
+
.fx-tr:hover{background:var(--ds-gray-alpha-100)}
|
|
2211
|
+
.fx-td{padding:12px;color:var(--ds-gray-900);vertical-align:middle}
|
|
2212
|
+
.fx-td:first-child{color:var(--ds-gray-1000);font-weight:500}
|
|
2213
|
+
.fx-td-empty{padding:48px 12px;text-align:center;color:var(--ds-gray-600);font-size:13px}
|
|
2214
|
+
.fx-td-actions{white-space:nowrap;padding:6px 12px!important}
|
|
2287
2215
|
.fx-action-btn{
|
|
2288
|
-
|
|
2289
|
-
font-size
|
|
2290
|
-
|
|
2291
|
-
margin-right:.375rem;font-family:inherit;
|
|
2292
|
-
transition:opacity .15s,transform .1s;
|
|
2216
|
+
height:28px;padding:0 10px;border-radius:var(--radius-md);
|
|
2217
|
+
font-size:12px;font-weight:500;margin-right:4px;
|
|
2218
|
+
transition:background var(--duration-normal) var(--ease-in-out);
|
|
2293
2219
|
}
|
|
2294
|
-
.fx-
|
|
2295
|
-
.fx-edit-btn{background:
|
|
2296
|
-
.fx-delete-btn{background:
|
|
2220
|
+
.fx-edit-btn{background:var(--ds-blue-100);color:var(--ds-blue-700)}
|
|
2221
|
+
.fx-edit-btn:hover{background:var(--ds-blue-200)}
|
|
2222
|
+
.fx-delete-btn{background:var(--ds-red-100);color:var(--ds-red-700)}
|
|
2223
|
+
.fx-delete-btn:hover{background:var(--ds-red-200)}
|
|
2297
2224
|
|
|
2298
2225
|
/* ═══════════════════════════════════════════
|
|
2299
|
-
PRICING
|
|
2226
|
+
PRICING — Geist pricing style
|
|
2300
2227
|
═══════════════════════════════════════════ */
|
|
2301
2228
|
.fx-pricing{
|
|
2302
|
-
display:grid;
|
|
2303
|
-
|
|
2304
|
-
gap:1.25rem;
|
|
2305
|
-
padding:2rem 2.5rem 5rem;
|
|
2306
|
-
align-items:start;
|
|
2229
|
+
display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
|
|
2230
|
+
gap:16px;padding:24px 40px 80px;align-items:start;
|
|
2307
2231
|
}
|
|
2308
2232
|
.fx-pricing-card{
|
|
2309
|
-
border-radius:
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
border:1px solid var(--aip-border);
|
|
2233
|
+
border-radius:var(--radius-xl);padding:32px;
|
|
2234
|
+
background:var(--ds-background-200);
|
|
2235
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2313
2236
|
position:relative;
|
|
2314
|
-
transition:border-color
|
|
2315
|
-
}
|
|
2316
|
-
.fx-pricing-featured{
|
|
2317
|
-
border-color:var(--aip-accent)!important;
|
|
2318
|
-
transform:scale(1.02);
|
|
2319
|
-
box-shadow:0 0 0 1px var(--aip-accent),0 24px 48px rgba(var(--aip-accent-rgb),.15);
|
|
2237
|
+
transition:border-color var(--duration-normal) var(--ease-in-out);
|
|
2320
2238
|
}
|
|
2239
|
+
.fx-pricing-featured{border-color:var(--ds-gray-alpha-700)!important}
|
|
2321
2240
|
.fx-pricing-badge{
|
|
2322
|
-
position:absolute;top:-
|
|
2323
|
-
background:var(--
|
|
2324
|
-
font-size
|
|
2325
|
-
|
|
2326
|
-
}
|
|
2327
|
-
.fx-pricing-name{font-size
|
|
2328
|
-
.fx-pricing-price{font-size:
|
|
2329
|
-
.fx-pricing-price-sm{font-size:
|
|
2330
|
-
.fx-pricing-desc{font-size
|
|
2331
|
-
.fx-pricing-cta{
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
background:var(--
|
|
2335
|
-
|
|
2336
|
-
}
|
|
2241
|
+
position:absolute;top:-12px;left:50%;transform:translateX(-50%);
|
|
2242
|
+
background:var(--ds-gray-1000);color:var(--ds-background-100);
|
|
2243
|
+
font-size:11px;font-weight:600;padding:3px 10px;
|
|
2244
|
+
border-radius:var(--radius-full);white-space:nowrap;letter-spacing:.04em;
|
|
2245
|
+
}
|
|
2246
|
+
.fx-pricing-name{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--ds-gray-700);margin-bottom:12px}
|
|
2247
|
+
.fx-pricing-price{font-size:40px;font-weight:700;letter-spacing:-.05em;line-height:1;margin-bottom:8px;color:var(--ds-gray-1000);font-variant-numeric:tabular-nums}
|
|
2248
|
+
.fx-pricing-price-sm{font-size:28px}
|
|
2249
|
+
.fx-pricing-desc{font-size:13px;line-height:1.6;margin-bottom:24px;color:var(--ds-gray-900)}
|
|
2250
|
+
.fx-pricing-cta{
|
|
2251
|
+
display:block;text-align:center;height:36px;line-height:36px;
|
|
2252
|
+
border-radius:var(--radius-md);font-size:13px;font-weight:500;
|
|
2253
|
+
background:var(--ds-gray-1000);color:var(--ds-background-100);
|
|
2254
|
+
transition:opacity var(--duration-normal) var(--ease-in-out);
|
|
2255
|
+
}
|
|
2256
|
+
.fx-pricing-cta:hover{opacity:.85}
|
|
2337
2257
|
|
|
2338
2258
|
/* ═══════════════════════════════════════════
|
|
2339
|
-
FAQ
|
|
2259
|
+
FAQ — Geist collapse style
|
|
2340
2260
|
═══════════════════════════════════════════ */
|
|
2341
|
-
.fx-faq-wrap{padding:0
|
|
2342
|
-
.fx-faq{max-width:
|
|
2261
|
+
.fx-faq-wrap{padding:0 40px 64px}
|
|
2262
|
+
.fx-faq{max-width:640px;margin:0 auto}
|
|
2343
2263
|
.fx-faq-item{
|
|
2344
|
-
border:1px solid var(--
|
|
2345
|
-
background:var(--aip-surface);
|
|
2346
|
-
border-radius:.75rem;
|
|
2347
|
-
margin-bottom:.5rem;
|
|
2264
|
+
border-bottom:1px solid var(--ds-gray-alpha-400);
|
|
2348
2265
|
cursor:pointer;
|
|
2349
|
-
overflow:hidden;
|
|
2350
|
-
transition:border-color .2s;
|
|
2351
2266
|
}
|
|
2352
|
-
.fx-faq-item:
|
|
2267
|
+
.fx-faq-item:first-child{border-top:1px solid var(--ds-gray-alpha-400)}
|
|
2353
2268
|
.fx-faq-q{
|
|
2354
2269
|
display:flex;justify-content:space-between;align-items:center;
|
|
2355
|
-
padding:
|
|
2356
|
-
font-size
|
|
2357
|
-
|
|
2270
|
+
padding:16px 0;
|
|
2271
|
+
font-size:14px;font-weight:500;color:var(--ds-gray-1000);
|
|
2272
|
+
user-select:none;
|
|
2273
|
+
}
|
|
2274
|
+
.fx-faq-arrow{
|
|
2275
|
+
width:16px;height:16px;color:var(--ds-gray-700);flex-shrink:0;
|
|
2276
|
+
transition:transform var(--duration-normal) var(--ease-in-out);
|
|
2277
|
+
}
|
|
2278
|
+
.fx-faq-arrow::after{
|
|
2279
|
+
content:'↓';font-size:12px;display:block;text-align:center;line-height:16px;
|
|
2358
2280
|
}
|
|
2359
|
-
.fx-faq-arrow{transition:transform .25s var(--aip-ease-out);color:var(--aip-text-dim);font-size:.75rem}
|
|
2360
2281
|
.fx-faq-item.open .fx-faq-arrow{transform:rotate(180deg)}
|
|
2361
2282
|
.fx-faq-a{
|
|
2362
2283
|
max-height:0;overflow:hidden;
|
|
2363
|
-
font-size
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
padding:0 1.25rem;
|
|
2284
|
+
font-size:14px;line-height:1.65;color:var(--ds-gray-900);
|
|
2285
|
+
transition:max-height var(--duration-slow) var(--ease-out),padding var(--duration-slow) var(--ease-out);
|
|
2286
|
+
padding:0;
|
|
2367
2287
|
}
|
|
2368
|
-
.fx-faq-item.open .fx-faq-a{max-height:300px;padding
|
|
2288
|
+
.fx-faq-item.open .fx-faq-a{max-height:300px;padding:0 0 16px}
|
|
2369
2289
|
|
|
2370
2290
|
/* ═══════════════════════════════════════════
|
|
2371
|
-
CODE WINDOW
|
|
2291
|
+
CODE WINDOW — Geist snippet style
|
|
2372
2292
|
═══════════════════════════════════════════ */
|
|
2373
2293
|
.fx-code-window{
|
|
2374
|
-
border-radius
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
margin:0 2.5rem 2rem;
|
|
2379
|
-
position:relative;
|
|
2294
|
+
border-radius:var(--radius-lg);overflow:hidden;
|
|
2295
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2296
|
+
background:var(--ds-background-200);
|
|
2297
|
+
margin:0 40px 24px;
|
|
2380
2298
|
}
|
|
2381
2299
|
.fx-code-bar{
|
|
2382
|
-
display:flex;align-items:center;gap
|
|
2383
|
-
padding
|
|
2384
|
-
background:var(--
|
|
2385
|
-
border-bottom:1px solid var(--
|
|
2300
|
+
display:flex;align-items:center;gap:8px;
|
|
2301
|
+
padding:10px 16px;
|
|
2302
|
+
background:var(--ds-background-200);
|
|
2303
|
+
border-bottom:1px solid var(--ds-gray-alpha-400);
|
|
2386
2304
|
}
|
|
2387
|
-
.fx-dots{display:flex;gap
|
|
2388
|
-
.fx-dots span{width:
|
|
2305
|
+
.fx-dots{display:flex;gap:5px}
|
|
2306
|
+
.fx-dots span{width:10px;height:10px;border-radius:50%}
|
|
2389
2307
|
.fx-dots span:nth-child(1){background:#ff5f57}
|
|
2390
2308
|
.fx-dots span:nth-child(2){background:#febc2e}
|
|
2391
2309
|
.fx-dots span:nth-child(3){background:#28c840}
|
|
2392
|
-
.fx-code-lang{
|
|
2310
|
+
.fx-code-lang{
|
|
2311
|
+
font-size:11px;letter-spacing:.06em;text-transform:uppercase;
|
|
2312
|
+
color:var(--ds-gray-700);margin-left:4px;font-family:var(--geist-mono);font-weight:500;
|
|
2313
|
+
}
|
|
2393
2314
|
.fx-code-copy{
|
|
2394
|
-
margin-left:auto;
|
|
2395
|
-
font-family:var(--
|
|
2396
|
-
background:
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
transition:
|
|
2400
|
-
}
|
|
2401
|
-
.fx-code-copy:hover{
|
|
2402
|
-
.fx-code-body{padding:
|
|
2403
|
-
.fx-code-line{font-family:var(--
|
|
2404
|
-
.fx-kw{color:#c792ea}.fx-st{color:#
|
|
2405
|
-
.fx-op{color:var(--aip-accent)}.fx-comment{color:var(--
|
|
2315
|
+
margin-left:auto;height:24px;padding:0 8px;
|
|
2316
|
+
font-family:var(--geist-mono);font-size:11px;letter-spacing:.04em;
|
|
2317
|
+
background:var(--ds-gray-alpha-200);
|
|
2318
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2319
|
+
color:var(--ds-gray-900);border-radius:var(--radius-sm);cursor:pointer;
|
|
2320
|
+
transition:background var(--duration-normal),color var(--duration-normal);
|
|
2321
|
+
}
|
|
2322
|
+
.fx-code-copy:hover{background:var(--ds-gray-alpha-400);color:var(--ds-gray-1000)}
|
|
2323
|
+
.fx-code-body{padding:20px 24px;overflow-x:auto}
|
|
2324
|
+
.fx-code-line{font-family:var(--geist-mono);font-size:13px;line-height:1.75;color:var(--ds-gray-800);white-space:pre}
|
|
2325
|
+
.fx-kw{color:#c792ea}.fx-st{color:#a6e3a1}.fx-fn{color:#89b4fa}
|
|
2326
|
+
.fx-nb{color:#fab387}.fx-op{color:rgba(var(--aip-accent-rgb),1)}.fx-comment{color:var(--ds-gray-600);font-style:italic}
|
|
2406
2327
|
|
|
2407
2328
|
/* ═══════════════════════════════════════════
|
|
2408
2329
|
INSTALL BLOCK
|
|
2409
2330
|
═══════════════════════════════════════════ */
|
|
2410
2331
|
.fx-install-wrap{
|
|
2411
|
-
border-radius
|
|
2412
|
-
border:1px solid var(--
|
|
2413
|
-
background:var(--
|
|
2414
|
-
margin:0
|
|
2332
|
+
border-radius:var(--radius-lg);overflow:hidden;
|
|
2333
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2334
|
+
background:var(--ds-background-200);
|
|
2335
|
+
margin:0 40px 24px;max-width:480px;
|
|
2415
2336
|
}
|
|
2416
|
-
.fx-install-body{padding:
|
|
2417
|
-
.fx-install-line{display:flex;gap
|
|
2418
|
-
.fx-install-prompt{color:var(--aip-accent);flex-shrink:0;font-weight:700}
|
|
2419
|
-
.fx-install-cmd{color:var(--
|
|
2420
|
-
.fx-install-comment{font-family:var(--
|
|
2337
|
+
.fx-install-body{padding:20px 24px}
|
|
2338
|
+
.fx-install-line{display:flex;gap:10px;padding:3px 0;font-family:var(--geist-mono);font-size:13px;line-height:1.6}
|
|
2339
|
+
.fx-install-prompt{color:rgba(var(--aip-accent-rgb),1);flex-shrink:0;font-weight:700}
|
|
2340
|
+
.fx-install-cmd{color:var(--ds-gray-1000)}
|
|
2341
|
+
.fx-install-comment{font-family:var(--geist-mono);font-size:12px;color:var(--ds-gray-700);padding:3px 0;font-style:italic}
|
|
2421
2342
|
|
|
2422
2343
|
/* ═══════════════════════════════════════════
|
|
2423
2344
|
BENCHMARK CARDS
|
|
2424
2345
|
═══════════════════════════════════════════ */
|
|
2425
2346
|
.fx-benchmark{
|
|
2426
|
-
display:grid;
|
|
2427
|
-
|
|
2428
|
-
gap:1rem;padding:0 2.5rem 4rem;
|
|
2347
|
+
display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
|
|
2348
|
+
gap:12px;padding:0 40px 64px;
|
|
2429
2349
|
}
|
|
2430
2350
|
.fx-bench-card{
|
|
2431
|
-
border-radius:
|
|
2432
|
-
background:var(--
|
|
2433
|
-
border:1px solid var(--
|
|
2351
|
+
border-radius:var(--radius-lg);padding:24px;
|
|
2352
|
+
background:var(--ds-background-200);
|
|
2353
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2434
2354
|
position:relative;overflow:hidden;
|
|
2435
|
-
transition:border-color
|
|
2355
|
+
transition:border-color var(--duration-normal) var(--ease-in-out);
|
|
2436
2356
|
}
|
|
2357
|
+
.fx-bench-card:hover{border-color:var(--ds-gray-alpha-700)}
|
|
2358
|
+
/* Subtle top accent line */
|
|
2437
2359
|
.fx-bench-card::after{
|
|
2438
|
-
content:'';position:absolute;top:0;left:0;right:0;height:
|
|
2439
|
-
background:linear-gradient(90deg,transparent,var(--aip-accent),transparent);
|
|
2360
|
+
content:'';position:absolute;top:0;left:0;right:0;height:1px;
|
|
2361
|
+
background:linear-gradient(90deg,transparent,rgba(var(--aip-accent-rgb),.6),transparent);
|
|
2440
2362
|
}
|
|
2441
|
-
.fx-bench-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
.fx-bench-
|
|
2446
|
-
|
|
2363
|
+
.fx-bench-label{
|
|
2364
|
+
font-size:11px;letter-spacing:.06em;text-transform:uppercase;
|
|
2365
|
+
color:var(--ds-gray-700);margin-bottom:10px;font-weight:600;
|
|
2366
|
+
}
|
|
2367
|
+
.fx-bench-num{
|
|
2368
|
+
font-size:clamp(24px,4vw,36px);font-weight:700;
|
|
2369
|
+
letter-spacing:-.04em;line-height:1;
|
|
2370
|
+
color:var(--ds-gray-1000);font-variant-numeric:tabular-nums;
|
|
2371
|
+
}
|
|
2372
|
+
.fx-bench-vs{font-size:12px;color:var(--ds-gray-700);margin-top:6px;font-family:var(--geist-mono)}
|
|
2373
|
+
.fx-bench-bar{margin-top:16px;height:3px;background:var(--ds-gray-alpha-200);border-radius:999px;overflow:hidden}
|
|
2374
|
+
.fx-bench-fill{height:100%;border-radius:999px;background:rgba(var(--aip-accent-rgb),1);transition:width 1.2s var(--ease-out)}
|
|
2447
2375
|
|
|
2448
2376
|
/* ═══════════════════════════════════════════
|
|
2449
|
-
MARQUEE
|
|
2377
|
+
MARQUEE — smooth infinite scroll
|
|
2450
2378
|
═══════════════════════════════════════════ */
|
|
2451
2379
|
.fx-marquee{
|
|
2452
|
-
overflow:hidden;
|
|
2453
|
-
|
|
2454
|
-
border-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
}
|
|
2459
|
-
.fx-marquee-track{display:flex;width:max-content;animation:fx-marquee 28s linear infinite}
|
|
2380
|
+
overflow:hidden;padding:20px 0;
|
|
2381
|
+
border-top:1px solid var(--ds-gray-alpha-400);
|
|
2382
|
+
border-bottom:1px solid var(--ds-gray-alpha-400);
|
|
2383
|
+
-webkit-mask:linear-gradient(90deg,transparent,black 10%,black 90%,transparent);
|
|
2384
|
+
mask:linear-gradient(90deg,transparent,black 10%,black 90%,transparent);
|
|
2385
|
+
}
|
|
2386
|
+
.fx-marquee-track{display:flex;width:max-content;animation:fx-marquee 30s linear infinite}
|
|
2460
2387
|
.fx-marquee:hover .fx-marquee-track{animation-play-state:paused}
|
|
2461
2388
|
@keyframes fx-marquee{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
|
|
2462
|
-
.fx-marquee-item{
|
|
2463
|
-
|
|
2464
|
-
|
|
2389
|
+
.fx-marquee-item{
|
|
2390
|
+
font-size:13px;font-weight:500;
|
|
2391
|
+
color:var(--ds-gray-700);
|
|
2392
|
+
white-space:nowrap;padding:0 24px;
|
|
2393
|
+
transition:color var(--duration-normal);
|
|
2394
|
+
}
|
|
2395
|
+
.fx-marquee-item:hover{color:var(--ds-gray-1000)}
|
|
2396
|
+
.fx-marquee-sep{color:var(--ds-gray-alpha-400)}
|
|
2465
2397
|
|
|
2466
2398
|
/* ═══════════════════════════════════════════
|
|
2467
2399
|
CTA SECTION
|
|
2468
2400
|
═══════════════════════════════════════════ */
|
|
2469
2401
|
.fx-cta-section{
|
|
2470
|
-
position:relative;padding:
|
|
2471
|
-
border-top:1px solid var(--
|
|
2402
|
+
position:relative;padding:120px 40px;text-align:center;overflow:hidden;
|
|
2403
|
+
border-top:1px solid var(--ds-gray-alpha-400);
|
|
2472
2404
|
}
|
|
2473
2405
|
.fx-cta-glow{
|
|
2474
|
-
position:absolute;
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
pointer-events:none;
|
|
2406
|
+
position:absolute;
|
|
2407
|
+
width:700px;height:350px;border-radius:50%;
|
|
2408
|
+
background:radial-gradient(ellipse,rgba(var(--aip-accent-rgb),.06),transparent 60%);
|
|
2409
|
+
left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;
|
|
2478
2410
|
}
|
|
2479
|
-
.fx-cta-inner{position:relative;z-index:1;max-width:
|
|
2480
|
-
.fx-cta-title{
|
|
2481
|
-
|
|
2482
|
-
|
|
2411
|
+
.fx-cta-inner{position:relative;z-index:1;max-width:560px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:24px}
|
|
2412
|
+
.fx-cta-title{
|
|
2413
|
+
font-size:clamp(28px,4vw,48px);font-weight:700;
|
|
2414
|
+
letter-spacing:-.04em;line-height:1.1;color:var(--ds-gray-1000);
|
|
2415
|
+
}
|
|
2416
|
+
.fx-cta-sub{font-size:15px;line-height:1.65;color:var(--ds-gray-900);max-width:440px}
|
|
2417
|
+
.fx-cta-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
|
|
2483
2418
|
|
|
2484
2419
|
/* ═══════════════════════════════════════════
|
|
2485
|
-
STEPS
|
|
2420
|
+
STEPS — numbered with connector
|
|
2486
2421
|
═══════════════════════════════════════════ */
|
|
2487
2422
|
.fx-steps{
|
|
2488
|
-
display:grid;
|
|
2489
|
-
|
|
2490
|
-
gap:2.5rem;
|
|
2491
|
-
padding:1.5rem 2.5rem 5rem;
|
|
2492
|
-
position:relative;
|
|
2423
|
+
display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
|
|
2424
|
+
gap:40px;padding:16px 40px 80px;position:relative;
|
|
2493
2425
|
}
|
|
2494
2426
|
.fx-steps::before{
|
|
2495
|
-
content:'';position:absolute;top:
|
|
2496
|
-
left:calc(
|
|
2497
|
-
height:1px;
|
|
2498
|
-
background:linear-gradient(90deg,transparent,var(--aip-border-strong),transparent);
|
|
2499
|
-
pointer-events:none;
|
|
2427
|
+
content:'';position:absolute;top:36px;
|
|
2428
|
+
left:calc(40px + 20px);right:calc(40px + 20px);
|
|
2429
|
+
height:1px;background:var(--ds-gray-alpha-400);pointer-events:none;
|
|
2500
2430
|
}
|
|
2501
|
-
@media(max-width:640px){.fx-steps::before{display:none}.fx-steps{gap:
|
|
2502
|
-
.fx-step{display:flex;flex-direction:column;align-items:flex-start;gap
|
|
2431
|
+
@media(max-width:640px){.fx-steps::before{display:none}.fx-steps{gap:32px;padding:0 24px 48px}}
|
|
2432
|
+
.fx-step{display:flex;flex-direction:column;align-items:flex-start;gap:16px}
|
|
2503
2433
|
.fx-step-num{
|
|
2504
|
-
width:
|
|
2505
|
-
background:var(--
|
|
2506
|
-
|
|
2434
|
+
width:36px;height:36px;border-radius:50%;
|
|
2435
|
+
background:var(--ds-gray-alpha-200);
|
|
2436
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2437
|
+
color:var(--ds-gray-1000);
|
|
2438
|
+
font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;
|
|
2507
2439
|
display:flex;align-items:center;justify-content:center;
|
|
2508
2440
|
flex-shrink:0;position:relative;z-index:1;
|
|
2509
|
-
box-shadow:0 0 0 4px rgba(var(--aip-accent-rgb),.15),0 0 0 8px rgba(var(--aip-accent-rgb),.05);
|
|
2510
2441
|
}
|
|
2511
|
-
.fx-step-title{font-size
|
|
2512
|
-
.fx-step-desc{font-size
|
|
2442
|
+
.fx-step-title{font-size:14px;font-weight:600;letter-spacing:-.015em;color:var(--ds-gray-1000)}
|
|
2443
|
+
.fx-step-desc{font-size:13px;line-height:1.6;color:var(--ds-gray-900)}
|
|
2513
2444
|
|
|
2514
2445
|
/* ═══════════════════════════════════════════
|
|
2515
|
-
COMPARE
|
|
2446
|
+
COMPARE — visual feature table
|
|
2516
2447
|
═══════════════════════════════════════════ */
|
|
2517
|
-
.fx-compare{
|
|
2448
|
+
.fx-compare{
|
|
2449
|
+
max-width:560px;margin:0 auto 64px;padding:0 40px;
|
|
2450
|
+
border-radius:var(--radius-xl);overflow:hidden;
|
|
2451
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2452
|
+
}
|
|
2518
2453
|
.fx-compare-header{
|
|
2519
2454
|
display:grid;grid-template-columns:1fr 1fr 1fr;
|
|
2520
|
-
padding
|
|
2521
|
-
background:var(--
|
|
2522
|
-
font-size
|
|
2523
|
-
|
|
2455
|
+
padding:12px 16px;
|
|
2456
|
+
background:var(--ds-background-200);
|
|
2457
|
+
font-size:11px;font-weight:700;text-transform:uppercase;
|
|
2458
|
+
letter-spacing:.08em;color:var(--ds-gray-700);
|
|
2459
|
+
border-bottom:1px solid var(--ds-gray-alpha-400);
|
|
2524
2460
|
}
|
|
2525
2461
|
.fx-compare-row{
|
|
2526
2462
|
display:grid;grid-template-columns:1fr 1fr 1fr;
|
|
2527
|
-
padding
|
|
2528
|
-
|
|
2529
|
-
transition:background .1s;
|
|
2463
|
+
padding:12px 16px;border-bottom:1px solid var(--ds-gray-alpha-200);
|
|
2464
|
+
transition:background var(--duration-fast);
|
|
2530
2465
|
}
|
|
2531
2466
|
.fx-compare-row:last-child{border-bottom:none}
|
|
2532
|
-
.fx-compare-row:hover{background:var(--
|
|
2533
|
-
.fx-compare-feature{font-size
|
|
2534
|
-
.fx-compare-col-a{text-align:center;font-size
|
|
2535
|
-
.fx-compare-col-b{text-align:center;font-size
|
|
2467
|
+
.fx-compare-row:hover{background:var(--ds-gray-alpha-100)}
|
|
2468
|
+
.fx-compare-feature{font-size:13px;color:var(--ds-gray-900)}
|
|
2469
|
+
.fx-compare-col-a{text-align:center;font-size:14px;font-weight:600;color:var(--ds-green-700)}
|
|
2470
|
+
.fx-compare-col-b{text-align:center;font-size:14px;color:var(--ds-gray-600)}
|
|
2536
2471
|
|
|
2537
2472
|
/* ═══════════════════════════════════════════
|
|
2538
2473
|
VIDEO
|
|
2539
2474
|
═══════════════════════════════════════════ */
|
|
2540
|
-
.fx-video-wrap{padding:0
|
|
2541
|
-
.fx-video-yt{
|
|
2475
|
+
.fx-video-wrap{padding:0 40px 48px}
|
|
2476
|
+
.fx-video-yt{
|
|
2477
|
+
position:relative;padding-bottom:56.25%;height:0;overflow:hidden;
|
|
2478
|
+
border-radius:var(--radius-xl);border:1px solid var(--ds-gray-alpha-400);
|
|
2479
|
+
background:var(--ds-background-200);
|
|
2480
|
+
}
|
|
2542
2481
|
.fx-video-yt iframe{position:absolute;top:0;left:0;width:100%;height:100%}
|
|
2543
|
-
.fx-video{width:100%;border-radius:
|
|
2482
|
+
.fx-video{width:100%;border-radius:var(--radius-xl);border:1px solid var(--ds-gray-alpha-400)}
|
|
2544
2483
|
|
|
2545
2484
|
/* ═══════════════════════════════════════════
|
|
2546
2485
|
TESTIMONIAL
|
|
2547
2486
|
═══════════════════════════════════════════ */
|
|
2548
|
-
.fx-testi-wrap{padding:
|
|
2549
|
-
.fx-testi{max-width:
|
|
2550
|
-
.fx-testi-img,.fx-testi-avatar{width:
|
|
2551
|
-
.fx-testi-avatar{
|
|
2552
|
-
|
|
2553
|
-
|
|
2487
|
+
.fx-testi-wrap{padding:80px 40px;display:flex;justify-content:center}
|
|
2488
|
+
.fx-testi{max-width:560px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:20px}
|
|
2489
|
+
.fx-testi-img,.fx-testi-avatar{width:48px;height:48px;border-radius:50%;object-fit:cover}
|
|
2490
|
+
.fx-testi-avatar{
|
|
2491
|
+
display:flex;align-items:center;justify-content:center;
|
|
2492
|
+
font-size:18px;font-weight:700;
|
|
2493
|
+
background:var(--ds-background-200);
|
|
2494
|
+
border:1px solid var(--ds-gray-alpha-400);
|
|
2495
|
+
color:var(--ds-gray-1000);
|
|
2496
|
+
}
|
|
2497
|
+
.fx-testi-quote{font-size:18px;line-height:1.65;color:var(--ds-gray-900);letter-spacing:-.01em}
|
|
2498
|
+
.fx-testi-author{font-size:13px;font-weight:500;color:var(--ds-gray-700)}
|
|
2554
2499
|
|
|
2555
2500
|
/* ═══════════════════════════════════════════
|
|
2556
2501
|
GALLERY
|
|
2557
2502
|
═══════════════════════════════════════════ */
|
|
2558
|
-
.fx-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap
|
|
2559
|
-
.fx-gallery-item{border-radius
|
|
2560
|
-
.fx-gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform
|
|
2561
|
-
.fx-gallery-item:hover img{transform:scale(1.
|
|
2503
|
+
.fx-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;padding:16px 40px 64px}
|
|
2504
|
+
.fx-gallery-item{border-radius:var(--radius-lg);overflow:hidden;aspect-ratio:4/3;border:1px solid var(--ds-gray-alpha-400)}
|
|
2505
|
+
.fx-gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-slow) var(--ease-out)}
|
|
2506
|
+
.fx-gallery-item:hover img{transform:scale(1.03)}
|
|
2562
2507
|
|
|
2563
2508
|
/* ═══════════════════════════════════════════
|
|
2564
|
-
MISC
|
|
2509
|
+
MISC COMPONENTS
|
|
2565
2510
|
═══════════════════════════════════════════ */
|
|
2566
|
-
.fx-divider{
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
.fx-
|
|
2511
|
+
.fx-divider{
|
|
2512
|
+
display:flex;align-items:center;gap:12px;
|
|
2513
|
+
padding:12px 40px;color:var(--ds-gray-700);font-size:12px;font-weight:500;
|
|
2514
|
+
}
|
|
2515
|
+
.fx-divider::before,.fx-divider::after{content:'';flex:1;height:1px;background:var(--ds-gray-alpha-400)}
|
|
2516
|
+
.fx-hr{border:none;height:1px;background:var(--ds-gray-alpha-400);margin:0 40px}
|
|
2517
|
+
.fx-badge-row{padding:6px 40px}
|
|
2518
|
+
.fx-badge-tag{
|
|
2519
|
+
font-size:11px;font-weight:600;padding:3px 8px;border-radius:var(--radius-full);
|
|
2520
|
+
background:rgba(var(--aip-accent-rgb),.08);color:rgba(var(--aip-accent-rgb),1);
|
|
2521
|
+
border:1px solid rgba(var(--aip-accent-rgb),.2);letter-spacing:.03em;
|
|
2522
|
+
}
|
|
2571
2523
|
.fx-spacer{flex-shrink:0}
|
|
2572
|
-
.fx-html{padding:0
|
|
2573
|
-
.fx-cols{display:grid;gap:
|
|
2524
|
+
.fx-html{padding:0 40px}
|
|
2525
|
+
.fx-cols{display:grid;gap:24px;padding:16px 40px 48px}
|
|
2574
2526
|
.fx-col{min-width:0}
|
|
2575
|
-
.fx-chart-container{padding:0
|
|
2576
|
-
.fx-select-wrap{padding
|
|
2577
|
-
.fx-select-block{width:auto;min-width:
|
|
2578
|
-
.fx-each{padding:0
|
|
2579
|
-
.fx-each-empty{padding:
|
|
2527
|
+
.fx-chart-container{padding:0 40px 48px}
|
|
2528
|
+
.fx-select-wrap{padding:6px 40px}
|
|
2529
|
+
.fx-select-block{width:auto;min-width:180px;height:36px;margin-top:0}
|
|
2530
|
+
.fx-each{padding:0 40px 24px}
|
|
2531
|
+
.fx-each-empty{padding:48px;text-align:center;color:var(--ds-gray-700);font-size:13px}
|
|
2580
2532
|
.fx-if-wrap{display:contents}
|
|
2581
|
-
.fx-editor-wrap{padding:0
|
|
2533
|
+
.fx-editor-wrap{padding:0 40px 24px}
|
|
2582
2534
|
|
|
2583
2535
|
/* ═══════════════════════════════════════════
|
|
2584
|
-
SCROLL ANIMATIONS
|
|
2536
|
+
SCROLL ANIMATIONS — GPU only per Vercel guidelines
|
|
2585
2537
|
═══════════════════════════════════════════ */
|
|
2586
2538
|
.fx-animate{
|
|
2587
|
-
opacity:0;
|
|
2588
|
-
|
|
2589
|
-
transition:opacity .65s var(--aip-ease-out),transform .65s var(--aip-ease-out);
|
|
2539
|
+
opacity:0;transform:translateY(12px);
|
|
2540
|
+
transition:opacity .5s var(--ease-out),transform .5s var(--ease-out);
|
|
2590
2541
|
}
|
|
2591
2542
|
.fx-animate.fx-visible{opacity:1;transform:none}
|
|
2592
2543
|
.fx-animate-stagger>*{
|
|
2593
|
-
opacity:0;transform:translateY(
|
|
2594
|
-
transition:opacity .
|
|
2544
|
+
opacity:0;transform:translateY(8px);
|
|
2545
|
+
transition:opacity .45s var(--ease-out),transform .45s var(--ease-out);
|
|
2595
2546
|
}
|
|
2596
2547
|
.fx-animate-stagger.fx-visible>*:nth-child(1){opacity:1;transform:none;transition-delay:.04s}
|
|
2597
|
-
.fx-animate-stagger.fx-visible>*:nth-child(2){opacity:1;transform:none;transition-delay:.
|
|
2598
|
-
.fx-animate-stagger.fx-visible>*:nth-child(3){opacity:1;transform:none;transition-delay:.
|
|
2599
|
-
.fx-animate-stagger.fx-visible>*:nth-child(4){opacity:1;transform:none;transition-delay:.
|
|
2600
|
-
.fx-animate-stagger.fx-visible>*:nth-child(5){opacity:1;transform:none;transition-delay:.
|
|
2601
|
-
.fx-animate-stagger.fx-visible>*:nth-child(6){opacity:1;transform:none;transition-delay:.
|
|
2548
|
+
.fx-animate-stagger.fx-visible>*:nth-child(2){opacity:1;transform:none;transition-delay:.1s}
|
|
2549
|
+
.fx-animate-stagger.fx-visible>*:nth-child(3){opacity:1;transform:none;transition-delay:.16s}
|
|
2550
|
+
.fx-animate-stagger.fx-visible>*:nth-child(4){opacity:1;transform:none;transition-delay:.22s}
|
|
2551
|
+
.fx-animate-stagger.fx-visible>*:nth-child(5){opacity:1;transform:none;transition-delay:.28s}
|
|
2552
|
+
.fx-animate-stagger.fx-visible>*:nth-child(6){opacity:1;transform:none;transition-delay:.34s}
|
|
2602
2553
|
|
|
2603
|
-
/*
|
|
2604
|
-
.fx-count{
|
|
2605
|
-
.fx-year{font-variant-numeric:tabular-nums}
|
|
2554
|
+
/* Counter + year */
|
|
2555
|
+
.fx-count,.fx-year{font-variant-numeric:tabular-nums;display:inline-block}
|
|
2606
2556
|
|
|
2607
|
-
/*
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
/* Footer */
|
|
2612
|
-
.fx-footer{
|
|
2613
|
-
padding:2.5rem;
|
|
2614
|
-
border-top:1px solid var(--aip-border);
|
|
2615
|
-
}
|
|
2557
|
+
/* ═══════════════════════════════════════════
|
|
2558
|
+
FOOTER — Geist footer style
|
|
2559
|
+
═══════════════════════════════════════════ */
|
|
2560
|
+
.fx-footer{padding:32px 40px;border-top:1px solid var(--ds-gray-alpha-400)}
|
|
2616
2561
|
.fx-footer-inner{
|
|
2617
|
-
max-width:
|
|
2618
|
-
display:flex;justify-content:space-between;align-items:center;
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
.fx-footer-
|
|
2622
|
-
.fx-footer-
|
|
2623
|
-
.fx-footer-link:
|
|
2624
|
-
.fx-footer-
|
|
2625
|
-
.fx-footer-
|
|
2626
|
-
|
|
2562
|
+
max-width:1200px;margin:0 auto;
|
|
2563
|
+
display:flex;justify-content:space-between;align-items:center;
|
|
2564
|
+
flex-wrap:wrap;gap:16px;
|
|
2565
|
+
}
|
|
2566
|
+
.fx-footer-brand{font-size:13px;font-weight:600;letter-spacing:-.02em;color:var(--ds-gray-1000)}
|
|
2567
|
+
.fx-footer-links{display:flex;gap:24px;flex-wrap:wrap}
|
|
2568
|
+
.fx-footer-link{font-size:13px;color:var(--ds-gray-700);transition:color var(--duration-normal)}
|
|
2569
|
+
.fx-footer-link:hover{color:var(--ds-gray-1000)}
|
|
2570
|
+
.fx-footer-note{font-size:12px;color:var(--ds-gray-600);font-family:var(--geist-mono)}
|
|
2571
|
+
.fx-footer-text{font-size:13px;color:var(--ds-gray-700)}
|
|
2572
|
+
@media(max-width:640px){.fx-footer{padding:24px}.fx-footer-inner{flex-direction:column;align-items:flex-start;gap:12px}}
|
|
2627
2573
|
`
|
|
2628
2574
|
|
|
2629
2575
|
// ════════════════════════════════════════════════════════════════
|
|
2630
|
-
//
|
|
2576
|
+
// GEIST COLOR TOKENS — Semantic scale, light + dark
|
|
2577
|
+
// Based on vercel.com/geist/colors
|
|
2578
|
+
// Backgrounds → Surfaces → Borders → Text
|
|
2631
2579
|
// ════════════════════════════════════════════════════════════════
|
|
2632
2580
|
const T = {
|
|
2633
2581
|
dark: `
|
|
2634
|
-
:root{
|
|
2635
|
-
|
|
2636
|
-
--
|
|
2637
|
-
--
|
|
2638
|
-
--
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
--
|
|
2642
|
-
--
|
|
2643
|
-
--
|
|
2644
|
-
--
|
|
2645
|
-
--
|
|
2646
|
-
--
|
|
2647
|
-
--
|
|
2582
|
+
:root {
|
|
2583
|
+
/* Backgrounds */
|
|
2584
|
+
--ds-background-100:#000000;
|
|
2585
|
+
--ds-background-100-rgb:0,0,0;
|
|
2586
|
+
--ds-background-200:#0a0a0a;
|
|
2587
|
+
|
|
2588
|
+
/* Gray scale (Geist) */
|
|
2589
|
+
--ds-gray-100:#0a0a0a;
|
|
2590
|
+
--ds-gray-200:#111111;
|
|
2591
|
+
--ds-gray-300:#1a1a1a;
|
|
2592
|
+
--ds-gray-400:#222222;
|
|
2593
|
+
--ds-gray-500:#2a2a2a;
|
|
2594
|
+
--ds-gray-600:#666666;
|
|
2595
|
+
--ds-gray-700:#888888;
|
|
2596
|
+
--ds-gray-800:#999999;
|
|
2597
|
+
--ds-gray-900:#aaaaaa;
|
|
2598
|
+
--ds-gray-1000:#ededed;
|
|
2599
|
+
|
|
2600
|
+
/* Gray alpha */
|
|
2601
|
+
--ds-gray-alpha-100:rgba(255,255,255,.04);
|
|
2602
|
+
--ds-gray-alpha-200:rgba(255,255,255,.07);
|
|
2603
|
+
--ds-gray-alpha-400:rgba(255,255,255,.12);
|
|
2604
|
+
--ds-gray-alpha-700:rgba(255,255,255,.24);
|
|
2605
|
+
|
|
2606
|
+
/* Accent colors */
|
|
2607
|
+
--ds-blue-100:rgba(0,112,243,.08);
|
|
2608
|
+
--ds-blue-200:rgba(0,112,243,.15);
|
|
2609
|
+
--ds-blue-700:#0070f3;
|
|
2610
|
+
--ds-blue-rgb:0,112,243;
|
|
2611
|
+
--ds-red-100:rgba(255,0,0,.08);
|
|
2612
|
+
--ds-red-200:rgba(255,0,0,.15);
|
|
2613
|
+
--ds-red-700:#ff0000;
|
|
2614
|
+
--ds-green-100:rgba(0,188,112,.08);
|
|
2615
|
+
--ds-green-700:#00bc70;
|
|
2648
2616
|
}`,
|
|
2649
2617
|
light: `
|
|
2650
|
-
:root{
|
|
2651
|
-
--
|
|
2652
|
-
--
|
|
2653
|
-
--
|
|
2654
|
-
|
|
2655
|
-
--
|
|
2656
|
-
--
|
|
2657
|
-
--
|
|
2658
|
-
--
|
|
2659
|
-
--
|
|
2660
|
-
--
|
|
2661
|
-
--
|
|
2662
|
-
--
|
|
2663
|
-
--
|
|
2618
|
+
:root {
|
|
2619
|
+
--ds-background-100:#ffffff;
|
|
2620
|
+
--ds-background-100-rgb:255,255,255;
|
|
2621
|
+
--ds-background-200:#fafafa;
|
|
2622
|
+
|
|
2623
|
+
--ds-gray-100:#fafafa;
|
|
2624
|
+
--ds-gray-200:#f5f5f5;
|
|
2625
|
+
--ds-gray-300:#ebebeb;
|
|
2626
|
+
--ds-gray-400:#e6e6e6;
|
|
2627
|
+
--ds-gray-500:#e0e0e0;
|
|
2628
|
+
--ds-gray-600:#888888;
|
|
2629
|
+
--ds-gray-700:#666666;
|
|
2630
|
+
--ds-gray-800:#444444;
|
|
2631
|
+
--ds-gray-900:#333333;
|
|
2632
|
+
--ds-gray-1000:#111111;
|
|
2633
|
+
|
|
2634
|
+
--ds-gray-alpha-100:rgba(0,0,0,.04);
|
|
2635
|
+
--ds-gray-alpha-200:rgba(0,0,0,.07);
|
|
2636
|
+
--ds-gray-alpha-400:rgba(0,0,0,.12);
|
|
2637
|
+
--ds-gray-alpha-700:rgba(0,0,0,.24);
|
|
2638
|
+
|
|
2639
|
+
--ds-blue-100:rgba(0,112,243,.06);
|
|
2640
|
+
--ds-blue-200:rgba(0,112,243,.12);
|
|
2641
|
+
--ds-blue-700:#0070f3;
|
|
2642
|
+
--ds-blue-rgb:0,112,243;
|
|
2643
|
+
--ds-red-100:rgba(255,0,0,.06);
|
|
2644
|
+
--ds-red-200:rgba(255,0,0,.12);
|
|
2645
|
+
--ds-red-700:#c00;
|
|
2646
|
+
--ds-green-100:rgba(0,188,112,.06);
|
|
2647
|
+
--ds-green-700:#007a45;
|
|
2664
2648
|
}`,
|
|
2665
2649
|
}
|
|
2666
2650
|
return base + (T[theme] || T.dark)
|
|
2667
2651
|
}
|
|
2668
2652
|
|
|
2653
|
+
|