diff --git a/design-system/server-temp.go b/design-system/server-temp.go new file mode 100644 index 0000000..8f4bfbd --- /dev/null +++ b/design-system/server-temp.go @@ -0,0 +1,51 @@ +package main + +import ( + "context" + "log" + "net/http" + "time" +) + +func main() { + fs := http.FileServer(http.Dir(".")) + + // Wrap to add no-cache headers + handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") + w.Header().Set("Pragma", "no-cache") + w.Header().Set("Expires", "0") + fs.ServeHTTP(w, r) + }) + + // Auto-shutdown after 60 minutes + ctx, cancel := context.WithTimeout(context.Background(), 60*time.Minute) + defer cancel() + + server := &http.Server{ + Addr: "0.0.0.0:8888", + Handler: handler, + } + + log.Println("Serving on http://192.168.1.16:8888") + log.Println("Auto-shutdown in 60 minutes") + + // Run server in goroutine + go func() { + if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { + log.Fatalf("Server error: %v", err) + } + }() + + // Wait for shutdown signal + <-ctx.Done() + log.Println("Shutting down...") + + shutdownCtx, shutdownCancel := context.WithTimeout(context.Background(), 5*time.Second) + defer shutdownCancel() + + if err := server.Shutdown(shutdownCtx); err != nil { + log.Printf("Shutdown error: %v", err) + } + log.Println("Server stopped") +} \ No newline at end of file diff --git a/design-system/styleguide.html b/design-system/styleguide.html index 5b210e8..566c997 100644 --- a/design-system/styleguide.html +++ b/design-system/styleguide.html @@ -43,6 +43,11 @@ /* Typography */ --font-family: "Figtree", system-ui, sans-serif; + /* Wordmark — FINAL: Figtree 700, 0.25em */ + --wordmark-font: "Figtree", system-ui, sans-serif; + --wordmark-weight: 700; + --wordmark-spacing: 0.25em; + /* Spacing */ --space-1: 4px; --space-2: 8px; @@ -87,13 +92,20 @@ .text-secondary { color: var(--text-secondary); } .text-tertiary { color: var(--text-tertiary); } - .wordmark { font-size: 18px; font-weight: 600; letter-spacing: 0.5em; text-transform: uppercase; } - .wordmark-lg { font-size: 32px; font-weight: 600; letter-spacing: 0.5em; text-transform: uppercase; } + .wordmark { font-size: 18px; font-weight: var(--wordmark-weight); letter-spacing: var(--wordmark-spacing); text-transform: uppercase; } + .wordmark-lg { font-size: 32px; font-weight: var(--wordmark-weight); letter-spacing: var(--wordmark-spacing); text-transform: uppercase; color: var(--brand-accent); } /* Brand Block */ .brand-block { display: flex; align-items: center; gap: 16px; margin: 32px 0; } .black-square { width: 64px; height: 64px; background: var(--brand-black); } + /* Logo Lockup — The Trinity */ + .logo-lockup { display: flex; gap: 20px; align-items: center; } + .logo-lockup-square { width: 72px; height: 72px; background: var(--brand-black); flex-shrink: 0; } + .logo-lockup-text { display: flex; flex-direction: column; gap: 4px; } + .logo-lockup-wordmark { font-family: var(--font-family); font-size: 28px; font-weight: var(--wordmark-weight); letter-spacing: var(--wordmark-spacing); text-transform: uppercase; color: var(--brand-accent); line-height: 1; } + .logo-lockup-tagline { font-size: 14px; color: var(--text-secondary); letter-spacing: 0.02em; } + /* Colors */ .color-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 16px; } .color-swatch { border-radius: 8px; overflow: hidden; border: 1px solid var(--border-default); } @@ -126,6 +138,9 @@ .stat-number { font-size: 72px; font-weight: 700; color: var(--brand-accent); line-height: 1; margin-bottom: 8px; } .stat-label { font-size: 14px; color: var(--text-secondary); } + /* Section Title */ + .section-title { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-tertiary); margin-bottom: 24px; padding-bottom: 12px; border-bottom: 1px solid var(--border-default); } + /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; @@ -193,10 +208,6 @@ /* Code */ .code-block { background: var(--bg-inverse); color: var(--text-inverse); font-family: "JetBrains Mono", monospace; font-size: 14px; line-height: 1.6; padding: 16px; border-radius: 12px; overflow-x: auto; } - code { font-family: "JetBrains Mono", monospace; font-size: 0.9em; background: var(--bg-secondary); padding: 2px 6px; border-radius: 4px; color: var(--brand-accent); } - - /* Section Title */ - .section-title { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-tertiary); margin-bottom: 24px; padding-bottom: 12px; border-bottom: 1px solid var(--border-default); } @@ -207,17 +218,32 @@
-

Clavitor

+

Clavitor

Design System v0.1 — Violet + Figtree + JetBrains Mono

-

CLAVITOR

+

CLAVITOR

A black box vault for AI infrastructure. Tokens, components, layouts. Based on vault1984.com patterns.

+ +
+
Logo Lockup (Black Square + Wordmark + Tagline)
+
+
+
+
CLAVITOR
+
Black-box credential issuance for AI infrastructure
+
+
+

+ Spec: 72px black square, Figtree 700, 0.25em spacing, aligned left edge to left edge +

+
+
Brand Colors
@@ -339,4 +365,4 @@
- \ No newline at end of file + diff --git a/design-system/wordmark-test.html b/design-system/wordmark-test.html new file mode 100644 index 0000000..55fa416 --- /dev/null +++ b/design-system/wordmark-test.html @@ -0,0 +1,142 @@ + + + + + + CLAVITOR Wordmark — Interactive Tester + + + + + + +

CLAVITOR Wordmark Tester

+

Pick a font. See all weight + spacing combinations.

+ +
+
+ + +
+ +
+ + +
+ +
+ + + 72px +
+
+ +
+ + + +