diff --git a/site/css/common.css b/site/css/common.css index 307e69a..86d22fc 100644 --- a/site/css/common.css +++ b/site/css/common.css @@ -1,20 +1,29 @@ :root { - --bg0: #0d1117; - --bg1: #161b22; - --bg2: #21262d; - --bg3: #30363d; - --border: #30363d; + --bg0: #0a0e14; + --bg1: #111820; + --bg2: #1a2230; + --bg3: #242f3f; + --border: #2a3544; + --border-subtle: #1c2533; --t1: #e6edf3; - --t2: #8b949e; - --t3: #6e7681; - --blue: #58a6ff; + --t2: #8b9cb3; + --t3: #5c6b7f; + --accent: #3b82f6; + --accent-hover: #2563eb; + --accent-dim: rgba(59, 130, 246, 0.1); + --accent-glow: rgba(59, 130, 246, 0.08); + --warm: #c9a227; + --blue: #3b82f6; --green: #3fb950; --yellow: #d29922; --red: #f85149; - --purple: #bc8cff; - --orange: #f0883e; + --purple: #a78bfa; + --orange: #e0883e; --cyan: #39c5cf; - --grad: linear-gradient(135deg, #58a6ff, #bc8cff); + --font-sans: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + --font-mono: 'IBM Plex Mono', 'Cascadia Code', 'SF Mono', Consolas, monospace; + --radius: 6px; + --radius-lg: 8px; } * { @@ -28,11 +37,26 @@ html { } body { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + font-family: var(--font-sans); background: var(--bg0); color: var(--t1); line-height: 1.6; overflow-x: hidden; + -webkit-font-smoothing: antialiased; +} + +body::before { + content: ''; + position: fixed; + inset: 0; + pointer-events: none; + z-index: 0; + opacity: 0.35; + background-image: + linear-gradient(var(--border-subtle) 1px, transparent 1px), + linear-gradient(90deg, var(--border-subtle) 1px, transparent 1px); + background-size: 64px 64px; + mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, black 0%, transparent 70%); } a { @@ -50,17 +74,17 @@ a:hover { left: 16px; z-index: 200; padding: 8px 16px; - border-radius: 6px; - background: var(--blue); + border-radius: var(--radius); + background: var(--accent); color: #fff; - font-size: 14px; + font-size: 13px; font-weight: 600; text-decoration: none; } .skip-link:focus { top: 16px; - outline: 2px solid var(--cyan); + outline: 2px solid var(--accent); outline-offset: 2px; } @@ -71,19 +95,18 @@ a:hover { left: 0; right: 0; z-index: 100; - background: rgba(13, 17, 23, 0.85); - backdrop-filter: blur(12px); + background: rgba(10, 14, 20, 0.92); border-bottom: 1px solid var(--border); padding: 0 24px; } .nav-inner { - max-width: 1200px; + max-width: 1120px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; - height: 56px; + height: 52px; } .nav-brand { @@ -91,9 +114,10 @@ a:hover { align-items: center; gap: 10px; font-weight: 600; - font-size: 15px; + font-size: 14px; color: var(--t1); text-decoration: none; + letter-spacing: -0.01em; } .nav-brand:hover { @@ -104,7 +128,7 @@ a:hover { .nav-logo { width: 28px; height: 28px; - border-radius: 6px; + border-radius: var(--radius); overflow: hidden; display: inline-flex; align-items: center; @@ -124,7 +148,7 @@ a:hover { .nav-links { display: flex; - gap: 24px; + gap: 20px; align-items: center; } @@ -132,7 +156,7 @@ a:hover { color: var(--t2); font-size: 13px; text-decoration: none; - transition: color 0.2s; + transition: color 0.15s; } .nav-links a:hover { @@ -141,66 +165,75 @@ a:hover { } .btn-nav { - padding: 6px 16px; - border-radius: 6px; - background: var(--blue); + padding: 5px 14px; + border-radius: var(--radius); + background: var(--accent); color: #fff !important; + font-family: var(--font-mono); font-weight: 500; - font-size: 13px; - transition: opacity 0.2s; + font-size: 12px; + transition: background 0.15s; } .btn-nav:hover { - opacity: 0.9; + background: var(--accent-hover); text-decoration: none !important; } /* Section base */ .section { - padding: 100px 24px; + padding: 96px 24px; + position: relative; + z-index: 1; } .section-inner { - max-width: 1100px; + max-width: 1060px; margin: 0 auto; } .section-label { - font-size: 11px; - text-transform: uppercase; - letter-spacing: 1.5px; - color: var(--blue); - font-weight: 600; - margin-bottom: 8px; + font-family: var(--font-mono); + font-size: 12px; + color: var(--t3); + font-weight: 500; + margin-bottom: 10px; +} + +.section-label::before { + content: '// '; + color: var(--t3); + opacity: 0.65; } .section-title { - font-size: clamp(28px, 4vw, 40px); - font-weight: 700; - margin-bottom: 16px; - letter-spacing: -0.01em; + font-size: clamp(26px, 3.5vw, 36px); + font-weight: 600; + margin-bottom: 14px; + letter-spacing: -0.025em; + line-height: 1.2; } .section-desc { - font-size: 16px; + font-size: 15px; color: var(--t2); - max-width: 600px; - line-height: 1.6; + max-width: 560px; + line-height: 1.65; } .section-header { - margin-bottom: 56px; + margin-bottom: 48px; } /* Buttons */ .btn-hero { - padding: 12px 28px; - border-radius: 8px; - font-size: 15px; + padding: 10px 22px; + border-radius: var(--radius); + font-size: 14px; font-weight: 600; cursor: pointer; border: none; - transition: all 0.2s; + transition: background 0.15s, border-color 0.15s, color 0.15s; text-decoration: none; display: inline-flex; align-items: center; @@ -212,34 +245,34 @@ a:hover { } .btn-primary { - background: var(--blue); + background: var(--accent); color: #fff; } .btn-primary:hover { - background: #4a96ef; - box-shadow: 0 0 20px rgba(88, 166, 255, 0.3); + background: var(--accent-hover); } .btn-secondary { background: transparent; color: var(--t1); border: 1px solid var(--border); + font-weight: 500; } .btn-secondary:hover { - border-color: var(--t2); + border-color: var(--t3); background: var(--bg1); } -/* Animations */ +/* Animations: subtle, not SaaS-bouncy */ .fade-in { opacity: 0; - transform: translateY(24px); + transform: translateY(10px); } .fade-in.visible { - animation: fadeInUp 0.7s cubic-bezier(0.16, 1, 0.3, 1) var(--stagger, 0s) both; + animation: fadeInUp 0.5s ease-out var(--stagger, 0s) both; } @keyframes fadeInUp { @@ -254,6 +287,8 @@ a:hover { padding: 32px 24px; border-top: 1px solid var(--border); text-align: center; + position: relative; + z-index: 1; } .footer p { diff --git a/site/css/download.css b/site/css/download.css new file mode 100644 index 0000000..a759121 --- /dev/null +++ b/site/css/download.css @@ -0,0 +1,531 @@ +/* Download page: extends common.css */ + +.page { + max-width: 720px; + margin: 0 auto; + padding: 96px 24px 60px; + position: relative; + z-index: 1; +} + +/* Hero */ +.dl-hero { + text-align: center; + margin-bottom: 40px; +} + +.dl-hero h1 { + font-size: clamp(26px, 3.5vw, 36px); + font-weight: 600; + margin-bottom: 12px; + letter-spacing: -0.025em; + line-height: 1.2; +} + +.dl-hero h1 .grad { + color: var(--accent); + -webkit-text-fill-color: var(--accent); + background: none; +} + +.dl-hero p { + color: var(--t2); + font-size: 15px; + max-width: 520px; + margin: 0 auto; + line-height: 1.65; +} + +/* Sections */ +.dl-section { + margin-bottom: 32px; +} + +.dl-section-title { + font-size: 18px; + font-weight: 600; + margin-bottom: 12px; + letter-spacing: -0.02em; + line-height: 1.25; +} + +.dl-section .section-label { + margin-bottom: 8px; +} + +/* Main download card */ +.dl-card { + border-radius: var(--radius-lg); + border: 1px solid var(--border); + background: var(--bg1); + padding: 28px; + margin-bottom: 36px; +} + +.dl-detected { + display: flex; + align-items: center; + gap: 12px; + margin-bottom: 20px; +} + +.dl-os-icon { + width: 44px; + height: 44px; + border-radius: var(--radius-lg); + background: var(--bg0); + border: 1px solid var(--border); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.dl-os-info h2 { + font-size: 18px; + font-weight: 600; + margin-bottom: 2px; + letter-spacing: -0.01em; +} + +.dl-os-info p { + font-size: 13px; + color: var(--t2); +} + +.dl-meta { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1px; + margin-bottom: 20px; + border: 1px solid var(--border); + border-radius: var(--radius-lg); + overflow: hidden; + background: var(--border); +} + +.dl-meta-item { + display: flex; + flex-direction: column; + gap: 2px; + padding: 12px 14px; + background: var(--bg0); +} + +.dl-meta-label { + font-family: var(--font-mono); + font-size: 10px; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--t3); +} + +.dl-meta-value { + font-size: 13px; + font-weight: 500; + color: var(--t1); +} + +.dl-meta-value code { + font-family: var(--font-mono); + background: var(--bg2); + padding: 1px 5px; + border-radius: 3px; + font-size: 11px; + color: var(--t1); + border: 1px solid var(--border); + word-break: break-all; +} + +.btn-download { + display: inline-flex; + align-items: center; + gap: 10px; + padding: 11px 24px; + border-radius: var(--radius); + background: var(--accent); + color: #fff; + font-size: 14px; + font-weight: 600; + border: none; + cursor: pointer; + transition: background 0.15s; + text-decoration: none; +} + +.btn-download:hover { + background: var(--accent-hover); + text-decoration: none; + color: #fff; +} + +.btn-download svg { + flex-shrink: 0; +} + +.dl-actions { + display: flex; + align-items: center; + gap: 16px; + flex-wrap: wrap; + margin-bottom: 20px; +} + +.dl-alt { + font-size: 13px; + color: var(--t3); +} + +.dl-alt a { + color: var(--t2); + font-size: 13px; +} + +/* Trust: inside card */ +.trust-list--compact { + margin: 0; + padding: 16px 0 0; + border-top: 1px solid var(--border); +} + +.trust-list--compact li { + padding: 5px 0; +} + +.trust-list--compact li span { + color: var(--t2); + font-size: 13px; + line-height: 1.5; +} + +.trust-list--compact code { + font-family: var(--font-mono); + font-size: 11px; + padding: 1px 4px; + border-radius: 3px; + background: var(--bg0); + color: var(--t1); + border: 1px solid var(--border); +} + +.dl-verify { + margin-top: 10px; + font-family: var(--font-mono); + font-size: 11px; + color: var(--t3); + line-height: 1.5; +} + +.dl-verify a { + color: var(--t2); +} + +/* Other platforms */ +.dl-others { + display: flex; + flex-direction: column; + align-items: center; + margin-top: 20px; + padding-top: 20px; + border-top: 1px solid var(--border); + text-align: center; +} + +.dl-others-label { + font-family: var(--font-mono); + font-size: 11px; + color: var(--t3); + margin-bottom: 10px; +} + +.dl-others-row { + display: flex; + gap: 8px; + flex-wrap: wrap; + justify-content: center; +} + +.btn-other { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 6px 14px; + border-radius: var(--radius); + border: 1px solid var(--border); + background: var(--bg0); + color: var(--t2); + font-family: var(--font-mono); + font-size: 12px; + transition: border-color 0.15s, color 0.15s, background 0.15s; + text-decoration: none; + cursor: pointer; +} + +.btn-other:hover { + border-color: var(--t3); + color: var(--t1); + text-decoration: none; +} + +.btn-other.active { + border-color: var(--accent); + color: var(--accent); + background: var(--accent-dim); +} + +/* Install steps */ +.install-steps { + list-style: none; + counter-reset: step; + padding-left: 28px; + border-left: 1px solid var(--border); + margin: 0; +} + +.install-steps li { + counter-increment: step; + position: relative; + padding: 0 0 20px 16px; + font-size: 13px; + color: var(--t2); + line-height: 1.6; +} + +.install-steps li:last-child { + padding-bottom: 0; +} + +.install-steps li::before { + content: '0' counter(step); + position: absolute; + left: -28px; + top: 0; + font-family: var(--font-mono); + font-size: 11px; + font-weight: 600; + color: var(--t1); +} + +.install-steps li strong { + color: var(--t1); + font-weight: 600; +} + +.install-steps code { + font-family: var(--font-mono); + background: var(--bg2); + padding: 1px 5px; + border-radius: 3px; + font-size: 11px; + color: var(--t1); + border: 1px solid var(--border); +} + +/* OS warning */ +.os-warning { + margin-top: 18px; + padding: 14px 0 0; + border-top: 1px dashed var(--border); + display: flex; + gap: 10px; + align-items: flex-start; +} + +.os-warning svg { + flex-shrink: 0; + margin-top: 1px; +} + +.os-warning p { + font-size: 13px; + color: var(--t3); + line-height: 1.6; +} + +.os-warning strong { + color: var(--yellow); + font-weight: 600; +} + +/* Requirements */ +.req-lead { + font-size: 14px; + color: var(--t2); + margin-bottom: 12px; + line-height: 1.55; +} + +.req-box { + border: 1px solid var(--border); + border-radius: var(--radius-lg); + background: var(--bg1); + overflow: hidden; +} + +.req-row { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 16px; + padding: 12px 16px; + font-size: 13px; + border-bottom: 1px solid var(--border); +} + +.req-row:last-child { + border-bottom: none; +} + +.req-name { + font-weight: 600; + color: var(--t1); + flex-shrink: 0; +} + +.req-detail { + color: var(--t2); + text-align: right; + line-height: 1.45; +} + +.req-foot { + margin-top: 12px; + font-size: 13px; + color: var(--t3); + line-height: 1.55; +} + +.req-box code { + font-family: var(--font-mono); + background: var(--bg0); + padding: 1px 5px; + border-radius: 3px; + font-size: 11px; + color: var(--t1); + border: 1px solid var(--border); +} + +/* Trust list (shared) */ +.trust-list { + list-style: none; + margin: 0; + padding: 0; +} + +.trust-list li { + display: flex; + align-items: flex-start; + gap: 10px; + font-size: 13px; + color: var(--t2); + padding: 6px 0; +} + +.trust-list li svg { + flex-shrink: 0; + margin-top: 2px; + opacity: 0.85; +} + +.trust-list li strong { + color: var(--t1); + font-weight: 600; +} + +/* Install from source */ +.dl-source { + margin-bottom: 0; +} + +.source-box { + border: 1px solid var(--border); + border-radius: var(--radius-lg); + background: var(--bg1); + overflow: hidden; +} + +.source-code { + margin: 0; + padding: 16px 18px; + background: var(--bg0); + border-bottom: 1px solid var(--border); + overflow-x: auto; +} + +.source-code code { + font-family: var(--font-mono); + font-size: 12px; + line-height: 1.7; + color: var(--t1); + white-space: pre; +} + +.source-foot { + padding: 12px 18px; + font-size: 13px; + color: var(--t3); + line-height: 1.55; + margin: 0; +} + +.source-foot code { + font-family: var(--font-mono); + font-size: 11px; + padding: 1px 4px; + border-radius: 3px; + background: var(--bg0); + color: var(--t1); + border: 1px solid var(--border); +} + +/* Divider */ +.dl-divider { + height: 1px; + background: var(--border); + margin: 8px 0 28px; +} + +.hidden { + display: none !important; +} + +/* Responsive */ +@media (max-width: 768px) { + .page { + padding: 88px 16px 40px; + } + + .dl-card { + padding: 20px; + } + + .dl-meta { + grid-template-columns: 1fr; + } + + .dl-hero h1 { + font-size: 24px; + } + + .dl-actions { + flex-direction: column; + align-items: flex-start; + } +} + +@media (max-width: 480px) { + .dl-detected { + flex-direction: column; + text-align: center; + } + + .req-row { + flex-direction: column; + align-items: flex-start; + gap: 4px; + } + + .req-detail { + text-align: left; + } +} diff --git a/site/css/index.css b/site/css/index.css index c12e9ca..85632f3 100644 --- a/site/css/index.css +++ b/site/css/index.css @@ -1,108 +1,105 @@ /* Hero */ .hero { - min-height: 100vh; + min-height: 92vh; display: flex; align-items: center; justify-content: center; text-align: center; - padding: 120px 24px 80px; + padding: 108px 24px 64px; position: relative; overflow: hidden; + z-index: 1; } .hero::before { content: ''; position: absolute; - top: -40%; - left: 50%; - transform: translateX(-50%); - width: 800px; - height: 800px; - background: radial-gradient(circle, rgba(88, 166, 255, 0.08) 0%, rgba(188, 140, 255, 0.04) 40%, transparent 70%); - pointer-events: none; -} - -#hero-canvas { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; + inset: 0; + background: radial-gradient(ellipse 55% 45% at 50% 35%, var(--accent-glow) 0%, transparent 65%); pointer-events: none; } .hero-content { position: relative; - max-width: 720px; + max-width: 680px; z-index: 1; } .hero h1 { - font-size: clamp(36px, 6vw, 64px); - font-weight: 700; - line-height: 1.1; - margin-bottom: 20px; - letter-spacing: -0.02em; + font-size: clamp(34px, 5.5vw, 56px); + font-weight: 600; + line-height: 1.12; + margin-bottom: 18px; + letter-spacing: -0.03em; } .hero h1 .grad { - background: var(--grad); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; + color: var(--accent); + -webkit-text-fill-color: var(--accent); + background: none; } .hero p { - font-size: clamp(16px, 2vw, 20px); + font-size: clamp(15px, 1.8vw, 17px); color: var(--t2); - max-width: 600px; - margin: 0 auto 36px; - line-height: 1.5; + max-width: 520px; + margin: 0 auto 32px; + line-height: 1.65; } .hero-actions { display: flex; - gap: 12px; + gap: 10px; justify-content: center; flex-wrap: wrap; } .hero-stats { - display: flex; - gap: 32px; - justify-content: center; - margin-top: 48px; - padding-top: 32px; - border-top: 1px solid var(--border); + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 1px; + margin-top: 44px; + border: 1px solid var(--border); + border-radius: var(--radius-lg); + overflow: hidden; + background: var(--border); + max-width: 560px; + margin-left: auto; + margin-right: auto; } .hero-stat { text-align: center; + padding: 14px 10px; + background: var(--bg1); } .hero-stat .num { - font-size: 28px; - font-weight: 700; + font-family: var(--font-mono); + font-size: 14px; + font-weight: 600; color: var(--t1); + letter-spacing: -0.02em; } .hero-stat .label { - font-size: 12px; + font-family: var(--font-mono); + font-size: 10px; color: var(--t3); text-transform: uppercase; - letter-spacing: 0.5px; + letter-spacing: 0.04em; + margin-top: 2px; } -/* Dashboard Preview (window only — tentacles in inline CSS) */ +/* Dashboard Preview */ .preview { width: 100%; - padding: 0 24px 80px; - margin-top: -40px; + padding: 0 24px 72px; + margin-top: -24px; position: relative; z-index: 1; } -/* Scales on mobile via inline CSS; desktop = pass-through wrapper */ .preview-stage { width: 100%; max-width: 1000px; @@ -113,27 +110,43 @@ .preview-window { max-width: 1000px; margin: 0 auto; - border-radius: 12px; + border-radius: var(--radius-lg); border: 1px solid var(--border); overflow: hidden; - box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5), 0 0 40px rgba(88, 166, 255, 0.06); + box-shadow: 0 16px 48px rgba(0, 0, 0, 0.45); position: relative; z-index: 1; } .preview-bar { display: flex; - gap: 6px; - padding: 10px 14px; + align-items: center; + gap: 10px; + padding: 9px 14px; background: var(--bg2); border-bottom: 1px solid var(--border); } +.preview-dots { + display: flex; + gap: 6px; + flex-shrink: 0; +} + .preview-dot { - width: 10px; - height: 10px; + width: 9px; + height: 9px; border-radius: 50%; - opacity: 0.8; + opacity: 0.75; +} + +.preview-url { + flex: 1; + font-family: var(--font-mono); + font-size: 11px; + color: var(--t3); + text-align: center; + user-select: none; } .preview-img { @@ -152,30 +165,37 @@ .pain-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); - gap: 20px; - margin-top: 40px; + gap: 12px; + margin-top: 36px; } .pain-card { - padding: 24px; - border-radius: 10px; + padding: 20px; + border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--bg0); - transition: all 0.25s; + transition: border-color 0.15s; position: relative; - overflow: hidden; } .pain-card:hover { - border-color: rgba(88, 166, 255, 0.25); - box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25); + border-color: var(--t3); } .pain-icon { - margin-bottom: 12px; + margin-bottom: 10px; display: flex; align-items: center; - justify-content: center; + justify-content: flex-start; +} + +.problem .pain-icon svg { + opacity: 0.5; +} + +.hub-grid .pain-icon svg { + fill: var(--t2) !important; + opacity: 0.75; } .pain-card h3, @@ -183,10 +203,11 @@ font-size: 14px; font-weight: 600; margin-bottom: 6px; + letter-spacing: -0.01em; } .hub-grid { - max-width: 900px; + max-width: 880px; margin-left: auto; margin-right: auto; } @@ -194,146 +215,88 @@ .pain-card p { font-size: 13px; color: var(--t2); - line-height: 1.5; + line-height: 1.55; } /* Features */ .features-grid { display: grid; - grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); - gap: 16px; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 12px; } .feat-card { - padding: 28px; - border-radius: 12px; + padding: 22px; + border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--bg1); - transition: all 0.25s; - position: relative; - overflow: hidden; + transition: border-color 0.15s; + border-left: 2px solid var(--border-subtle); } .feat-card:hover { - border-color: var(--blue); - transform: translateY(-2px); - box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3); -} - -.feat-card::after { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 2px; - background: var(--grad); - opacity: 0; - transition: opacity 0.25s; - z-index: 3; -} - -.feat-card:hover::after { - opacity: 1; -} - -.feat-card::before, -.pain-card::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border-radius: inherit; - background: radial-gradient(600px circle at var(--mx, 50%) var(--my, 50%), rgba(88, 166, 255, 0.06), transparent 40%); - opacity: 0; - transition: opacity 0.3s; - pointer-events: none; - z-index: 1; -} - -.feat-card:hover::before, -.pain-card:hover::before { - opacity: 1; -} - -.feat-card > *, -.pain-card > * { - position: relative; - z-index: 2; + border-color: var(--border); + border-left-color: var(--accent); } .feat-icon { - width: 40px; - height: 40px; - border-radius: 10px; + width: 32px; + height: 32px; + border-radius: var(--radius); display: flex; align-items: center; justify-content: center; - margin-bottom: 16px; - font-size: 18px; -} - -.feat-icon.blue { - background: rgba(88, 166, 255, 0.1); - color: var(--blue); -} - -.feat-icon.green { - background: rgba(63, 185, 80, 0.1); - color: var(--green); -} - -.feat-icon.purple { - background: rgba(188, 140, 255, 0.1); - color: var(--purple); -} - -.feat-icon.orange { - background: rgba(240, 136, 62, 0.1); - color: var(--orange); -} - -.feat-icon.yellow { - background: rgba(210, 153, 34, 0.1); - color: var(--yellow); + margin-bottom: 14px; + font-size: 16px; + background: var(--bg0); + border: 1px solid var(--border); + color: var(--t2); + transition: color 0.15s, border-color 0.15s; } -.feat-icon.red { - background: rgba(248, 81, 73, 0.1); - color: var(--red); +.feat-card:hover .feat-icon { + color: var(--accent); + border-color: var(--t3); } +.feat-icon.blue, +.feat-icon.green, +.feat-icon.purple, +.feat-icon.orange, +.feat-icon.yellow, +.feat-icon.red, .feat-icon.cyan { - background: rgba(57, 197, 207, 0.1); - color: var(--cyan); + background: var(--bg0); + border: 1px solid var(--border); + color: var(--t2); } .feat-card h3 { - font-size: 16px; + font-size: 15px; font-weight: 600; - margin-bottom: 8px; + margin-bottom: 6px; + letter-spacing: -0.01em; } .feat-card p { font-size: 13px; color: var(--t2); - line-height: 1.5; + line-height: 1.55; } .feat-tags { display: flex; - gap: 6px; + gap: 5px; margin-top: 12px; flex-wrap: wrap; } .feat-tag { - padding: 2px 8px; - border-radius: 4px; + padding: 2px 7px; + border-radius: 3px; + font-family: var(--font-mono); font-size: 10px; - background: var(--bg2); + background: var(--bg0); color: var(--t3); border: 1px solid var(--border); } @@ -341,48 +304,53 @@ /* How it works */ .steps { display: grid; - grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); - gap: 24px; - margin-top: 48px; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 12px; + margin-top: 40px; } .step { - text-align: center; - padding: 32px 24px; + text-align: left; + padding: 24px 20px; + border: 1px solid var(--border); + border-radius: var(--radius-lg); + background: var(--bg0); } .step-num { - width: 48px; - height: 48px; - border-radius: 50%; - background: var(--bg2); - border: 2px solid var(--border); - display: flex; - align-items: center; - justify-content: center; - font-size: 18px; - font-weight: 700; - color: var(--blue); - margin: 0 auto 16px; + font-family: var(--font-mono); + font-size: 12px; + font-weight: 600; + color: var(--t1); + margin-bottom: 12px; + letter-spacing: 0.05em; +} + +.step-num::before { + content: '0'; } .step h4 { - font-size: 15px; + font-size: 14px; font-weight: 600; margin-bottom: 8px; + letter-spacing: -0.01em; } .step p { font-size: 13px; color: var(--t2); - line-height: 1.5; + line-height: 1.55; } .step code { + font-family: var(--font-mono); background: var(--bg2); - padding: 2px 6px; - border-radius: 4px; - font-size: 12px; + padding: 1px 5px; + border-radius: 3px; + font-size: 11px; + color: var(--t1); + border: 1px solid var(--border); } /* Security panel */ @@ -393,18 +361,39 @@ } .security-panel { - max-width: 760px; - margin: 40px auto 0; - border-radius: 12px; + max-width: 720px; + margin: 36px auto 0; + border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--bg0); overflow: hidden; - box-shadow: 0 12px 40px rgba(0, 0, 0, 0.22); } .security-panel-accent { - height: 2px; - background: linear-gradient(90deg, var(--blue), var(--green) 55%, var(--cyan)); + display: flex; + align-items: center; + gap: 10px; + padding: 9px 16px; + background: var(--bg2); + border-bottom: 1px solid var(--border); + font-family: var(--font-mono); + font-size: 11px; + color: var(--t3); + height: auto; +} + +.security-panel-accent::before { + content: '● ● ●'; + letter-spacing: 3px; + font-size: 7px; + color: var(--t3); + opacity: 0.6; + flex-shrink: 0; +} + +.security-panel-accent::after { + content: '127.0.0.1:3847 / security audit'; + color: var(--t3); } .security-panel-grid { @@ -413,7 +402,7 @@ } .security-block { - padding: 22px 24px; + padding: 20px 22px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); } @@ -431,41 +420,34 @@ display: flex; align-items: center; gap: 10px; - margin-bottom: 14px; + margin-bottom: 12px; } .security-block-icon { - width: 32px; - height: 32px; - border-radius: 8px; + width: 28px; + height: 28px; + border-radius: var(--radius); display: flex; align-items: center; justify-content: center; flex-shrink: 0; + background: var(--bg0); + border: 1px solid var(--border); + color: var(--t2); } -.security-block-icon.blue { - background: rgba(88, 166, 255, 0.12); - color: var(--blue); -} - -.security-block-icon.green { - background: rgba(63, 185, 80, 0.12); - color: var(--green); -} - -.security-block-icon.purple { - background: rgba(188, 140, 255, 0.12); - color: var(--purple); -} - +.security-block-icon.blue, +.security-block-icon.green, +.security-block-icon.purple, .security-block-icon.orange { - background: rgba(240, 136, 62, 0.12); - color: var(--orange); + background: var(--bg0); + border: 1px solid var(--border); + color: var(--t2); } .security-block h3 { - font-size: 13px; + font-family: var(--font-mono); + font-size: 12px; font-weight: 600; color: var(--t1); margin: 0; @@ -483,7 +465,7 @@ .security-block--wide .security-list { display: grid; grid-template-columns: 1fr 1fr; - gap: 14px 28px; + gap: 12px 24px; } .security-list li { @@ -496,7 +478,7 @@ font-size: 13px; font-weight: 600; color: var(--t1); - margin-bottom: 3px; + margin-bottom: 2px; } .security-list span { @@ -507,28 +489,31 @@ } .security-list code { + font-family: var(--font-mono); font-size: 11px; - padding: 1px 5px; - border-radius: 4px; + padding: 1px 4px; + border-radius: 3px; background: var(--bg2); - color: var(--t2); + color: var(--t1); + border: 1px solid var(--border); } .security-hub { display: flex; align-items: flex-start; - gap: 14px; - padding: 16px 24px; - background: rgba(57, 197, 207, 0.06); + gap: 12px; + padding: 14px 22px; + background: var(--bg1); border-top: 1px solid var(--border); } .security-hub-icon { - width: 32px; - height: 32px; - border-radius: 8px; - background: rgba(57, 197, 207, 0.12); - color: var(--cyan); + width: 28px; + height: 28px; + border-radius: var(--radius); + background: var(--bg0); + border: 1px solid var(--border); + color: var(--t2); display: flex; align-items: center; justify-content: center; @@ -556,27 +541,28 @@ } .security-hub-tag { - display: block; + display: inline-block; + font-family: var(--font-mono); font-size: 10px; - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.05em; - color: var(--cyan); - margin-top: 2px; + font-weight: 500; + color: var(--t3); + margin-top: 4px; } /* Editors */ .editors { text-align: center; padding: 80px 24px; + position: relative; + z-index: 1; } .editor-logos { display: flex; - gap: 40px; + gap: 32px; justify-content: center; align-items: center; - margin-top: 32px; + margin-top: 28px; flex-wrap: wrap; } @@ -590,90 +576,82 @@ } .editor-box { - width: 56px; - height: 56px; - border-radius: 12px; + width: 48px; + height: 48px; + border-radius: var(--radius-lg); background: var(--bg1); border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; - font-size: 24px; - transition: all 0.2s; + font-size: 22px; + transition: border-color 0.15s; + color: var(--t2); +} + +.editor-box svg { + fill: currentColor; } .editor-item:hover .editor-box { - border-color: var(--blue); - transform: scale(1.05); + border-color: var(--t3); + color: var(--accent); } /* CTA */ .cta { text-align: center; - padding: 100px 24px; + padding: 88px 24px; + position: relative; + z-index: 1; } .cta-box { - max-width: 640px; + max-width: 580px; margin: 0 auto; - padding: 48px 40px; - border-radius: 16px; + padding: 40px 36px; + border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--bg1); - position: relative; - overflow: hidden; -} - -.cta-box::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 2px; - background: var(--grad); } .cta-box h2 { - font-size: 28px; - font-weight: 700; - margin-bottom: 12px; + font-size: 24px; + font-weight: 600; + margin-bottom: 10px; + letter-spacing: -0.02em; } .cta-box > p { color: var(--t2); - margin-bottom: 28px; - font-size: 15px; + margin-bottom: 24px; + font-size: 14px; + line-height: 1.6; } .cta-actions { - margin-top: 24px; + margin-top: 20px; display: flex; - gap: 12px; + gap: 10px; flex-wrap: wrap; justify-content: center; } -.cta-footnote { - font-size: 12px; - color: var(--t3); - margin-top: 16px; -} - .platforms { display: flex; - gap: 12px; + gap: 8px; justify-content: center; - margin-top: 20px; + margin-top: 18px; } .plat { - padding: 4px 12px; - border-radius: 6px; + padding: 3px 10px; + border-radius: var(--radius); border: 1px solid var(--border); - background: var(--bg2); - font-size: 11px; - color: var(--t2); + background: var(--bg0); + font-family: var(--font-mono); + font-size: 10px; + color: var(--t3); display: flex; align-items: center; gap: 5px; @@ -693,7 +671,7 @@ .hero { min-height: auto; - padding: 100px 20px 60px; + padding: 96px 20px 48px; } .hero h1 { @@ -705,12 +683,11 @@ } .hero-stats { - flex-direction: column; - gap: 16px; + grid-template-columns: 1fr 1fr; } .section { - padding: 60px 0; + padding: 64px 0; } .section-inner { @@ -726,7 +703,7 @@ } .feat-card { - padding: 20px; + padding: 18px; } .pain-grid { @@ -759,11 +736,11 @@ } .cta-box { - padding: 48px 20px; + padding: 32px 20px; } .cta-box h2 { - font-size: 24px; + font-size: 22px; } .platforms { @@ -772,8 +749,8 @@ } .preview { - padding: 0 16px 60px; - margin-top: -20px; + padding: 0 16px 56px; + margin-top: -12px; display: flex; justify-content: center; overflow-x: clip; @@ -790,12 +767,16 @@ font-size: 24px; } + .hero-stats { + grid-template-columns: 1fr 1fr; + } + .pain-grid { grid-template-columns: 1fr; } .pain-card { - padding: 18px; + padding: 16px; } .nav-inner { @@ -805,11 +786,12 @@ .editor-logos { gap: 16px; } - } @media (prefers-reduced-motion: reduce) { - #hero-canvas { - display: none; + .fade-in { + opacity: 1; + transform: none; + animation: none; } } diff --git a/site/download.html b/site/download.html index 1bd1f92..c1f95cb 100644 --- a/site/download.html +++ b/site/download.html @@ -10,10 +10,12 @@ - + + + + - - + @@ -24,173 +26,68 @@ - - - -
- -