diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 868f7ce..55ba25a 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -150,7 +150,8 @@ "Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\(json.dumps\\(d.get\\('dependencies',{}\\), indent=2\\)\\)\")", "Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\('version:', d.get\\('version'\\)\\)\")", "Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\('type:', d.get\\('type'\\)\\); print\\('error:', d.get\\('error',{}\\).get\\('message','none'\\)[:200]\\)\")", - "Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); text=next\\(\\(b['text'] for b in d.get\\('content',[]\\) if b['type']=='text'\\),''\\); print\\('STATUS:', d.get\\('type','?'\\)\\); print\\('ERROR:', d.get\\('error',{}\\).get\\('message','none'\\)[:300]\\); print\\('TEXT:', text[:300]\\)\")" + "Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); text=next\\(\\(b['text'] for b in d.get\\('content',[]\\) if b['type']=='text'\\),''\\); print\\('STATUS:', d.get\\('type','?'\\)\\); print\\('ERROR:', d.get\\('error',{}\\).get\\('message','none'\\)[:300]\\); print\\('TEXT:', text[:300]\\)\")", + "Bash(perl -pi -e 's/color: '\\\\''rgba\\\\\\(255,255,255,0\\\\.22\\\\\\)'\\\\''/color: T.dim/g;' -e 's/color: '\\\\''rgba\\\\\\(255,255,255,0\\\\.18\\\\\\)'\\\\''/color: T.dim/g;' -e 's/color: '\\\\''rgba\\\\\\(255,255,255,0\\\\.28\\\\\\)'\\\\''/color: T.key/g;' -e 's/color: '\\\\''rgba\\\\\\(255,255,255,0\\\\.32\\\\\\)'\\\\''/color: T.key/g;' -e 's/color: '\\\\''rgba\\\\\\(255,255,255,0\\\\.45\\\\\\)'\\\\''/color: T.fgMuted/g;' -e 's/color: '\\\\''rgba\\\\\\(255,255,255,0\\\\.5\\\\\\)'\\\\''/color: T.fgMuted/g;' -e 's/color: '\\\\''rgba\\\\\\(255,255,255,0\\\\.62\\\\\\)'\\\\''/color: T.fgMuted/g;' -e 's/color: '\\\\''rgba\\\\\\(255,255,255,0\\\\.85\\\\\\)'\\\\''/color: T.fg/g;' -e 's/color: '\\\\''rgba\\\\\\(255,255,255,0\\\\.88\\\\\\)'\\\\''/color: T.fg/g;' /Users/USER/Desktop/originmain/packages/app/src/components/inspector/Inspector.tsx)" ] } } diff --git a/packages/app/public/marketing.html b/packages/app/public/marketing.html index c496cab..db3d663 100644 --- a/packages/app/public/marketing.html +++ b/packages/app/public/marketing.html @@ -69,6 +69,45 @@ --mono: 'JetBrains Mono', 'SF Mono', ui-monospace, 'Cascadia Code', monospace; } +/* ════════════════════════════════════════════════════════════ + DARK MODE — flip every semantic token + ════════════════════════════════════════════════════════════ */ +[data-theme="dark"] { + --bg: #0A0A0A; + --bg-subtle: #0F0F11; + --bg-muted: #161618; + --bg-strong: #1C1C1E; + --bg-inv: #F4F4F5; + --bg-inv-2: #E4E4E7; + --bg-inv-3: #D4D4D8; + + --fg: rgba(255,255,255,0.92); + --fg-2: rgba(255,255,255,0.58); + --fg-3: rgba(255,255,255,0.34); + --fg-4: rgba(255,255,255,0.16); + --fg-inv: #09090B; + --fg-inv-2: rgba(0,0,0,0.62); + --fg-inv-3: rgba(0,0,0,0.35); + + --border: rgba(255,255,255,0.07); + --border-2: rgba(255,255,255,0.12); + --border-inv: rgba(0,0,0,0.08); + --border-inv-2:rgba(0,0,0,0.14); + + --sh-xs: 0 1px 2px rgba(0,0,0,0.3); + --sh-sm: 0 1px 3px rgba(0,0,0,0.35), 0 1px 2px rgba(0,0,0,0.25); + --sh-md: 0 4px 8px rgba(0,0,0,0.32), 0 2px 4px rgba(0,0,0,0.22); + --sh-lg: 0 10px 24px rgba(0,0,0,0.38), 0 4px 8px rgba(0,0,0,0.26); + --sh-xl: 0 20px 40px rgba(0,0,0,0.42), 0 8px 16px rgba(0,0,0,0.28); + --sh-2xl:0 32px 64px rgba(0,0,0,0.48), 0 16px 32px rgba(0,0,0,0.32); + --sh-product: 0 48px 96px rgba(0,0,0,0.55), 0 0 0 1px rgba(255,255,255,0.05); +} + +/* Nav glass adapts in dark mode */ +[data-theme="dark"] #nav.scrolled { + background: rgba(10,10,10,0.88); +} + /* ════════════════════════════════════════════════════════════ RESET ════════════════════════════════════════════════════════════ */ @@ -276,6 +315,22 @@ button { font-family: inherit; cursor: pointer; border: none; background: none; } .nav-links a:hover { color: var(--fg); } .nav-actions { display: flex; align-items: center; gap: 8px; } +.nav-theme-btn { + display: flex; + align-items: center; + justify-content: center; + width: 34px; + height: 34px; + border-radius: var(--r-2); + background: none; + border: 1px solid var(--border-2); + color: var(--fg-3); + font-size: 0.9rem; + transition: background 0.12s, color 0.12s, border-color 0.12s; + cursor: pointer; + flex-shrink: 0; +} +.nav-theme-btn:hover { background: var(--bg-muted); color: var(--fg); border-color: var(--border-2); } /* ── Hamburger ── */ .nav-burger { @@ -1555,6 +1610,7 @@ footer { } .nav-links { display: none; } .nav-actions .btn { display: none; } + .nav-actions .nav-theme-btn { display: none; } .nav-burger { display: flex; } .section { padding: 80px 0; } .feat-block { padding: 80px 24px; } @@ -1625,6 +1681,9 @@ footer {