chore: add images
This commit is contained in:
parent
9067b69eac
commit
f8cd8db487
100
.gitignore
vendored
Normal file
100
.gitignore
vendored
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
wrks
|
||||||
|
OLD
|
||||||
|
# Generated by Cargo
|
||||||
|
# will have compiled files and executables
|
||||||
|
debug/
|
||||||
|
target/
|
||||||
|
# Encryption keys and related files (CRITICAL - NEVER COMMIT)
|
||||||
|
.k
|
||||||
|
.k.backup
|
||||||
|
*.k
|
||||||
|
*.key.backup
|
||||||
|
|
||||||
|
config.*.toml
|
||||||
|
config.*back
|
||||||
|
|
||||||
|
# where book is written
|
||||||
|
_book
|
||||||
|
|
||||||
|
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
||||||
|
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
||||||
|
Cargo.lock
|
||||||
|
|
||||||
|
# These are backup files generated by rustfmt
|
||||||
|
**/*.rs.bk
|
||||||
|
|
||||||
|
# MSVC Windows builds of rustc generate these, which store debugging information
|
||||||
|
*.pdb
|
||||||
|
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
**/output.css
|
||||||
|
**/input.css
|
||||||
|
|
||||||
|
# Environment files
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.production
|
||||||
|
.env.development
|
||||||
|
.env.staging
|
||||||
|
|
||||||
|
# Keep example files
|
||||||
|
!.env.example
|
||||||
|
|
||||||
|
# Configuration files (may contain sensitive data)
|
||||||
|
config.prod.toml
|
||||||
|
config.production.toml
|
||||||
|
config.local.toml
|
||||||
|
config.*.local.toml
|
||||||
|
|
||||||
|
# Keep example configuration files
|
||||||
|
!config.toml
|
||||||
|
!config.dev.toml
|
||||||
|
!config.example.toml
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
logs/
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# TLS certificates and keys
|
||||||
|
certs/
|
||||||
|
*.pem
|
||||||
|
*.crt
|
||||||
|
*.key
|
||||||
|
*.p12
|
||||||
|
*.pfx
|
||||||
|
|
||||||
|
# Database files
|
||||||
|
*.db
|
||||||
|
*.sqlite
|
||||||
|
*.sqlite3
|
||||||
|
|
||||||
|
# Backup files
|
||||||
|
*.bak
|
||||||
|
*.backup
|
||||||
|
*.tmp
|
||||||
|
*~
|
||||||
|
|
||||||
|
# Encryption and security related files
|
||||||
|
*.encrypted
|
||||||
|
*.enc
|
||||||
|
secrets/
|
||||||
|
private/
|
||||||
|
security/
|
||||||
|
|
||||||
|
# Configuration backups that may contain secrets
|
||||||
|
config.*.backup
|
||||||
|
config.backup.*
|
||||||
|
|
||||||
|
# OS generated files
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
._*
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
ehthumbs.db
|
||||||
|
Thumbs.db
|
||||||
|
# Documentation build output
|
||||||
|
book-output/
|
||||||
|
# Generated setup report
|
||||||
|
SETUP_COMPLETE.md
|
||||||
146
imgs/provctl_logo_bn.svg
Normal file
146
imgs/provctl_logo_bn.svg
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 210 160">
|
||||||
|
<defs>
|
||||||
|
<!-- Grayscale gradient for orbital system -->
|
||||||
|
<linearGradient id="flowGradient">
|
||||||
|
<stop offset="0%" style="stop-color:#404040;stop-opacity:1"/>
|
||||||
|
<stop offset="25%" style="stop-color:#606060;stop-opacity:1"/>
|
||||||
|
<stop offset="50%" style="stop-color:#808080;stop-opacity:1"/>
|
||||||
|
<stop offset="75%" style="stop-color:#707070;stop-opacity:1"/>
|
||||||
|
<stop offset="100%" style="stop-color:#505050;stop-opacity:1"/>
|
||||||
|
</linearGradient>
|
||||||
|
|
||||||
|
<!-- Radial gradient for nodes -->
|
||||||
|
<radialGradient id="nodeGradient" cx="30%" cy="30%">
|
||||||
|
<stop offset="0%" style="stop-color:#707070;stop-opacity:1"/>
|
||||||
|
<stop offset="100%" style="stop-color:#505050;stop-opacity:1"/>
|
||||||
|
</radialGradient>
|
||||||
|
|
||||||
|
<!-- Glow filters -->
|
||||||
|
<filter id="glow">
|
||||||
|
<feGaussianBlur stdDeviation="3" result="coloredBlur"/>
|
||||||
|
<feMerge>
|
||||||
|
<feMergeNode in="coloredBlur"/>
|
||||||
|
<feMergeNode in="SourceGraphic"/>
|
||||||
|
</feMerge>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter id="strongGlow">
|
||||||
|
<feGaussianBlur stdDeviation="5" result="coloredBlur"/>
|
||||||
|
<feMerge>
|
||||||
|
<feMergeNode in="coloredBlur"/>
|
||||||
|
<feMergeNode in="SourceGraphic"/>
|
||||||
|
</feMerge>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<!-- Grayscale text gradient -->
|
||||||
|
<linearGradient id="textGradient" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||||
|
<stop offset="0%" style="stop-color:#404040;stop-opacity:1"/>
|
||||||
|
<stop offset="50%" style="stop-color:#606060;stop-opacity:1"/>
|
||||||
|
<stop offset="100%" style="stop-color:#707070;stop-opacity:1"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<g id="logo-main">
|
||||||
|
<!-- ORBITAL ICON SYSTEM (Left side) -->
|
||||||
|
<g id="orbital-system" transform="translate(105, 45) scale(0.405)">
|
||||||
|
|
||||||
|
<!-- Outer orbital rings -->
|
||||||
|
<ellipse cx="0" cy="0" rx="180" ry="90" fill="none" stroke="#707070" stroke-width="2" opacity="0.4"/>
|
||||||
|
<ellipse cx="0" cy="0" rx="150" ry="75" fill="none" stroke="#707070" stroke-width="2" opacity="0.4"/>
|
||||||
|
|
||||||
|
<!-- INFINITY LOOP - Continuous CI/CD flow -->
|
||||||
|
<g id="infinity-flow">
|
||||||
|
<path d="M -110,0 C -110,-45 -65,-60 -30,-35 C 5,-10 5,10 -30,35 C -65,60 -110,45 -110,0 M 110,0 C 110,45 65,60 30,35 C -5,10 -5,-10 30,-35 C 65,-60 110,-45 110,0" fill="none" stroke="url(#flowGradient)" stroke-width="8" stroke-linecap="round" opacity="0.7" filter="url(#glow)"/>
|
||||||
|
<path d="M -110,0 C -110,-45 -65,-60 -30,-35 C 5,-10 5,10 -30,35 C -65,60 -110,45 -110,0 M 110,0 C 110,45 65,60 30,35 C -5,10 -5,-10 30,-35 C 65,-60 110,-45 110,0" fill="none" stroke="#707070" stroke-width="3" stroke-linecap="round" opacity="0.7"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Data particles flowing along infinity path -->
|
||||||
|
<g id="flow-particles">
|
||||||
|
<circle cx="-30" cy="0" r="4" fill="#808080" filter="url(#strongGlow)" opacity="0.7"/>
|
||||||
|
<circle cx="30" cy="0" r="4" fill="#707070" filter="url(#strongGlow)" opacity="0.7"/>
|
||||||
|
<circle cx="0" cy="35" r="4" fill="#606060" filter="url(#strongGlow)" opacity="0.7"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- CENTRAL CONTROL NODE (local) -->
|
||||||
|
<g id="central-node">
|
||||||
|
<circle cx="0" cy="0" r="25" fill="#404040" opacity="0.2"/>
|
||||||
|
<circle cx="0" cy="0" r="20" fill="#404040" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="15" fill="none" stroke="#707070" stroke-width="1.5" opacity="0.5"/>
|
||||||
|
<circle cx="0" cy="0" r="10" fill="none" stroke="#707070" stroke-width="2" opacity="0.7"/>
|
||||||
|
<circle cx="0" cy="0" r="6" fill="#707070" filter="url(#strongGlow)" opacity="0.8"/>
|
||||||
|
<circle cx="-3" cy="-3" r="3" fill="#fff" opacity="0.9"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- LARGE ORBITAL REMOTE NODES -->
|
||||||
|
<g id="remote-nodes">
|
||||||
|
<!-- Node 1 - Top -->
|
||||||
|
<g transform="translate(0, -70)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#606060" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#707070" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#808080" text-anchor="middle">>_</text>
|
||||||
|
<line x1="0" y1="18" x2="0" y2="48" stroke="#707070" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 2 - Right -->
|
||||||
|
<g transform="translate(140, 0)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#606060" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#707070" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#808080" text-anchor="middle">>_</text>
|
||||||
|
<line x1="-18" y1="0" x2="-118" y2="0" stroke="#707070" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 3 - Bottom Right -->
|
||||||
|
<g transform="translate(100, 50)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#606060" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#707070" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#808080" text-anchor="middle">>_</text>
|
||||||
|
<line x1="-10" y1="-10" x2="-80" y2="-40" stroke="#707070" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 4 - Bottom Left -->
|
||||||
|
<g transform="translate(-100, 50)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#606060" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#707070" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#808080" text-anchor="middle">>_</text>
|
||||||
|
<line x1="10" y1="-10" x2="80" y2="-40" stroke="#707070" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 5 - Left -->
|
||||||
|
<g transform="translate(-140, 0)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#606060" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#707070" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#808080" text-anchor="middle">>_</text>
|
||||||
|
<line x1="18" y1="0" x2="118" y2="0" stroke="#707070" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- TEXT SECTION (Below icon) -->
|
||||||
|
<g id="text-group" transform="translate(-120, 75) scale(0.7)">
|
||||||
|
|
||||||
|
<!-- Main text paths -->
|
||||||
|
<g id="text-paths" opacity="0.9">
|
||||||
|
<path fill="url(#textGradient)" d="M215.69,30.31c3.05-2.3,6.06-3.46,9.04-3.46s5.44,1.19,7.38,3.56,2.92,5.82,2.92,10.33c0,7.2-1.97,13.32-5.9,18.36-3.94,5.04-8.67,7.56-14.18,7.56-1.97,0-3.96-.38-5.98-1.15,4.7-1.1,8.45-4.15,11.23-9.14,2.78-4.99,4.18-9.96,4.18-14.9,0-2.3-.42-4.18-1.26-5.62-.84-1.44-2.03-2.16-3.56-2.16-2.93,0-5.52,1.78-7.78,5.33-2.26,3.55-3.98,8.41-5.18,14.58-1.2,6.17-1.8,12.6-1.8,19.3s.48,12.52,1.44,17.46c-3.94-.14-6.85-.78-8.75-1.91-1.9-1.13-2.84-3.28-2.84-6.44,0-1.15.73-7.24,2.2-18.25,1.46-11.02,2.2-19.5,2.2-25.45s-.36-10.97-1.08-15.05c3.84.96,6.49,2.74,7.96,5.33,1.46,2.59,2.2,6.38,2.2,11.38,2.02-4.13,4.55-7.34,7.6-9.65Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M262.42,29.48c2.42-2.95,4.68-4.43,6.77-4.43s3.66.78,4.72,2.34c1.06,1.56,1.58,3.58,1.58,6.05s-.73,4.74-2.2,6.8c-1.46,2.06-3.47,3.1-6.01,3.1-.67,0-1.46-.19-2.38-.58,1.49-1.87,2.23-4.13,2.23-6.77,0-1.54-.62-2.3-1.87-2.3-.91,0-1.9.64-2.95,1.91-1.06,1.27-2.06,3.02-3.02,5.26-.96,2.23-1.76,5.09-2.41,8.57-.65,3.48-.97,7.19-.97,11.12,0,.48.12,2.52.36,6.12-1.54.1-2.52.14-2.95.14-2.74,0-4.71-.48-5.9-1.44-1.2-.96-1.8-2.54-1.8-4.75,0-.96.5-4.66,1.51-11.09,1.01-6.43,1.51-11.56,1.51-15.37s-.41-7.33-1.22-10.55c3.5,1.1,5.95,2.68,7.34,4.72,1.39,2.04,2.09,4.42,2.09,7.13s-.22,5.32-.65,7.81c1.73-6.24,3.8-10.84,6.23-13.79Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M306.3,25.34c2.88,0,5.33,1.42,7.34,4.25,2.02,2.83,3.02,6.62,3.02,11.38,0,5.33-1.08,10.22-3.24,14.69-2.4,5.04-5.81,8.52-10.22,10.44-2.5,1.1-5.23,1.66-8.21,1.66-4.18,0-7.81-1.62-10.91-4.86-3.1-3.24-4.64-7.89-4.64-13.97s1.49-11.42,4.46-16.06c2.98-4.63,6.91-7.55,11.81-8.75.53,0,1.02.16,1.48.47.46.31.68.64.68.97-4.85,3.36-7.75,8.04-8.71,14.04,1.01-2.69,2.24-5.01,3.71-6.98,1.46-1.97,2.99-3.46,4.57-4.46,3.02-1.87,5.98-2.81,8.86-2.81ZM301.84,30.6c-3.12,0-5.9,2.1-8.35,6.3-2.45,4.2-3.67,8.39-3.67,12.56,0,8.74,2.26,13.1,6.77,13.1,3.22,0,5.83-2.1,7.85-6.3,2.02-4.2,3.02-8.92,3.02-14.15,0-7.68-1.87-11.52-5.62-11.52Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M341.36,66.67c-1.54.67-3.14,1.01-4.82,1.01s-2.62-.36-2.81-1.08c-.77-3.07-1.66-7.67-2.66-13.79s-2.03-11.47-3.06-16.06c-1.03-4.58-2.27-8.05-3.71-10.4,2.64-1.25,4.75-1.87,6.34-1.87s2.78.36,3.6,1.08c.82.72,1.5,2.15,2.05,4.28.55,2.14.95,3.9,1.19,5.29.67,4.61,1.01,7.18,1.01,7.7s.19,2.68.58,6.44c.38,3.77.67,6.25.86,7.45,8.54-16.56,12.82-27.62,12.82-33.19,3.94,2.02,5.9,4.2,5.9,6.55,0,1.92-1,4.76-2.99,8.53-1.99,3.77-4.49,8.33-7.49,13.68-3,5.35-5.27,10.14-6.8,14.36Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M375.2,50.4c0,8.02,2.35,12.02,7.06,12.02,1.82,0,3.67-.62,5.54-1.87,1.87-1.25,3.5-2.98,4.9-5.18,1.73.38,2.59,1.27,2.59,2.66-2.02,3.5-4.49,6-7.42,7.49s-5.86,2.23-8.78,2.23c-3.94,0-7.29-1.45-10.04-4.36-2.76-2.9-4.14-7.12-4.14-12.64,0-7.06,1.94-13.09,5.83-18.11s9.14-7.52,15.77-7.52c3.7,0,6.48.9,8.35,2.7s2.81,3.94,2.81,6.41-.76,4.62-2.27,6.44c-1.51,1.83-3.44,2.74-5.8,2.74-1.15,0-2.3-.24-3.46-.72.72-.82,1.39-2.1,2.02-3.85.62-1.75.94-3.37.94-4.86,0-2.93-1.27-4.39-3.82-4.39-2.98,0-5.4,2.18-7.27,6.55-1.87,4.37-2.81,9.12-2.81,14.26Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M420.85,41.83c-.77,4.27-1.37,8.06-1.8,11.38-.43,3.31-.65,6.7-.65,10.15s.33,5.93,1.01,7.42c-3.7-.96-6.24-2.44-7.63-4.43-1.39-1.99-2.09-4.81-2.09-8.46,0-3.21.5-7.62,1.51-13.21,1.01-5.59,1.66-9.37,1.94-11.34-2.5.43-5.16,1.27-7.99,2.52-.1-1.05-.14-1.85-.14-2.38,0-2.54.77-4.28,2.3-5.22,1.54-.94,3.74-1.43,6.62-1.48.33-3.6.5-6.19.5-7.78s-.01-2.9-.04-3.96c-.03-1.06-.04-1.85-.04-2.38,3.17.34,5.47,1.29,6.91,2.84,1.44,1.56,2.16,3.78,2.16,6.66,0,1.15-.12,2.76-.36,4.82,4.03-.1,6.98-.89,8.86-2.38.09.96.14,1.68.14,2.16,0,2.3-.41,3.9-1.22,4.79-.82.89-2.19,1.33-4.1,1.33s-3.38-.02-4.39-.07c-.24,1.73-.75,4.73-1.51,9Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M437.27,62.1c-.14-.89-.22-2.27-.22-4.14s.8-9.24,2.41-22.1c1.61-12.86,2.41-21.7,2.41-26.5s-.29-7.92-.86-9.36c3.6.96,6.06,2.41,7.38,4.36,1.32,1.94,1.98,4.69,1.98,8.24,0,2.11-.7,8.98-2.09,20.59-1.39,11.62-2.09,20.98-2.09,28.08,0,1.54.1,3.7.29,6.48-4.37-.19-7.08-1.15-8.14-2.88-.58-.96-.94-1.88-1.08-2.77Z"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Static underline -->
|
||||||
|
<g id="underline">
|
||||||
|
<path d="M172.5,86.67h300" stroke="url(#textGradient)" stroke-width="3" fill="none" stroke-linecap="round" opacity="0.7"/>
|
||||||
|
<path d="M172.5,86.67h300" stroke="#606060" stroke-width="4" fill="none" stroke-linecap="round" opacity="0.2"/>
|
||||||
|
<path d="M172.5,86.67h300" stroke="url(#textGradient)" stroke-width="6" fill="none" stroke-linecap="round" opacity="0.3"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 12 KiB |
246
imgs/provctl_logo_h.svg
Normal file
246
imgs/provctl_logo_h.svg
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 380 100">
|
||||||
|
<defs>
|
||||||
|
<!-- Continuous flow gradient for orbital system -->
|
||||||
|
<linearGradient id="flowGradient">
|
||||||
|
<stop offset="0%" style="stop-color:#455aa5;stop-opacity:1">
|
||||||
|
<animate attributeName="offset" values="0%;1%;0%" dur="4s" repeatCount="indefinite"/>
|
||||||
|
</stop>
|
||||||
|
<stop offset="25%" style="stop-color:#4cc2f1;stop-opacity:1">
|
||||||
|
<animate attributeName="offset" values="0.25;1.25;0.25" dur="4s" repeatCount="indefinite"/>
|
||||||
|
</stop>
|
||||||
|
<stop offset="50%" style="stop-color:#f2b03f;stop-opacity:1">
|
||||||
|
<animate attributeName="offset" values="0.5;1.5;0.5" dur="4s" repeatCount="indefinite"/>
|
||||||
|
</stop>
|
||||||
|
<stop offset="75%" style="stop-color:#05ab9e;stop-opacity:1">
|
||||||
|
<animate attributeName="offset" values="0.75;1.75;0.75" dur="4s" repeatCount="indefinite"/>
|
||||||
|
</stop>
|
||||||
|
<stop offset="100%" style="stop-color:#5e74b7;stop-opacity:1">
|
||||||
|
<animate attributeName="offset" values="1;2;1" dur="4s" repeatCount="indefinite"/>
|
||||||
|
</stop>
|
||||||
|
</linearGradient>
|
||||||
|
|
||||||
|
<!-- Radial gradient for nodes -->
|
||||||
|
<radialGradient id="nodeGradient" cx="30%" cy="30%">
|
||||||
|
<stop offset="0%" style="stop-color:#7085c9;stop-opacity:1"/>
|
||||||
|
<stop offset="100%" style="stop-color:#5e74b7;stop-opacity:1"/>
|
||||||
|
</radialGradient>
|
||||||
|
|
||||||
|
<!-- Glow filters -->
|
||||||
|
<filter id="glow">
|
||||||
|
<feGaussianBlur stdDeviation="3" result="coloredBlur"/>
|
||||||
|
<feMerge>
|
||||||
|
<feMergeNode in="coloredBlur"/>
|
||||||
|
<feMergeNode in="SourceGraphic"/>
|
||||||
|
</feMerge>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter id="strongGlow">
|
||||||
|
<feGaussianBlur stdDeviation="5" result="coloredBlur"/>
|
||||||
|
<feMerge>
|
||||||
|
<feMergeNode in="coloredBlur"/>
|
||||||
|
<feMergeNode in="SourceGraphic"/>
|
||||||
|
</feMerge>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<!-- Text gradient with animation -->
|
||||||
|
<linearGradient id="textGradient" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||||
|
<stop offset="0%" style="stop-color:#455aa5;stop-opacity:1">
|
||||||
|
<animate attributeName="stop-color" values="#455aa5;#4cc2f1;#455aa5" dur="4s" repeatCount="indefinite"/>
|
||||||
|
</stop>
|
||||||
|
<stop offset="50%" style="stop-color:#4cc2f1;stop-opacity:1">
|
||||||
|
<animate attributeName="stop-color" values="#4cc2f1;#05ab9e;#4cc2f1" dur="4s" repeatCount="indefinite"/>
|
||||||
|
</stop>
|
||||||
|
<stop offset="100%" style="stop-color:#05ab9e;stop-opacity:1">
|
||||||
|
<animate attributeName="stop-color" values="#05ab9e;#455aa5;#05ab9e" dur="4s" repeatCount="indefinite"/>
|
||||||
|
</stop>
|
||||||
|
</linearGradient>
|
||||||
|
|
||||||
|
<!-- Particle gradient for floating elements -->
|
||||||
|
<linearGradient id="particleGradient" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||||
|
<stop offset="0%" style="stop-color:#4cc2f1;stop-opacity:0.8">
|
||||||
|
<animate attributeName="stop-color" values="#4cc2f1;#f2b03f;#05ab9e;#4cc2f1" dur="3s" repeatCount="indefinite"/>
|
||||||
|
</stop>
|
||||||
|
<stop offset="100%" style="stop-color:#05ab9e;stop-opacity:0.8">
|
||||||
|
<animate attributeName="stop-color" values="#05ab9e;#4cc2f1;#f2b03f;#05ab9e" dur="3s" repeatCount="indefinite"/>
|
||||||
|
</stop>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<g id="logo-main">
|
||||||
|
<!-- LEFT SIDE: ORBITAL ICON -->
|
||||||
|
<g id="orbital-system" transform="translate(90, 55) scale(0.42)">
|
||||||
|
|
||||||
|
<!-- Outer orbital rings -->
|
||||||
|
<ellipse cx="0" cy="0" rx="180" ry="90" fill="none" stroke="#8895b3" stroke-width="2" opacity="0.4">
|
||||||
|
<animate attributeName="opacity" values="0.35;0.5;0.35" dur="3s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</ellipse>
|
||||||
|
|
||||||
|
<ellipse cx="0" cy="0" rx="150" ry="75" fill="none" stroke="#8895b3" stroke-width="2" opacity="0.4">
|
||||||
|
<animate attributeName="opacity" values="0.35;0.5;0.35" dur="2.5s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</ellipse>
|
||||||
|
|
||||||
|
<!-- INFINITY LOOP - Continuous CI/CD flow -->
|
||||||
|
<g id="infinity-flow">
|
||||||
|
<path d="M -110,0 C -110,-45 -65,-60 -30,-35 C 5,-10 5,10 -30,35 C -65,60 -110,45 -110,0 M 110,0 C 110,45 65,60 30,35 C -5,10 -5,-10 30,-35 C 65,-60 110,-45 110,0" fill="none" stroke="url(#flowGradient)" stroke-width="8" stroke-linecap="round" opacity="0.7" filter="url(#glow)">
|
||||||
|
<animate attributeName="opacity" values="0.6;0.9;0.6" dur="2s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</path>
|
||||||
|
|
||||||
|
<path d="M -110,0 C -110,-45 -65,-60 -30,-35 C 5,-10 5,10 -30,35 C -65,60 -110,45 -110,0 M 110,0 C 110,45 65,60 30,35 C -5,10 -5,-10 30,-35 C 65,-60 110,-45 110,0" fill="none" stroke="#8895b3" stroke-width="3" stroke-linecap="round" opacity="0.7"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Data particles flowing along infinity path -->
|
||||||
|
<g id="flow-particles">
|
||||||
|
<circle r="4" fill="#f2b03f" filter="url(#strongGlow)">
|
||||||
|
<animateMotion dur="6s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1">
|
||||||
|
<mpath href="#infinity-path"/>
|
||||||
|
</animateMotion>
|
||||||
|
<animate attributeName="opacity" values="0.4;1;0.4" dur="6s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</circle>
|
||||||
|
|
||||||
|
<circle r="4" fill="#05ab9e" filter="url(#strongGlow)">
|
||||||
|
<animateMotion dur="6s" begin="2s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1">
|
||||||
|
<mpath href="#infinity-path"/>
|
||||||
|
</animateMotion>
|
||||||
|
<animate attributeName="opacity" values="0.4;1;0.4" dur="6s" begin="2s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</circle>
|
||||||
|
|
||||||
|
<circle r="4" fill="#4cc2f1" filter="url(#strongGlow)">
|
||||||
|
<animateMotion dur="6s" begin="4s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1">
|
||||||
|
<mpath href="#infinity-path"/>
|
||||||
|
</animateMotion>
|
||||||
|
<animate attributeName="opacity" values="0.4;1;0.4" dur="6s" begin="4s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</circle>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Hidden path for particle animation -->
|
||||||
|
<path id="infinity-path" d="M -110,0 C -110,-45 -65,-60 -30,-35 C 5,-10 5,10 -30,35 C -65,60 -110,45 -110,0 Z M 30,-35 C 65,-60 110,-45 110,0 C 110,45 65,60 30,35 C -5,10 -5,-10 30,-35 Z" fill="none" stroke="none"/>
|
||||||
|
|
||||||
|
<!-- CENTRAL CONTROL NODE (local) -->
|
||||||
|
<g id="central-node">
|
||||||
|
<circle cx="0" cy="0" r="25" fill="#455aa5" opacity="0.2">
|
||||||
|
<animate attributeName="r" values="22;28;22" dur="2.5s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
<animate attributeName="opacity" values="0.15;0.35;0.15" dur="2.5s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</circle>
|
||||||
|
|
||||||
|
<circle cx="0" cy="0" r="20" fill="#455aa5" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
|
||||||
|
<circle cx="0" cy="0" r="15" fill="none" stroke="#05ab9e" stroke-width="1.5" opacity="0.5"/>
|
||||||
|
<circle cx="0" cy="0" r="10" fill="none" stroke="#05ab9e" stroke-width="2" opacity="0.7"/>
|
||||||
|
|
||||||
|
<circle cx="0" cy="0" r="6" fill="#05ab9e" filter="url(#strongGlow)">
|
||||||
|
<animate attributeName="r" values="5;8;5" dur="2s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
<animate attributeName="opacity" values="0.7;1;0.7" dur="2s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</circle>
|
||||||
|
|
||||||
|
<circle cx="-3" cy="-3" r="3" fill="#fff" opacity="0.9"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- LARGE ORBITAL REMOTE NODES -->
|
||||||
|
<g id="remote-nodes">
|
||||||
|
<!-- Node 1 - Top -->
|
||||||
|
<g transform="translate(0, -70)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15">
|
||||||
|
<animate attributeName="r" values="20;24;20" dur="2.2s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
<animate attributeName="opacity" values="0.1;0.25;0.1" dur="2.2s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</circle>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="0" y1="18" x2="0" y2="48" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75">
|
||||||
|
<animate attributeName="stroke-dashoffset" values="0;8;0" dur="1.5s" repeatCount="indefinite"/>
|
||||||
|
</line>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 2 - Right -->
|
||||||
|
<g transform="translate(140, 0)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15">
|
||||||
|
<animate attributeName="r" values="20;24;20" dur="2.4s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
<animate attributeName="opacity" values="0.1;0.25;0.1" dur="2.4s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</circle>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="-18" y1="0" x2="-118" y2="0" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75">
|
||||||
|
<animate attributeName="stroke-dashoffset" values="0;8;0" dur="1.7s" repeatCount="indefinite"/>
|
||||||
|
</line>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 3 - Bottom Right -->
|
||||||
|
<g transform="translate(100, 50)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15">
|
||||||
|
<animate attributeName="r" values="20;24;20" dur="2.1s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
<animate attributeName="opacity" values="0.1;0.25;0.1" dur="2.1s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</circle>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="-10" y1="-10" x2="-80" y2="-40" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75">
|
||||||
|
<animate attributeName="stroke-dashoffset" values="0;8;0" dur="1.9s" repeatCount="indefinite"/>
|
||||||
|
</line>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 4 - Bottom Left -->
|
||||||
|
<g transform="translate(-100, 50)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15">
|
||||||
|
<animate attributeName="r" values="20;24;20" dur="2.3s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
<animate attributeName="opacity" values="0.1;0.25;0.1" dur="2.3s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</circle>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="10" y1="-10" x2="80" y2="-40" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75">
|
||||||
|
<animate attributeName="stroke-dashoffset" values="0;8;0" dur="2s" repeatCount="indefinite"/>
|
||||||
|
</line>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 5 - Left -->
|
||||||
|
<g transform="translate(-140, 0)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15">
|
||||||
|
<animate attributeName="r" values="20;24;20" dur="2.5s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
<animate attributeName="opacity" values="0.1;0.25;0.1" dur="2.5s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</circle>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="18" y1="0" x2="118" y2="0" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75">
|
||||||
|
<animate attributeName="stroke-dashoffset" values="0;8;0" dur="1.8s" repeatCount="indefinite"/>
|
||||||
|
</line>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- RIGHT SIDE: TEXT -->
|
||||||
|
<g id="text-group" transform="translate(50, 20) scale(0.7)">
|
||||||
|
|
||||||
|
<!-- Main text paths with animation -->
|
||||||
|
<g id="text-paths">
|
||||||
|
<path fill="url(#textGradient)" d="M215.69,30.31c3.05-2.3,6.06-3.46,9.04-3.46s5.44,1.19,7.38,3.56,2.92,5.82,2.92,10.33c0,7.2-1.97,13.32-5.9,18.36-3.94,5.04-8.67,7.56-14.18,7.56-1.97,0-3.96-.38-5.98-1.15,4.7-1.1,8.45-4.15,11.23-9.14,2.78-4.99,4.18-9.96,4.18-14.9,0-2.3-.42-4.18-1.26-5.62-.84-1.44-2.03-2.16-3.56-2.16-2.93,0-5.52,1.78-7.78,5.33-2.26,3.55-3.98,8.41-5.18,14.58-1.2,6.17-1.8,12.6-1.8,19.3s.48,12.52,1.44,17.46c-3.94-.14-6.85-.78-8.75-1.91-1.9-1.13-2.84-3.28-2.84-6.44,0-1.15.73-7.24,2.2-18.25,1.46-11.02,2.2-19.5,2.2-25.45s-.36-10.97-1.08-15.05c3.84.96,6.49,2.74,7.96,5.33,1.46,2.59,2.2,6.38,2.2,11.38,2.02-4.13,4.55-7.34,7.6-9.65Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M262.42,29.48c2.42-2.95,4.68-4.43,6.77-4.43s3.66.78,4.72,2.34c1.06,1.56,1.58,3.58,1.58,6.05s-.73,4.74-2.2,6.8c-1.46,2.06-3.47,3.1-6.01,3.1-.67,0-1.46-.19-2.38-.58,1.49-1.87,2.23-4.13,2.23-6.77,0-1.54-.62-2.3-1.87-2.3-.91,0-1.9.64-2.95,1.91-1.06,1.27-2.06,3.02-3.02,5.26-.96,2.23-1.76,5.09-2.41,8.57-.65,3.48-.97,7.19-.97,11.12,0,.48.12,2.52.36,6.12-1.54.1-2.52.14-2.95.14-2.74,0-4.71-.48-5.9-1.44-1.2-.96-1.8-2.54-1.8-4.75,0-.96.5-4.66,1.51-11.09,1.01-6.43,1.51-11.56,1.51-15.37s-.41-7.33-1.22-10.55c3.5,1.1,5.95,2.68,7.34,4.72,1.39,2.04,2.09,4.42,2.09,7.13s-.22,5.32-.65,7.81c1.73-6.24,3.8-10.84,6.23-13.79Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M306.3,25.34c2.88,0,5.33,1.42,7.34,4.25,2.02,2.83,3.02,6.62,3.02,11.38,0,5.33-1.08,10.22-3.24,14.69-2.4,5.04-5.81,8.52-10.22,10.44-2.5,1.1-5.23,1.66-8.21,1.66-4.18,0-7.81-1.62-10.91-4.86-3.1-3.24-4.64-7.89-4.64-13.97s1.49-11.42,4.46-16.06c2.98-4.63,6.91-7.55,11.81-8.75.53,0,1.02.16,1.48.47.46.31.68.64.68.97-4.85,3.36-7.75,8.04-8.71,14.04,1.01-2.69,2.24-5.01,3.71-6.98,1.46-1.97,2.99-3.46,4.57-4.46,3.02-1.87,5.98-2.81,8.86-2.81ZM301.84,30.6c-3.12,0-5.9,2.1-8.35,6.3-2.45,4.2-3.67,8.39-3.67,12.56,0,8.74,2.26,13.1,6.77,13.1,3.22,0,5.83-2.1,7.85-6.3,2.02-4.2,3.02-8.92,3.02-14.15,0-7.68-1.87-11.52-5.62-11.52Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M341.36,66.67c-1.54.67-3.14,1.01-4.82,1.01s-2.62-.36-2.81-1.08c-.77-3.07-1.66-7.67-2.66-13.79s-2.03-11.47-3.06-16.06c-1.03-4.58-2.27-8.05-3.71-10.4,2.64-1.25,4.75-1.87,6.34-1.87s2.78.36,3.6,1.08c.82.72,1.5,2.15,2.05,4.28.55,2.14.95,3.9,1.19,5.29.67,4.61,1.01,7.18,1.01,7.7s.19,2.68.58,6.44c.38,3.77.67,6.25.86,7.45,8.54-16.56,12.82-27.62,12.82-33.19,3.94,2.02,5.9,4.2,5.9,6.55,0,1.92-1,4.76-2.99,8.53-1.99,3.77-4.49,8.33-7.49,13.68-3,5.35-5.27,10.14-6.8,14.36Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M375.2,50.4c0,8.02,2.35,12.02,7.06,12.02,1.82,0,3.67-.62,5.54-1.87,1.87-1.25,3.5-2.98,4.9-5.18,1.73.38,2.59,1.27,2.59,2.66-2.02,3.5-4.49,6-7.42,7.49s-5.86,2.23-8.78,2.23c-3.94,0-7.29-1.45-10.04-4.36-2.76-2.9-4.14-7.12-4.14-12.64,0-7.06,1.94-13.09,5.83-18.11s9.14-7.52,15.77-7.52c3.7,0,6.48.9,8.35,2.7s2.81,3.94,2.81,6.41-.76,4.62-2.27,6.44c-1.51,1.83-3.44,2.74-5.8,2.74-1.15,0-2.3-.24-3.46-.72.72-.82,1.39-2.1,2.02-3.85.62-1.75.94-3.37.94-4.86,0-2.93-1.27-4.39-3.82-4.39-2.98,0-5.4,2.18-7.27,6.55-1.87,4.37-2.81,9.12-2.81,14.26Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M420.85,41.83c-.77,4.27-1.37,8.06-1.8,11.38-.43,3.31-.65,6.7-.65,10.15s.33,5.93,1.01,7.42c-3.7-.96-6.24-2.44-7.63-4.43-1.39-1.99-2.09-4.81-2.09-8.46,0-3.21.5-7.62,1.51-13.21,1.01-5.59,1.66-9.37,1.94-11.34-2.5.43-5.16,1.27-7.99,2.52-.1-1.05-.14-1.85-.14-2.38,0-2.54.77-4.28,2.3-5.22,1.54-.94,3.74-1.43,6.62-1.48.33-3.6.5-6.19.5-7.78s-.01-2.9-.04-3.96c-.03-1.06-.04-1.85-.04-2.38,3.17.34,5.47,1.29,6.91,2.84,1.44,1.56,2.16,3.78,2.16,6.66,0,1.15-.12,2.76-.36,4.82,4.03-.1,6.98-.89,8.86-2.38.09.96.14,1.68.14,2.16,0,2.3-.41,3.9-1.22,4.79-.82.89-2.19,1.33-4.1,1.33s-3.38-.02-4.39-.07c-.24,1.73-.75,4.73-1.51,9Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M437.27,62.1c-.14-.89-.22-2.27-.22-4.14s.8-9.24,2.41-22.1c1.61-12.86,2.41-21.7,2.41-26.5s-.29-7.92-.86-9.36c3.6.96,6.06,2.41,7.38,4.36,1.32,1.94,1.98,4.69,1.98,8.24,0,2.11-.7,8.98-2.09,20.59-1.39,11.62-2.09,20.98-2.09,28.08,0,1.54.1,3.7.29,6.48-4.37-.19-7.08-1.15-8.14-2.88-.58-.96-.94-1.88-1.08-2.77Z"/>
|
||||||
|
<!-- Text glow animation -->
|
||||||
|
<animate attributeName="opacity" values="0.8;1;0.8" dur="2.5s" repeatCount="indefinite" calcMode="spline" keySplines="0.42 0 0.58 1; 0.42 0 0.58 1"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Animated underline -->
|
||||||
|
<g id="underline">
|
||||||
|
<path d="M172.5,86.67h300" stroke="url(#textGradient)" stroke-width="3" fill="none" stroke-linecap="round" opacity="0.7">
|
||||||
|
<animate attributeName="stroke-dasharray" values="0,300;300,0" dur="4s" repeatCount="indefinite"/>
|
||||||
|
<animate attributeName="opacity" values="0;0.7;0.7" dur="4s" repeatCount="indefinite"/>
|
||||||
|
</path>
|
||||||
|
<path d="M172.5,86.67h300" stroke="#4cc2f1" stroke-width="4" fill="none" stroke-linecap="round" opacity="0.2">
|
||||||
|
<animate attributeName="stroke-dasharray" values="0,300;300,0" dur="4s" begin="0.2s" repeatCount="indefinite"/>
|
||||||
|
<animate attributeName="opacity" values="0;0.2;0.2" dur="4s" begin="0.2s" repeatCount="indefinite"/>
|
||||||
|
</path>
|
||||||
|
<path d="M172.5,86.67h300" stroke="url(#textGradient)" stroke-width="6" fill="none" stroke-linecap="round" opacity="0.3">
|
||||||
|
<animate attributeName="stroke-dasharray" values="0,300;300,0" dur="4s" begin="0.1s" repeatCount="indefinite"/>
|
||||||
|
<animate attributeName="opacity" values="0;0.3;0.3" dur="4s" begin="0.1s" repeatCount="indefinite"/>
|
||||||
|
</path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 19 KiB |
146
imgs/provctl_logo_h_s.svg
Normal file
146
imgs/provctl_logo_h_s.svg
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 380 100">
|
||||||
|
<defs>
|
||||||
|
<!-- Static gradient for orbital system -->
|
||||||
|
<linearGradient id="flowGradient">
|
||||||
|
<stop offset="0%" style="stop-color:#455aa5;stop-opacity:1"/>
|
||||||
|
<stop offset="25%" style="stop-color:#4cc2f1;stop-opacity:1"/>
|
||||||
|
<stop offset="50%" style="stop-color:#f2b03f;stop-opacity:1"/>
|
||||||
|
<stop offset="75%" style="stop-color:#05ab9e;stop-opacity:1"/>
|
||||||
|
<stop offset="100%" style="stop-color:#5e74b7;stop-opacity:1"/>
|
||||||
|
</linearGradient>
|
||||||
|
|
||||||
|
<!-- Radial gradient for nodes -->
|
||||||
|
<radialGradient id="nodeGradient" cx="30%" cy="30%">
|
||||||
|
<stop offset="0%" style="stop-color:#7085c9;stop-opacity:1"/>
|
||||||
|
<stop offset="100%" style="stop-color:#5e74b7;stop-opacity:1"/>
|
||||||
|
</radialGradient>
|
||||||
|
|
||||||
|
<!-- Glow filters -->
|
||||||
|
<filter id="glow">
|
||||||
|
<feGaussianBlur stdDeviation="3" result="coloredBlur"/>
|
||||||
|
<feMerge>
|
||||||
|
<feMergeNode in="coloredBlur"/>
|
||||||
|
<feMergeNode in="SourceGraphic"/>
|
||||||
|
</feMerge>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter id="strongGlow">
|
||||||
|
<feGaussianBlur stdDeviation="5" result="coloredBlur"/>
|
||||||
|
<feMerge>
|
||||||
|
<feMergeNode in="coloredBlur"/>
|
||||||
|
<feMergeNode in="SourceGraphic"/>
|
||||||
|
</feMerge>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<!-- Static text gradient -->
|
||||||
|
<linearGradient id="textGradient" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||||
|
<stop offset="0%" style="stop-color:#455aa5;stop-opacity:1"/>
|
||||||
|
<stop offset="50%" style="stop-color:#4cc2f1;stop-opacity:1"/>
|
||||||
|
<stop offset="100%" style="stop-color:#05ab9e;stop-opacity:1"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<g id="logo-main">
|
||||||
|
<!-- LEFT SIDE: ORBITAL ICON -->
|
||||||
|
<g id="orbital-system" transform="translate(90, 55) scale(0.42)">
|
||||||
|
|
||||||
|
<!-- Outer orbital rings -->
|
||||||
|
<ellipse cx="0" cy="0" rx="180" ry="90" fill="none" stroke="#8895b3" stroke-width="2" opacity="0.4"/>
|
||||||
|
<ellipse cx="0" cy="0" rx="150" ry="75" fill="none" stroke="#8895b3" stroke-width="2" opacity="0.4"/>
|
||||||
|
|
||||||
|
<!-- INFINITY LOOP - Continuous CI/CD flow -->
|
||||||
|
<g id="infinity-flow">
|
||||||
|
<path d="M -110,0 C -110,-45 -65,-60 -30,-35 C 5,-10 5,10 -30,35 C -65,60 -110,45 -110,0 M 110,0 C 110,45 65,60 30,35 C -5,10 -5,-10 30,-35 C 65,-60 110,-45 110,0" fill="none" stroke="url(#flowGradient)" stroke-width="8" stroke-linecap="round" opacity="0.7" filter="url(#glow)"/>
|
||||||
|
<path d="M -110,0 C -110,-45 -65,-60 -30,-35 C 5,-10 5,10 -30,35 C -65,60 -110,45 -110,0 M 110,0 C 110,45 65,60 30,35 C -5,10 -5,-10 30,-35 C 65,-60 110,-45 110,0" fill="none" stroke="#8895b3" stroke-width="3" stroke-linecap="round" opacity="0.7"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Data particles flowing along infinity path -->
|
||||||
|
<g id="flow-particles">
|
||||||
|
<circle cx="-30" cy="0" r="4" fill="#f2b03f" filter="url(#strongGlow)" opacity="0.7"/>
|
||||||
|
<circle cx="30" cy="0" r="4" fill="#05ab9e" filter="url(#strongGlow)" opacity="0.7"/>
|
||||||
|
<circle cx="0" cy="35" r="4" fill="#4cc2f1" filter="url(#strongGlow)" opacity="0.7"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- CENTRAL CONTROL NODE (local) -->
|
||||||
|
<g id="central-node">
|
||||||
|
<circle cx="0" cy="0" r="25" fill="#455aa5" opacity="0.2"/>
|
||||||
|
<circle cx="0" cy="0" r="20" fill="#455aa5" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="15" fill="none" stroke="#05ab9e" stroke-width="1.5" opacity="0.5"/>
|
||||||
|
<circle cx="0" cy="0" r="10" fill="none" stroke="#05ab9e" stroke-width="2" opacity="0.7"/>
|
||||||
|
<circle cx="0" cy="0" r="6" fill="#05ab9e" filter="url(#strongGlow)" opacity="0.8"/>
|
||||||
|
<circle cx="-3" cy="-3" r="3" fill="#fff" opacity="0.9"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- LARGE ORBITAL REMOTE NODES -->
|
||||||
|
<g id="remote-nodes">
|
||||||
|
<!-- Node 1 - Top -->
|
||||||
|
<g transform="translate(0, -70)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="0" y1="18" x2="0" y2="48" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 2 - Right -->
|
||||||
|
<g transform="translate(140, 0)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="-18" y1="0" x2="-118" y2="0" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 3 - Bottom Right -->
|
||||||
|
<g transform="translate(100, 50)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="-10" y1="-10" x2="-80" y2="-40" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 4 - Bottom Left -->
|
||||||
|
<g transform="translate(-100, 50)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="10" y1="-10" x2="80" y2="-40" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 5 - Left -->
|
||||||
|
<g transform="translate(-140, 0)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="18" y1="0" x2="118" y2="0" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- RIGHT SIDE: TEXT -->
|
||||||
|
<g id="text-group" transform="translate(50, 20) scale(0.7)">
|
||||||
|
|
||||||
|
<!-- Main text paths -->
|
||||||
|
<g id="text-paths" opacity="0.9">
|
||||||
|
<path fill="url(#textGradient)" d="M215.69,30.31c3.05-2.3,6.06-3.46,9.04-3.46s5.44,1.19,7.38,3.56,2.92,5.82,2.92,10.33c0,7.2-1.97,13.32-5.9,18.36-3.94,5.04-8.67,7.56-14.18,7.56-1.97,0-3.96-.38-5.98-1.15,4.7-1.1,8.45-4.15,11.23-9.14,2.78-4.99,4.18-9.96,4.18-14.9,0-2.3-.42-4.18-1.26-5.62-.84-1.44-2.03-2.16-3.56-2.16-2.93,0-5.52,1.78-7.78,5.33-2.26,3.55-3.98,8.41-5.18,14.58-1.2,6.17-1.8,12.6-1.8,19.3s.48,12.52,1.44,17.46c-3.94-.14-6.85-.78-8.75-1.91-1.9-1.13-2.84-3.28-2.84-6.44,0-1.15.73-7.24,2.2-18.25,1.46-11.02,2.2-19.5,2.2-25.45s-.36-10.97-1.08-15.05c3.84.96,6.49,2.74,7.96,5.33,1.46,2.59,2.2,6.38,2.2,11.38,2.02-4.13,4.55-7.34,7.6-9.65Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M262.42,29.48c2.42-2.95,4.68-4.43,6.77-4.43s3.66.78,4.72,2.34c1.06,1.56,1.58,3.58,1.58,6.05s-.73,4.74-2.2,6.8c-1.46,2.06-3.47,3.1-6.01,3.1-.67,0-1.46-.19-2.38-.58,1.49-1.87,2.23-4.13,2.23-6.77,0-1.54-.62-2.3-1.87-2.3-.91,0-1.9.64-2.95,1.91-1.06,1.27-2.06,3.02-3.02,5.26-.96,2.23-1.76,5.09-2.41,8.57-.65,3.48-.97,7.19-.97,11.12,0,.48.12,2.52.36,6.12-1.54.1-2.52.14-2.95.14-2.74,0-4.71-.48-5.9-1.44-1.2-.96-1.8-2.54-1.8-4.75,0-.96.5-4.66,1.51-11.09,1.01-6.43,1.51-11.56,1.51-15.37s-.41-7.33-1.22-10.55c3.5,1.1,5.95,2.68,7.34,4.72,1.39,2.04,2.09,4.42,2.09,7.13s-.22,5.32-.65,7.81c1.73-6.24,3.8-10.84,6.23-13.79Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M306.3,25.34c2.88,0,5.33,1.42,7.34,4.25,2.02,2.83,3.02,6.62,3.02,11.38,0,5.33-1.08,10.22-3.24,14.69-2.4,5.04-5.81,8.52-10.22,10.44-2.5,1.1-5.23,1.66-8.21,1.66-4.18,0-7.81-1.62-10.91-4.86-3.1-3.24-4.64-7.89-4.64-13.97s1.49-11.42,4.46-16.06c2.98-4.63,6.91-7.55,11.81-8.75.53,0,1.02.16,1.48.47.46.31.68.64.68.97-4.85,3.36-7.75,8.04-8.71,14.04,1.01-2.69,2.24-5.01,3.71-6.98,1.46-1.97,2.99-3.46,4.57-4.46,3.02-1.87,5.98-2.81,8.86-2.81ZM301.84,30.6c-3.12,0-5.9,2.1-8.35,6.3-2.45,4.2-3.67,8.39-3.67,12.56,0,8.74,2.26,13.1,6.77,13.1,3.22,0,5.83-2.1,7.85-6.3,2.02-4.2,3.02-8.92,3.02-14.15,0-7.68-1.87-11.52-5.62-11.52Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M341.36,66.67c-1.54.67-3.14,1.01-4.82,1.01s-2.62-.36-2.81-1.08c-.77-3.07-1.66-7.67-2.66-13.79s-2.03-11.47-3.06-16.06c-1.03-4.58-2.27-8.05-3.71-10.4,2.64-1.25,4.75-1.87,6.34-1.87s2.78.36,3.6,1.08c.82.72,1.5,2.15,2.05,4.28.55,2.14.95,3.9,1.19,5.29.67,4.61,1.01,7.18,1.01,7.7s.19,2.68.58,6.44c.38,3.77.67,6.25.86,7.45,8.54-16.56,12.82-27.62,12.82-33.19,3.94,2.02,5.9,4.2,5.9,6.55,0,1.92-1,4.76-2.99,8.53-1.99,3.77-4.49,8.33-7.49,13.68-3,5.35-5.27,10.14-6.8,14.36Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M375.2,50.4c0,8.02,2.35,12.02,7.06,12.02,1.82,0,3.67-.62,5.54-1.87,1.87-1.25,3.5-2.98,4.9-5.18,1.73.38,2.59,1.27,2.59,2.66-2.02,3.5-4.49,6-7.42,7.49s-5.86,2.23-8.78,2.23c-3.94,0-7.29-1.45-10.04-4.36-2.76-2.9-4.14-7.12-4.14-12.64,0-7.06,1.94-13.09,5.83-18.11s9.14-7.52,15.77-7.52c3.7,0,6.48.9,8.35,2.7s2.81,3.94,2.81,6.41-.76,4.62-2.27,6.44c-1.51,1.83-3.44,2.74-5.8,2.74-1.15,0-2.3-.24-3.46-.72.72-.82,1.39-2.1,2.02-3.85.62-1.75.94-3.37.94-4.86,0-2.93-1.27-4.39-3.82-4.39-2.98,0-5.4,2.18-7.27,6.55-1.87,4.37-2.81,9.12-2.81,14.26Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M420.85,41.83c-.77,4.27-1.37,8.06-1.8,11.38-.43,3.31-.65,6.7-.65,10.15s.33,5.93,1.01,7.42c-3.7-.96-6.24-2.44-7.63-4.43-1.39-1.99-2.09-4.81-2.09-8.46,0-3.21.5-7.62,1.51-13.21,1.01-5.59,1.66-9.37,1.94-11.34-2.5.43-5.16,1.27-7.99,2.52-.1-1.05-.14-1.85-.14-2.38,0-2.54.77-4.28,2.3-5.22,1.54-.94,3.74-1.43,6.62-1.48.33-3.6.5-6.19.5-7.78s-.01-2.9-.04-3.96c-.03-1.06-.04-1.85-.04-2.38,3.17.34,5.47,1.29,6.91,2.84,1.44,1.56,2.16,3.78,2.16,6.66,0,1.15-.12,2.76-.36,4.82,4.03-.1,6.98-.89,8.86-2.38.09.96.14,1.68.14,2.16,0,2.3-.41,3.9-1.22,4.79-.82.89-2.19,1.33-4.1,1.33s-3.38-.02-4.39-.07c-.24,1.73-.75,4.73-1.51,9Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M437.27,62.1c-.14-.89-.22-2.27-.22-4.14s.8-9.24,2.41-22.1c1.61-12.86,2.41-21.7,2.41-26.5s-.29-7.92-.86-9.36c3.6.96,6.06,2.41,7.38,4.36,1.32,1.94,1.98,4.69,1.98,8.24,0,2.11-.7,8.98-2.09,20.59-1.39,11.62-2.09,20.98-2.09,28.08,0,1.54.1,3.7.29,6.48-4.37-.19-7.08-1.15-8.14-2.88-.58-.96-.94-1.88-1.08-2.77Z"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Static underline -->
|
||||||
|
<g id="underline">
|
||||||
|
<path d="M172.5,86.67h300" stroke="url(#textGradient)" stroke-width="3" fill="none" stroke-linecap="round" opacity="0.7"/>
|
||||||
|
<path d="M172.5,86.67h300" stroke="#4cc2f1" stroke-width="4" fill="none" stroke-linecap="round" opacity="0.2"/>
|
||||||
|
<path d="M172.5,86.67h300" stroke="url(#textGradient)" stroke-width="6" fill="none" stroke-linecap="round" opacity="0.3"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 12 KiB |
146
imgs/provctl_logo_s.svg
Normal file
146
imgs/provctl_logo_s.svg
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 210 160">
|
||||||
|
<defs>
|
||||||
|
<!-- Static gradient for orbital system -->
|
||||||
|
<linearGradient id="flowGradient">
|
||||||
|
<stop offset="0%" style="stop-color:#455aa5;stop-opacity:1"/>
|
||||||
|
<stop offset="25%" style="stop-color:#4cc2f1;stop-opacity:1"/>
|
||||||
|
<stop offset="50%" style="stop-color:#f2b03f;stop-opacity:1"/>
|
||||||
|
<stop offset="75%" style="stop-color:#05ab9e;stop-opacity:1"/>
|
||||||
|
<stop offset="100%" style="stop-color:#5e74b7;stop-opacity:1"/>
|
||||||
|
</linearGradient>
|
||||||
|
|
||||||
|
<!-- Radial gradient for nodes -->
|
||||||
|
<radialGradient id="nodeGradient" cx="30%" cy="30%">
|
||||||
|
<stop offset="0%" style="stop-color:#7085c9;stop-opacity:1"/>
|
||||||
|
<stop offset="100%" style="stop-color:#5e74b7;stop-opacity:1"/>
|
||||||
|
</radialGradient>
|
||||||
|
|
||||||
|
<!-- Glow filters -->
|
||||||
|
<filter id="glow">
|
||||||
|
<feGaussianBlur stdDeviation="3" result="coloredBlur"/>
|
||||||
|
<feMerge>
|
||||||
|
<feMergeNode in="coloredBlur"/>
|
||||||
|
<feMergeNode in="SourceGraphic"/>
|
||||||
|
</feMerge>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter id="strongGlow">
|
||||||
|
<feGaussianBlur stdDeviation="5" result="coloredBlur"/>
|
||||||
|
<feMerge>
|
||||||
|
<feMergeNode in="coloredBlur"/>
|
||||||
|
<feMergeNode in="SourceGraphic"/>
|
||||||
|
</feMerge>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<!-- Static text gradient -->
|
||||||
|
<linearGradient id="textGradient" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||||
|
<stop offset="0%" style="stop-color:#455aa5;stop-opacity:1"/>
|
||||||
|
<stop offset="50%" style="stop-color:#4cc2f1;stop-opacity:1"/>
|
||||||
|
<stop offset="100%" style="stop-color:#05ab9e;stop-opacity:1"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<g id="logo-main">
|
||||||
|
<!-- ORBITAL ICON SYSTEM (Left side) -->
|
||||||
|
<g id="orbital-system" transform="translate(105, 45) scale(0.405)">
|
||||||
|
|
||||||
|
<!-- Outer orbital rings -->
|
||||||
|
<ellipse cx="0" cy="0" rx="180" ry="90" fill="none" stroke="#8895b3" stroke-width="2" opacity="0.4"/>
|
||||||
|
<ellipse cx="0" cy="0" rx="150" ry="75" fill="none" stroke="#8895b3" stroke-width="2" opacity="0.4"/>
|
||||||
|
|
||||||
|
<!-- INFINITY LOOP - Continuous CI/CD flow -->
|
||||||
|
<g id="infinity-flow">
|
||||||
|
<path d="M -110,0 C -110,-45 -65,-60 -30,-35 C 5,-10 5,10 -30,35 C -65,60 -110,45 -110,0 M 110,0 C 110,45 65,60 30,35 C -5,10 -5,-10 30,-35 C 65,-60 110,-45 110,0" fill="none" stroke="url(#flowGradient)" stroke-width="8" stroke-linecap="round" opacity="0.7" filter="url(#glow)"/>
|
||||||
|
<path d="M -110,0 C -110,-45 -65,-60 -30,-35 C 5,-10 5,10 -30,35 C -65,60 -110,45 -110,0 M 110,0 C 110,45 65,60 30,35 C -5,10 -5,-10 30,-35 C 65,-60 110,-45 110,0" fill="none" stroke="#8895b3" stroke-width="3" stroke-linecap="round" opacity="0.7"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Data particles flowing along infinity path -->
|
||||||
|
<g id="flow-particles">
|
||||||
|
<circle cx="-30" cy="0" r="4" fill="#f2b03f" filter="url(#strongGlow)" opacity="0.7"/>
|
||||||
|
<circle cx="30" cy="0" r="4" fill="#05ab9e" filter="url(#strongGlow)" opacity="0.7"/>
|
||||||
|
<circle cx="0" cy="35" r="4" fill="#4cc2f1" filter="url(#strongGlow)" opacity="0.7"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- CENTRAL CONTROL NODE (local) -->
|
||||||
|
<g id="central-node">
|
||||||
|
<circle cx="0" cy="0" r="25" fill="#455aa5" opacity="0.2"/>
|
||||||
|
<circle cx="0" cy="0" r="20" fill="#455aa5" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="15" fill="none" stroke="#05ab9e" stroke-width="1.5" opacity="0.5"/>
|
||||||
|
<circle cx="0" cy="0" r="10" fill="none" stroke="#05ab9e" stroke-width="2" opacity="0.7"/>
|
||||||
|
<circle cx="0" cy="0" r="6" fill="#05ab9e" filter="url(#strongGlow)" opacity="0.8"/>
|
||||||
|
<circle cx="-3" cy="-3" r="3" fill="#fff" opacity="0.9"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- LARGE ORBITAL REMOTE NODES -->
|
||||||
|
<g id="remote-nodes">
|
||||||
|
<!-- Node 1 - Top -->
|
||||||
|
<g transform="translate(0, -70)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="0" y1="18" x2="0" y2="48" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 2 - Right -->
|
||||||
|
<g transform="translate(140, 0)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="-18" y1="0" x2="-118" y2="0" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 3 - Bottom Right -->
|
||||||
|
<g transform="translate(100, 50)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="-10" y1="-10" x2="-80" y2="-40" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 4 - Bottom Left -->
|
||||||
|
<g transform="translate(-100, 50)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="10" y1="-10" x2="80" y2="-40" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Node 5 - Left -->
|
||||||
|
<g transform="translate(-140, 0)">
|
||||||
|
<circle cx="0" cy="0" r="22" fill="#4cc2f1" opacity="0.15"/>
|
||||||
|
<circle cx="0" cy="0" r="18" fill="url(#nodeGradient)" stroke="#fff" stroke-width="2.5" filter="url(#glow)"/>
|
||||||
|
<circle cx="0" cy="0" r="13" fill="none" stroke="#8895b3" stroke-width="1.5" opacity="0.7"/>
|
||||||
|
<text x="0" y="6" font-family="'Courier New', 'Consolas', monospace" font-size="16" font-weight="bold" fill="#f2b03f" text-anchor="middle">>_</text>
|
||||||
|
<line x1="18" y1="0" x2="118" y2="0" stroke="#8895b3" stroke-width="2.5" stroke-dasharray="4,4" opacity="0.75"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- TEXT SECTION (Below icon) -->
|
||||||
|
<g id="text-group" transform="translate(-120, 75) scale(0.7)">
|
||||||
|
|
||||||
|
<!-- Main text paths -->
|
||||||
|
<g id="text-paths" opacity="0.9">
|
||||||
|
<path fill="url(#textGradient)" d="M215.69,30.31c3.05-2.3,6.06-3.46,9.04-3.46s5.44,1.19,7.38,3.56,2.92,5.82,2.92,10.33c0,7.2-1.97,13.32-5.9,18.36-3.94,5.04-8.67,7.56-14.18,7.56-1.97,0-3.96-.38-5.98-1.15,4.7-1.1,8.45-4.15,11.23-9.14,2.78-4.99,4.18-9.96,4.18-14.9,0-2.3-.42-4.18-1.26-5.62-.84-1.44-2.03-2.16-3.56-2.16-2.93,0-5.52,1.78-7.78,5.33-2.26,3.55-3.98,8.41-5.18,14.58-1.2,6.17-1.8,12.6-1.8,19.3s.48,12.52,1.44,17.46c-3.94-.14-6.85-.78-8.75-1.91-1.9-1.13-2.84-3.28-2.84-6.44,0-1.15.73-7.24,2.2-18.25,1.46-11.02,2.2-19.5,2.2-25.45s-.36-10.97-1.08-15.05c3.84.96,6.49,2.74,7.96,5.33,1.46,2.59,2.2,6.38,2.2,11.38,2.02-4.13,4.55-7.34,7.6-9.65Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M262.42,29.48c2.42-2.95,4.68-4.43,6.77-4.43s3.66.78,4.72,2.34c1.06,1.56,1.58,3.58,1.58,6.05s-.73,4.74-2.2,6.8c-1.46,2.06-3.47,3.1-6.01,3.1-.67,0-1.46-.19-2.38-.58,1.49-1.87,2.23-4.13,2.23-6.77,0-1.54-.62-2.3-1.87-2.3-.91,0-1.9.64-2.95,1.91-1.06,1.27-2.06,3.02-3.02,5.26-.96,2.23-1.76,5.09-2.41,8.57-.65,3.48-.97,7.19-.97,11.12,0,.48.12,2.52.36,6.12-1.54.1-2.52.14-2.95.14-2.74,0-4.71-.48-5.9-1.44-1.2-.96-1.8-2.54-1.8-4.75,0-.96.5-4.66,1.51-11.09,1.01-6.43,1.51-11.56,1.51-15.37s-.41-7.33-1.22-10.55c3.5,1.1,5.95,2.68,7.34,4.72,1.39,2.04,2.09,4.42,2.09,7.13s-.22,5.32-.65,7.81c1.73-6.24,3.8-10.84,6.23-13.79Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M306.3,25.34c2.88,0,5.33,1.42,7.34,4.25,2.02,2.83,3.02,6.62,3.02,11.38,0,5.33-1.08,10.22-3.24,14.69-2.4,5.04-5.81,8.52-10.22,10.44-2.5,1.1-5.23,1.66-8.21,1.66-4.18,0-7.81-1.62-10.91-4.86-3.1-3.24-4.64-7.89-4.64-13.97s1.49-11.42,4.46-16.06c2.98-4.63,6.91-7.55,11.81-8.75.53,0,1.02.16,1.48.47.46.31.68.64.68.97-4.85,3.36-7.75,8.04-8.71,14.04,1.01-2.69,2.24-5.01,3.71-6.98,1.46-1.97,2.99-3.46,4.57-4.46,3.02-1.87,5.98-2.81,8.86-2.81ZM301.84,30.6c-3.12,0-5.9,2.1-8.35,6.3-2.45,4.2-3.67,8.39-3.67,12.56,0,8.74,2.26,13.1,6.77,13.1,3.22,0,5.83-2.1,7.85-6.3,2.02-4.2,3.02-8.92,3.02-14.15,0-7.68-1.87-11.52-5.62-11.52Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M341.36,66.67c-1.54.67-3.14,1.01-4.82,1.01s-2.62-.36-2.81-1.08c-.77-3.07-1.66-7.67-2.66-13.79s-2.03-11.47-3.06-16.06c-1.03-4.58-2.27-8.05-3.71-10.4,2.64-1.25,4.75-1.87,6.34-1.87s2.78.36,3.6,1.08c.82.72,1.5,2.15,2.05,4.28.55,2.14.95,3.9,1.19,5.29.67,4.61,1.01,7.18,1.01,7.7s.19,2.68.58,6.44c.38,3.77.67,6.25.86,7.45,8.54-16.56,12.82-27.62,12.82-33.19,3.94,2.02,5.9,4.2,5.9,6.55,0,1.92-1,4.76-2.99,8.53-1.99,3.77-4.49,8.33-7.49,13.68-3,5.35-5.27,10.14-6.8,14.36Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M375.2,50.4c0,8.02,2.35,12.02,7.06,12.02,1.82,0,3.67-.62,5.54-1.87,1.87-1.25,3.5-2.98,4.9-5.18,1.73.38,2.59,1.27,2.59,2.66-2.02,3.5-4.49,6-7.42,7.49s-5.86,2.23-8.78,2.23c-3.94,0-7.29-1.45-10.04-4.36-2.76-2.9-4.14-7.12-4.14-12.64,0-7.06,1.94-13.09,5.83-18.11s9.14-7.52,15.77-7.52c3.7,0,6.48.9,8.35,2.7s2.81,3.94,2.81,6.41-.76,4.62-2.27,6.44c-1.51,1.83-3.44,2.74-5.8,2.74-1.15,0-2.3-.24-3.46-.72.72-.82,1.39-2.1,2.02-3.85.62-1.75.94-3.37.94-4.86,0-2.93-1.27-4.39-3.82-4.39-2.98,0-5.4,2.18-7.27,6.55-1.87,4.37-2.81,9.12-2.81,14.26Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M420.85,41.83c-.77,4.27-1.37,8.06-1.8,11.38-.43,3.31-.65,6.7-.65,10.15s.33,5.93,1.01,7.42c-3.7-.96-6.24-2.44-7.63-4.43-1.39-1.99-2.09-4.81-2.09-8.46,0-3.21.5-7.62,1.51-13.21,1.01-5.59,1.66-9.37,1.94-11.34-2.5.43-5.16,1.27-7.99,2.52-.1-1.05-.14-1.85-.14-2.38,0-2.54.77-4.28,2.3-5.22,1.54-.94,3.74-1.43,6.62-1.48.33-3.6.5-6.19.5-7.78s-.01-2.9-.04-3.96c-.03-1.06-.04-1.85-.04-2.38,3.17.34,5.47,1.29,6.91,2.84,1.44,1.56,2.16,3.78,2.16,6.66,0,1.15-.12,2.76-.36,4.82,4.03-.1,6.98-.89,8.86-2.38.09.96.14,1.68.14,2.16,0,2.3-.41,3.9-1.22,4.79-.82.89-2.19,1.33-4.1,1.33s-3.38-.02-4.39-.07c-.24,1.73-.75,4.73-1.51,9Z"/>
|
||||||
|
<path fill="url(#textGradient)" d="M437.27,62.1c-.14-.89-.22-2.27-.22-4.14s.8-9.24,2.41-22.1c1.61-12.86,2.41-21.7,2.41-26.5s-.29-7.92-.86-9.36c3.6.96,6.06,2.41,7.38,4.36,1.32,1.94,1.98,4.69,1.98,8.24,0,2.11-.7,8.98-2.09,20.59-1.39,11.62-2.09,20.98-2.09,28.08,0,1.54.1,3.7.29,6.48-4.37-.19-7.08-1.15-8.14-2.88-.58-.96-.94-1.88-1.08-2.77Z"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Static underline -->
|
||||||
|
<g id="underline">
|
||||||
|
<path d="M172.5,86.67h300" stroke="url(#textGradient)" stroke-width="3" fill="none" stroke-linecap="round" opacity="0.7"/>
|
||||||
|
<path d="M172.5,86.67h300" stroke="#4cc2f1" stroke-width="4" fill="none" stroke-linecap="round" opacity="0.2"/>
|
||||||
|
<path d="M172.5,86.67h300" stroke="url(#textGradient)" stroke-width="6" fill="none" stroke-linecap="round" opacity="0.3"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 12 KiB |
987
imgs/provctl_logo_specs.html
Normal file
987
imgs/provctl_logo_specs.html
Normal file
@ -0,0 +1,987 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>provctl Logo - Specifications & Preview</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family:
|
||||||
|
"Segoe UI",
|
||||||
|
-apple-system,
|
||||||
|
BlinkMacSystemFont,
|
||||||
|
sans-serif;
|
||||||
|
background: linear-gradient(
|
||||||
|
135deg,
|
||||||
|
#0f0f1e 0%,
|
||||||
|
#1a1a2e 50%,
|
||||||
|
#16213e 100%
|
||||||
|
);
|
||||||
|
color: #fff;
|
||||||
|
padding: 2rem;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 1600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header */
|
||||||
|
.header {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
padding-bottom: 2rem;
|
||||||
|
border-bottom: 2px solid rgba(76, 194, 241, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 3.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
background: linear-gradient(135deg, #4cc2f1, #f2b03f, #05ab9e);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
background-clip: text;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.version-badge {
|
||||||
|
display: inline-block;
|
||||||
|
background: linear-gradient(135deg, #05ab9e, #4cc2f1);
|
||||||
|
color: white;
|
||||||
|
padding: 0.5rem 1.5rem;
|
||||||
|
border-radius: 25px;
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 1rem;
|
||||||
|
box-shadow: 0 4px 15px rgba(5, 171, 158, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.subtitle {
|
||||||
|
color: #8d9ccf;
|
||||||
|
font-size: 1.3rem;
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Section Headers */
|
||||||
|
.section {
|
||||||
|
margin-bottom: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-size: 2rem;
|
||||||
|
color: #4cc2f1;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
border-bottom: 2px solid rgba(76, 194, 241, 0.3);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title::before {
|
||||||
|
content: "";
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
background: #05ab9e;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Logo Display Grid */
|
||||||
|
.logo-display-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
|
||||||
|
gap: 2rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-box-wrapper {
|
||||||
|
background: rgba(255, 255, 255, 0.03);
|
||||||
|
border: 2px solid rgba(76, 194, 241, 0.2);
|
||||||
|
border-radius: 16px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-box-wrapper:hover {
|
||||||
|
border-color: rgba(76, 194, 241, 0.5);
|
||||||
|
transform: translateY(-5px);
|
||||||
|
box-shadow: 0 10px 30px rgba(76, 194, 241, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-box {
|
||||||
|
background: rgba(0, 0, 0, 0.4);
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 3rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 320px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-box.dark {
|
||||||
|
background: #16213e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-box.light {
|
||||||
|
background: #f8f9fa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-box.gradient {
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-box img {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 600px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-box-label {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 1rem;
|
||||||
|
color: #f2b03f;
|
||||||
|
font-size: 0.95rem;
|
||||||
|
font-weight: 600;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Technical Specs Grid */
|
||||||
|
.specs-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
|
||||||
|
gap: 1.5rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-card {
|
||||||
|
background: rgba(255, 255, 255, 0.03);
|
||||||
|
border: 1px solid rgba(76, 194, 241, 0.2);
|
||||||
|
border-left: 4px solid #4cc2f1;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-card h3 {
|
||||||
|
color: #f2b03f;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-card h3::before {
|
||||||
|
content: "⚙️";
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 0.75rem 0;
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-item:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-label {
|
||||||
|
color: #8d9ccf;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-value {
|
||||||
|
color: #fff;
|
||||||
|
font-family: "Courier New", monospace;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
background: rgba(76, 194, 241, 0.1);
|
||||||
|
padding: 0.3rem 0.6rem;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Color Palette */
|
||||||
|
.color-palette {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||||
|
gap: 1.5rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-swatch {
|
||||||
|
background: rgba(255, 255, 255, 0.03);
|
||||||
|
border: 2px solid rgba(76, 194, 241, 0.2);
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
text-align: center;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-swatch:hover {
|
||||||
|
transform: scale(1.05);
|
||||||
|
border-color: rgba(76, 194, 241, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-preview {
|
||||||
|
width: 100%;
|
||||||
|
height: 100px;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
border: 2px solid rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-name {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #f2b03f;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-code {
|
||||||
|
font-family: "Courier New", monospace;
|
||||||
|
color: #4cc2f1;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
margin-bottom: 0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-rgb {
|
||||||
|
font-family: "Courier New", monospace;
|
||||||
|
color: #8d9ccf;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-usage {
|
||||||
|
margin-top: 0.75rem;
|
||||||
|
padding-top: 0.75rem;
|
||||||
|
border-top: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
|
color: #8d9ccf;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation Table */
|
||||||
|
.animation-table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin-top: 2rem;
|
||||||
|
background: rgba(255, 255, 255, 0.03);
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-table th,
|
||||||
|
.animation-table td {
|
||||||
|
padding: 1rem 1.5rem;
|
||||||
|
text-align: left;
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-table th {
|
||||||
|
background: rgba(76, 194, 241, 0.15);
|
||||||
|
color: #4cc2f1;
|
||||||
|
font-weight: 600;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-table td:first-child {
|
||||||
|
color: #f2b03f;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-table td {
|
||||||
|
color: #8d9ccf;
|
||||||
|
font-family: "Courier New", monospace;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Component Breakdown */
|
||||||
|
.component-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||||||
|
gap: 1.5rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.component-card {
|
||||||
|
background: rgba(255, 255, 255, 0.03);
|
||||||
|
border: 2px solid rgba(5, 171, 158, 0.3);
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.component-card h3 {
|
||||||
|
color: #05ab9e;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.component-card ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.component-card li {
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
color: #8d9ccf;
|
||||||
|
display: flex;
|
||||||
|
align-items: start;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.component-card li::before {
|
||||||
|
content: "▹";
|
||||||
|
color: #4cc2f1;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Highlight Box */
|
||||||
|
.highlight-box {
|
||||||
|
background: rgba(242, 176, 63, 0.08);
|
||||||
|
border: 2px solid rgba(242, 176, 63, 0.3);
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 2rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box h3 {
|
||||||
|
color: #f2b03f;
|
||||||
|
font-size: 1.4rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box h3::before {
|
||||||
|
content: "💡";
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box p {
|
||||||
|
color: #8d9ccf;
|
||||||
|
line-height: 1.8;
|
||||||
|
font-size: 1.05rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Usage Guidelines */
|
||||||
|
.usage-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 2rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-section {
|
||||||
|
background: rgba(255, 255, 255, 0.03);
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 2rem;
|
||||||
|
border: 2px solid rgba(76, 194, 241, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-section h3 {
|
||||||
|
color: #4cc2f1;
|
||||||
|
font-size: 1.3rem;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-section.do h3::before {
|
||||||
|
content: "✅";
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-section.dont h3::before {
|
||||||
|
content: "❌";
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-section ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-section li {
|
||||||
|
padding: 0.75rem 0;
|
||||||
|
color: #8d9ccf;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.footer {
|
||||||
|
margin-top: 4rem;
|
||||||
|
padding-top: 2rem;
|
||||||
|
border-top: 2px solid rgba(76, 194, 241, 0.3);
|
||||||
|
text-align: center;
|
||||||
|
color: #8d9ccf;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
h1 {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-display-grid,
|
||||||
|
.usage-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<!-- Header -->
|
||||||
|
<div class="header">
|
||||||
|
<h1>⚙️ provctl</h1>
|
||||||
|
<div class="version-badge">Logos</div>
|
||||||
|
<p class="subtitle">Machine Orchestration & Service Control Platform</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Logo Preview Section -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Logo Preview</h2>
|
||||||
|
|
||||||
|
<div class="logo-display-grid">
|
||||||
|
<div class="logo-box-wrapper">
|
||||||
|
<div class="logo-box dark">
|
||||||
|
<img
|
||||||
|
src="provctl_logo.svg"
|
||||||
|
alt="provctl logo on dark background"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="logo-box-label">Dark Background</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="logo-box-wrapper">
|
||||||
|
<div class="logo-box light">
|
||||||
|
<img
|
||||||
|
src="provctl_logo.svg"
|
||||||
|
alt="provctl logo on light background"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="logo-box-label">Light Background</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="logo-box-wrapper">
|
||||||
|
<div class="logo-box gradient">
|
||||||
|
<img
|
||||||
|
src="provctl_logo.svg"
|
||||||
|
alt="provctl logo on gradient background"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="logo-box-label">Gradient Background</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="logo-box-wrapper">
|
||||||
|
<div class="logo-box" style="background: rgba(0, 0, 0, 0.8)">
|
||||||
|
<img
|
||||||
|
src="provctl_logo.svg"
|
||||||
|
alt="provctl logo on black background"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="logo-box-label">Pure Black</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Design Concept -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Design Concept</h2>
|
||||||
|
|
||||||
|
<div class="highlight-box">
|
||||||
|
<h3>Orbital CI/CD System with Infinity Loop</h3>
|
||||||
|
<p>
|
||||||
|
The v6 logo represents a
|
||||||
|
<strong>distributed orchestration system</strong> where multiple
|
||||||
|
remote nodes orbit around a central control hub. The
|
||||||
|
<strong>infinity loop</strong> symbolizes continuous integration and
|
||||||
|
continuous deployment (CI/CD) — a process with no beginning or end.
|
||||||
|
Unlike traditional two-gear designs, this orbital approach
|
||||||
|
emphasizes
|
||||||
|
<strong>scalable, multi-node orchestration</strong> rather than
|
||||||
|
simple 1:1 connections.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="component-grid">
|
||||||
|
<div class="component-card">
|
||||||
|
<h3>🔄 Infinity Loop</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Continuous CI/CD flow visualization</li>
|
||||||
|
<li>Animated gradient flowing eternally</li>
|
||||||
|
<li>8px stroke width with glow effect</li>
|
||||||
|
<li>Three particles traveling the path</li>
|
||||||
|
<li>Represents endless integration cycle</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="component-card">
|
||||||
|
<h3>🟢 Central Control Node</h3>
|
||||||
|
<ul>
|
||||||
|
<li>20px radius blue sphere (#455aa5)</li>
|
||||||
|
<li>Green LED indicator (6px, pulsing)</li>
|
||||||
|
<li>Concentric rings for depth</li>
|
||||||
|
<li>Represents local control center</li>
|
||||||
|
<li>Breathing animation (2s cycle)</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="component-card">
|
||||||
|
<h3>🔵 Remote Nodes (5x)</h3>
|
||||||
|
<ul>
|
||||||
|
<li>18px radius with radial gradient</li>
|
||||||
|
<li>Terminal prompt ">_" centered</li>
|
||||||
|
<li>Individual pulsing glow effects</li>
|
||||||
|
<li>Distributed orbital positions</li>
|
||||||
|
<li>Connected via dashed lines</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="component-card">
|
||||||
|
<h3>🌊 Flow Particles</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Three colored particles (4px radius)</li>
|
||||||
|
<li>Travel along infinity path</li>
|
||||||
|
<li>Staggered timing (0s, 2s, 4s)</li>
|
||||||
|
<li>Smooth spline animation</li>
|
||||||
|
<li>Represents data/command flow</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="component-card">
|
||||||
|
<h3>📡 Connection Lines</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Dashed lines (4,4 pattern)</li>
|
||||||
|
<li>2px stroke width, cyan color</li>
|
||||||
|
<li>Animated dash offset</li>
|
||||||
|
<li>From each node to center</li>
|
||||||
|
<li>Shows active SSH connections</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="component-card">
|
||||||
|
<h3>✍️ Typography</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Font: Merienda One (rounded)</li>
|
||||||
|
<li>Size: 48px, weight: 700</li>
|
||||||
|
<li>Color: #455aa5 (primary blue)</li>
|
||||||
|
<li>Letter-by-letter pulse animation</li>
|
||||||
|
<li>Staggered 0.2s offset</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Technical Specifications -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Technical Specifications</h2>
|
||||||
|
|
||||||
|
<div class="specs-grid">
|
||||||
|
<div class="spec-card">
|
||||||
|
<h3>Canvas & Layout</h3>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Dimensions</span>
|
||||||
|
<span class="spec-value">600 × 280 px</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Format</span>
|
||||||
|
<span class="spec-value">SVG (Vector)</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">File Size</span>
|
||||||
|
<span class="spec-value">~18 KB</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Scalability</span>
|
||||||
|
<span class="spec-value">Infinite</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="spec-card">
|
||||||
|
<h3>Central Node</h3>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Radius</span>
|
||||||
|
<span class="spec-value">20px</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Fill Color</span>
|
||||||
|
<span class="spec-value">#455aa5</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">LED Color</span>
|
||||||
|
<span class="spec-value">#05ab9e</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">LED Pulse</span>
|
||||||
|
<span class="spec-value">5-8px @ 2s</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="spec-card">
|
||||||
|
<h3>Remote Nodes</h3>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Radius</span>
|
||||||
|
<span class="spec-value">18px</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Fill Color</span>
|
||||||
|
<span class="spec-value">#5e74b7</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Count</span>
|
||||||
|
<span class="spec-value">5 nodes</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Terminal Icon</span>
|
||||||
|
<span class="spec-value">>_</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="spec-card">
|
||||||
|
<h3>Infinity Loop</h3>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Stroke Width</span>
|
||||||
|
<span class="spec-value">8px (main)</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Path Length</span>
|
||||||
|
<span class="spec-value">~440px</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Particles</span>
|
||||||
|
<span class="spec-value">3 flowing</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Animation</span>
|
||||||
|
<span class="spec-value">6s loop</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="spec-card">
|
||||||
|
<h3>Typography</h3>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Font Family</span>
|
||||||
|
<span class="spec-value">Merienda One</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Font Size</span>
|
||||||
|
<span class="spec-value">48px</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Font Weight</span>
|
||||||
|
<span class="spec-value">700 (Bold)</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Letter Spacing</span>
|
||||||
|
<span class="spec-value">0.5px</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="spec-card">
|
||||||
|
<h3>Performance</h3>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Target FPS</span>
|
||||||
|
<span class="spec-value">60 fps</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">CPU Usage</span>
|
||||||
|
<span class="spec-value">< 1%</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Browser Support</span>
|
||||||
|
<span class="spec-value">Modern</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Compatibility</span>
|
||||||
|
<span class="spec-value">Chrome 90+</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Color Palette -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Color Palette</h2>
|
||||||
|
|
||||||
|
<div class="color-palette">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="color-preview" style="background-color: #455aa5"></div>
|
||||||
|
<div class="color-name">Primary Blue</div>
|
||||||
|
<div class="color-code">#455aa5</div>
|
||||||
|
<div class="color-rgb">RGB(69, 90, 165)</div>
|
||||||
|
<div class="color-usage">
|
||||||
|
Central control node, typography, primary brand color
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="color-preview" style="background-color: #5e74b7"></div>
|
||||||
|
<div class="color-name">Secondary Blue</div>
|
||||||
|
<div class="color-code">#5e74b7</div>
|
||||||
|
<div class="color-rgb">RGB(94, 116, 183)</div>
|
||||||
|
<div class="color-usage">
|
||||||
|
Remote nodes, distributed systems, gradient fills
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="color-preview" style="background-color: #f2b03f"></div>
|
||||||
|
<div class="color-name">Orange/Gold</div>
|
||||||
|
<div class="color-code">#f2b03f</div>
|
||||||
|
<div class="color-rgb">RGB(242, 176, 63)</div>
|
||||||
|
<div class="color-usage">
|
||||||
|
Terminal symbols, flow particles, accent highlights
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="color-preview" style="background-color: #05ab9e"></div>
|
||||||
|
<div class="color-name">Green Status</div>
|
||||||
|
<div class="color-code">#05ab9e</div>
|
||||||
|
<div class="color-rgb">RGB(5, 171, 158)</div>
|
||||||
|
<div class="color-usage">
|
||||||
|
LED indicator, active status, health monitoring
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="color-preview" style="background-color: #4cc2f1"></div>
|
||||||
|
<div class="color-name">Cyan</div>
|
||||||
|
<div class="color-code">#4cc2f1</div>
|
||||||
|
<div class="color-rgb">RGB(76, 194, 241)</div>
|
||||||
|
<div class="color-usage">
|
||||||
|
SSH connections, orbital rings, network links
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Animation Specifications -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Animation Specifications</h2>
|
||||||
|
|
||||||
|
<table class="animation-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Element</th>
|
||||||
|
<th>Type</th>
|
||||||
|
<th>Duration</th>
|
||||||
|
<th>Easing</th>
|
||||||
|
<th>Details</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Infinity Loop Gradient</td>
|
||||||
|
<td>Offset Animation</td>
|
||||||
|
<td>4s</td>
|
||||||
|
<td>Linear</td>
|
||||||
|
<td>Continuous color flow along path</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Central LED</td>
|
||||||
|
<td>Scale + Opacity</td>
|
||||||
|
<td>2s</td>
|
||||||
|
<td>ease-in-out</td>
|
||||||
|
<td>Breathing: 5-8px radius, 0.7-1.0 opacity</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Flow Particles (3x)</td>
|
||||||
|
<td>Path Motion</td>
|
||||||
|
<td>6s</td>
|
||||||
|
<td>spline (0.42, 0, 0.58, 1)</td>
|
||||||
|
<td>Staggered: 0s, 2s, 4s begin times</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Remote Node Glow</td>
|
||||||
|
<td>Scale + Opacity</td>
|
||||||
|
<td>2.1-2.5s</td>
|
||||||
|
<td>ease-in-out</td>
|
||||||
|
<td>Each node independent timing</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Connection Lines</td>
|
||||||
|
<td>Dash Offset</td>
|
||||||
|
<td>1.5-2s</td>
|
||||||
|
<td>Linear</td>
|
||||||
|
<td>Animated flow towards center</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Typography</td>
|
||||||
|
<td>Opacity</td>
|
||||||
|
<td>3.5s</td>
|
||||||
|
<td>ease-in-out</td>
|
||||||
|
<td>Letter-by-letter: 0.2s offset</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Orbital Rings</td>
|
||||||
|
<td>Opacity</td>
|
||||||
|
<td>2.5-3s</td>
|
||||||
|
<td>ease-in-out</td>
|
||||||
|
<td>Subtle pulse 0.08-0.2 opacity</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="highlight-box" style="margin-top: 2rem">
|
||||||
|
<h3>Performance Optimization</h3>
|
||||||
|
<p>
|
||||||
|
All animations use <strong>CSS-based SVG animations</strong> with
|
||||||
|
hardware acceleration. The <code>calcMode="spline"</code> with
|
||||||
|
Bézier curves <code>(0.42, 0, 0.58, 1)</code> ensures smooth,
|
||||||
|
natural motion. Linear easing is used for mechanical elements (gear
|
||||||
|
rotation, dash offset) to maintain technical precision. Target:
|
||||||
|
<strong>60fps @ <1% CPU usage</strong> on modern browsers.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Usage Guidelines -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Usage Guidelines</h2>
|
||||||
|
|
||||||
|
<div class="usage-grid">
|
||||||
|
<div class="usage-section do">
|
||||||
|
<h3>Best Practices</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Use on contrasting backgrounds (dark or light)</li>
|
||||||
|
<li>Maintain aspect ratio (600:280)</li>
|
||||||
|
<li>Provide clear space: minimum 20px around logo</li>
|
||||||
|
<li>Scale proportionally: 32px to 600px+ width</li>
|
||||||
|
<li>Link to project repository when displayed</li>
|
||||||
|
<li>Include alt text: "provctl - machine orchestration"</li>
|
||||||
|
<li>Use animated version for web/digital contexts</li>
|
||||||
|
<li>Export static version for print/email</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="usage-section dont">
|
||||||
|
<h3>Avoid These</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Don't distort or skew the logo</li>
|
||||||
|
<li>Don't modify colors without approval</li>
|
||||||
|
<li>Don't add effects (shadows, glows, outlines)</li>
|
||||||
|
<li>Don't rotate or flip the logo</li>
|
||||||
|
<li>Don't place on busy/patterned backgrounds</li>
|
||||||
|
<li>Don't separate elements (infinity + nodes + text)</li>
|
||||||
|
<li>Don't use low-res raster versions</li>
|
||||||
|
<li>Don't alter animation timing</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="highlight-box" style="margin-top: 2rem">
|
||||||
|
<h3>Recommended Use Cases</h3>
|
||||||
|
<p>
|
||||||
|
<strong>Web:</strong> GitHub README (400-600px), documentation
|
||||||
|
headers, project websites<br />
|
||||||
|
<strong>Digital:</strong> Presentations, social media, blog posts,
|
||||||
|
tutorials<br />
|
||||||
|
<strong>Print:</strong> Business cards, stickers, conference
|
||||||
|
materials (use static version)<br />
|
||||||
|
<strong>Development:</strong> CLI splash screens, terminal ASCII art
|
||||||
|
derivatives, IDE themes
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- File Information -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">File Information</h2>
|
||||||
|
|
||||||
|
<div class="specs-grid">
|
||||||
|
<div class="spec-card">
|
||||||
|
<h3>File Details</h3>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Filename</span>
|
||||||
|
<span class="spec-value">provctl_logo_v6.svg</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Version</span>
|
||||||
|
<span class="spec-value">6.0</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Created</span>
|
||||||
|
<span class="spec-value">November 2025</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">License</span>
|
||||||
|
<span class="spec-value">MIT / Apache 2.0</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="spec-card">
|
||||||
|
<h3>Browser Support</h3>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Chrome</span>
|
||||||
|
<span class="spec-value">90+</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Firefox</span>
|
||||||
|
<span class="spec-value">88+</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Safari</span>
|
||||||
|
<span class="spec-value">14+</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Edge</span>
|
||||||
|
<span class="spec-value">90+</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="spec-card">
|
||||||
|
<h3>Export Options</h3>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">PNG (High-res)</span>
|
||||||
|
<span class="spec-value">600px, 1200px</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Favicon</span>
|
||||||
|
<span class="spec-value">16×16, 32×32, 64×64</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Social Media</span>
|
||||||
|
<span class="spec-value">400×400 square crop</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-item">
|
||||||
|
<span class="spec-label">Print (PDF)</span>
|
||||||
|
<span class="spec-value">Static version</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<div class="footer">
|
||||||
|
<p>
|
||||||
|
<strong>provctl</strong> — Machine Orchestration & Service Control
|
||||||
|
Platform
|
||||||
|
</p>
|
||||||
|
<p style="margin-top: 0.5rem; font-size: 0.9rem">
|
||||||
|
Built with Rust • Designed for DevOps/SRE Teams • Part of the
|
||||||
|
provisioning ecosystem
|
||||||
|
</p>
|
||||||
|
<p style="margin-top: 1rem; font-size: 0.85rem; opacity: 0.7">
|
||||||
|
© 2025 provctl project • Documentation and Logo v6 Specifications
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
x
Reference in New Issue
Block a user