diff --git a/website/app/globals.css b/website/app/globals.css index 12f8e7a..3727e4c 100644 --- a/website/app/globals.css +++ b/website/app/globals.css @@ -59,7 +59,7 @@ button, a { -webkit-tap-highlight-color: transparent; } box-shadow: 0 20px 80px rgba(0, 0, 0, .24); } .brand { display: flex; align-items: center; gap: 11px; font-size: 14px; white-space: nowrap; letter-spacing: -.01em; } -.brand img { width: 34px; height: 34px; border-radius: 50%; background: rgba(255,255,255,.95); } +.brand .cairo-logo { width: 34px; height: 34px; border-radius: 50%; background: rgba(255,255,255,.95); } .brand b { font-weight: 780; } .topbar nav { margin-left: auto; display: flex; align-items: center; gap: 25px; color: #b2b8ce; font-size: 12px; } .topbar nav a { transition: color .2s; } @@ -98,7 +98,7 @@ button, a { -webkit-tap-highlight-color: transparent; } @keyframes orbit { to { transform: rotate(360deg); } } .hero-shield { position: relative; width: 270px; height: 320px; display: grid; place-items: center; border: 1px solid rgba(141, 126, 255, .58); border-radius: 44% 44% 54% 54% / 28% 28% 68% 68%; background: linear-gradient(160deg, rgba(95,75,255,.2), rgba(20,35,77,.24)); box-shadow: inset 0 0 50px rgba(93,77,255,.12), 0 35px 100px rgba(20,24,78,.46); } .hero-shield::before { content: ""; position: absolute; inset: 15px; border: 1px solid rgba(39, 215, 255, .2); border-radius: inherit; } -.hero-shield img { width: 150px; height: 150px; border-radius: 50%; background: white; box-shadow: 0 0 55px rgba(69, 117, 255, .38); } +.hero-shield .cairo-logo { width: 150px; height: 150px; border-radius: 50%; background: white; box-shadow: 0 0 55px rgba(69, 117, 255, .38); } .signal { position: absolute; min-width: 148px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 9px; background: rgba(10, 12, 27, .88); backdrop-filter: blur(12px); box-shadow: 0 15px 48px rgba(0,0,0,.28); } .signal span, .signal b { display: block; } .signal span { color: #747e9e; font: 700 9px ui-monospace, monospace; letter-spacing: .14em; } @@ -194,7 +194,7 @@ button, a { -webkit-tap-highlight-color: transparent; } .edge-origin { padding: 12px 18px; border: 1px solid var(--line); border-radius: 8px; color: #a4abc2; font: 700 10px ui-monospace, monospace; } .edge-origin::after { content: "↓"; display: block; margin: 17px auto -30px; text-align: center; color: var(--violet); } .edge-core { width: 250px; min-height: 150px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px solid rgba(93,124,255,.46); border-radius: 18px; background: rgba(70,69,170,.1); box-shadow: 0 0 60px rgba(65,78,255,.1); } -.edge-core img { width: 54px; height: 54px; border-radius: 50%; background: white; } +.edge-core .cairo-logo { width: 54px; height: 54px; border-radius: 50%; background: white; } .edge-core b { margin-top: 12px; font-size: 12px; } .edge-core span { margin-top: 5px; color: #79839f; font-size: 9px; } .edge-targets { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; width: 100%; } @@ -213,7 +213,7 @@ button, a { -webkit-tap-highlight-color: transparent; } .runtime-agent b, .runtime-kernel b { display: block; margin-top: 10px; font-size: 18px; } .runtime-agent small, .runtime-kernel small { display: block; margin-top: 7px; color: #848da8; font-size: 10px; } .runtime-kernel { border-color: rgba(113,96,255,.48); background: rgba(85,69,195,.08); } -.runtime-kernel img { width: 48px; height: 48px; margin-bottom: 14px; border-radius: 50%; background: white; } +.runtime-kernel .cairo-logo { width: 48px; height: 48px; margin-bottom: 14px; border-radius: 50%; background: white; } .runtime-arrow { color: var(--violet); } .runtime-targets { width: 100%; display: grid; grid-template-columns: repeat(9, 1fr); gap: 7px; } .runtime-targets span { padding: 14px 7px; border: 1px solid var(--line); border-radius: 7px; text-align: center; color: #8892ad; font: 700 8px ui-monospace, monospace; } @@ -283,7 +283,7 @@ button, a { -webkit-tap-highlight-color: transparent; } .repo-tree::before { content: "OPEN SOURCE / APACHE-2.0"; display: block; padding: 14px 20px; border-bottom: 1px solid var(--line); color: #6f7895; font: 700 9px ui-monospace, monospace; } .finale { padding-block: 150px; text-align: center; } .finale-logo { width: 82px; height: 82px; margin: 0 auto 30px; display: grid; place-items: center; border-radius: 50%; background: white; box-shadow: 0 0 70px rgba(91,83,255,.32); } -.finale-logo img { width: 72px; height: 72px; } +.finale-logo .cairo-logo { width: 72px; height: 72px; } .finale h2 { max-width: 850px; margin: 20px auto 0; } .finale p { color: var(--muted); } .finale .hero-actions { justify-content: center; } diff --git a/website/app/site-client.tsx b/website/app/site-client.tsx index fa590b1..3183758 100644 --- a/website/app/site-client.tsx +++ b/website/app/site-client.tsx @@ -1,9 +1,48 @@ "use client"; -/* eslint-disable @next/next/no-img-element -- official Cairo SVG is served directly */ - import type { FormEvent, ReactNode } from "react"; -import { useState } from "react"; +import { useId, useState } from "react"; + +function CairoLogo({ title }: { title?: string }) { + const gradientId = `cairo-logo-${useId().replaceAll(":", "")}`; + + return ( + + + + + + + + + + + + + ); +} const decisions = [ "ALLOW", @@ -242,7 +281,7 @@ export function AgentGuardSite() {
- + Cairo Agent Guard