provisioning-outreach/presentations/rust-laspalmas-250926/designs/imgs/org_prov-syste-poster.html

829 lines
26 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Rust Las Palmas Meetup 2025 - Provisioning</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Merienda:wght@300;400;700;800;900&family=Inter:wght@400;600;700;900&family=JetBrains+Mono:wght@400;600&display=swap');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', sans-serif;
background: #0a0a0a;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
padding: 20px;
}
.poster {
width: 794px;
height: 1123px;
position: relative;
overflow: hidden;
background: #000;
}
/* Fondo oceánico de Las Palmas con overlay tecnológico */
.ocean-tech-bg {
position: absolute;
width: 100%;
height: 100%;
background: linear-gradient(180deg,
rgba(0, 20, 40, 0.95) 0%,
rgba(0, 40, 80, 0.9) 30%,
rgba(206, 66, 43, 0.3) 60%,
rgba(15, 23, 42, 0.95) 100%);
animation: waves 20s ease-in-out infinite;
}
@keyframes waves {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-20px); }
}
/* Símbolo del infinito animado */
.infinity-container {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 600px;
height: 300px;
z-index: 4;
opacity: 0.4;
}
.infinity-symbol {
width: 100%;
height: 100%;
position: relative;
}
.infinity-path {
stroke: url(#infinityGradient);
stroke-width: 4;
fill: none;
stroke-linecap: round;
filter: drop-shadow(0 0 30px rgba(0, 212, 255, 0.8));
animation: infinity-draw 8s linear infinite;
}
@keyframes infinity-draw {
0% {
stroke-dasharray: 0 1000;
}
50% {
stroke-dasharray: 1000 0;
}
100% {
stroke-dasharray: 0 1000;
}
}
.infinity-particles {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
.infinity-particle {
position: absolute;
width: 8px;
height: 8px;
background: radial-gradient(circle, #00FFB3, transparent);
border-radius: 50%;
animation: follow-infinity 4s linear infinite;
box-shadow: 0 0 15px rgba(0, 255, 179, 0.8);
}
.infinity-particle:nth-child(1) { animation-delay: 0s; }
.infinity-particle:nth-child(2) { animation-delay: 0.5s; }
.infinity-particle:nth-child(3) { animation-delay: 1s; }
.infinity-particle:nth-child(4) { animation-delay: 1.5s; }
.infinity-particle:nth-child(5) { animation-delay: 2s; }
.infinity-particle:nth-child(6) { animation-delay: 2.5s; }
@keyframes follow-infinity {
0%, 100% {
left: 50%;
top: 50%;
opacity: 0;
}
25% {
left: 75%;
top: 25%;
opacity: 1;
}
50% {
left: 50%;
top: 50%;
opacity: 1;
}
75% {
left: 25%;
top: 75%;
opacity: 1;
}
}
/* Cangrejo de Rust gigante emergiendo del océano digital */
.rust-crab-container {
position: absolute;
top: 200px;
left: 50%;
transform: translateX(-50%);
width: 600px;
height: 400px;
filter: drop-shadow(0 20px 40px rgba(206, 66, 43, 0.5));
z-index: 5;
}
.digital-crab {
width: 100%;
height: 100%;
position: relative;
}
/* Cuerpo del cangrejo */
.crab-body {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 300px;
height: 200px;
background: linear-gradient(135deg, #CE422B 0%, #8B2F20 50%, #CE422B 100%);
border-radius: 50% 50% 40% 40%;
box-shadow:
inset 0 -20px 40px rgba(0,0,0,0.3),
0 30px 60px rgba(206, 66, 43, 0.4);
}
/* Pinzas del cangrejo */
.claw {
position: absolute;
width: 120px;
height: 80px;
background: linear-gradient(135deg, #CE422B, #A0351F);
clip-path: polygon(0 50%, 30% 0, 70% 20%, 100% 30%, 100% 70%, 70% 80%, 30% 100%);
}
.claw-left {
top: 40%;
left: -60px;
transform: rotate(-30deg);
}
.claw-right {
top: 40%;
right: -60px;
transform: rotate(30deg) scaleX(-1);
}
/* Ojos del cangrejo */
.crab-eyes {
position: absolute;
top: 30%;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 100px;
}
.eye {
width: 40px;
height: 40px;
background: radial-gradient(circle, #fff 30%, #1a1a1a 35%, #CE422B 40%);
border-radius: 50%;
box-shadow: 0 5px 15px rgba(0,0,0,0.5);
animation: blink 4s infinite;
}
@keyframes blink {
0%, 90%, 100% { transform: scaleY(1); }
95% { transform: scaleY(0.1); }
}
/* Circuitos digitales emanando del cangrejo */
.digital-circuits {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
.circuit-line {
position: absolute;
background: linear-gradient(90deg, transparent, #3B82F6, transparent);
height: 2px;
animation: circuit-flow 3s linear infinite;
}
.circuit-line:nth-child(1) {
top: 20%;
left: -100%;
right: -100%;
animation-delay: 0s;
}
.circuit-line:nth-child(2) {
top: 40%;
left: -100%;
right: -100%;
animation-delay: 1s;
}
.circuit-line:nth-child(3) {
top: 60%;
left: -100%;
right: -100%;
animation-delay: 2s;
}
@keyframes circuit-flow {
0% { transform: translateX(-100%); }
100% { transform: translateX(100%); }
}
/* Islas flotantes de servidores */
.floating-servers {
position: absolute;
width: 100%;
height: 300px;
top: 100px;
z-index: 3;
}
.server-island {
position: absolute;
width: 80px;
height: 100px;
background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
border: 2px solid #3B82F6;
border-radius: 8px;
box-shadow: 0 10px 30px rgba(59, 130, 246, 0.3);
opacity: 0.8;
}
.server-island::before {
content: '';
position: absolute;
width: 60%;
height: 4px;
background: #10b981;
top: 20px;
left: 20%;
border-radius: 2px;
animation: server-blink 2s infinite;
}
@keyframes server-blink {
0%, 100% { opacity: 1; }
50% { opacity: 0.3; }
}
.server-1 {
top: 50px;
left: 10%;
animation: float-1 6s ease-in-out infinite;
}
.server-2 {
top: 120px;
right: 15%;
animation: float-2 8s ease-in-out infinite;
}
.server-3 {
top: 30px;
right: 30%;
animation: float-3 7s ease-in-out infinite;
}
@keyframes float-1 {
0%, 100% { transform: translateY(0) rotate(2deg); }
50% { transform: translateY(-20px) rotate(-2deg); }
}
@keyframes float-2 {
0%, 100% { transform: translateY(0) rotate(-1deg); }
50% { transform: translateY(-15px) rotate(1deg); }
}
@keyframes float-3 {
0%, 100% { transform: translateY(0) rotate(1deg); }
50% { transform: translateY(-25px) rotate(-1deg); }
}
/* Contenido del póster */
.content {
position: relative;
z-index: 10;
padding: 40px;
height: 100%;
display: flex;
flex-direction: column;
}
.header {
text-align: center;
margin-bottom: 20px;
}
.event-location {
font-family: 'Merienda', cursive;
font-size: 34px;
font-weight: 700;
letter-spacing: 3px;
color: #CE422B;
text-shadow: 0 0 20px rgba(206, 66, 43, 0.5);
margin-bottom: 10px;
}
.event-name {
font-size: 20px;
color: #3B82F6;
letter-spacing: 2px;
}
/* Espacio para el cangrejo */
.crab-space {
height: 380px;
}
.main-title {
text-align: center;
margin-bottom: 30px;
}
.title {
font-family: 'Merienda', cursive;
font-size: 56px;
font-weight: 900;
letter-spacing: -1px;
line-height: 0.95;
margin-bottom: 15px;
background: linear-gradient(135deg, #00D4FF, #7B2BFF, #00FFB3, #00D4FF);
background-size: 200% 200%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
animation: gradient-shift 4s ease infinite;
filter: drop-shadow(0 0 30px rgba(0, 212, 255, 0.5));
}
.title-systems {
font-family: 'Merienda', cursive;
font-weight: 300;
letter-spacing: 8px;
font-size: 50px;
}
@keyframes gradient-shift {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
.subtitle {
font-family: 'Merienda', cursive;
font-size: 17px;
color: #94a3b8;
margin-bottom: 10px;
font-weight: 400;
letter-spacing: 0px;
}
.tagline {
font-size: 16px;
color: #3B82F6;
font-style: italic;
}
/* Logo de Provisioning - Hexágono grande y claro */
.provisioning-logo {
position: absolute;
top: 35px;
right: 35px;
width: 90px;
height: 90px;
z-index: 20;
}
.logo-hexagon {
width: 100%;
height: 100%;
position: relative;
animation: logo-rotate 15s linear infinite;
}
@keyframes logo-rotate {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.hex-shape {
width: 100%;
height: 100%;
background: linear-gradient(135deg, #00D4FF, #7B2BFF, #00FFB3);
clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
position: relative;
box-shadow:
0 0 40px rgba(0, 212, 255, 0.6),
inset 0 0 20px rgba(255, 255, 255, 0.2);
}
.hex-inner {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 75%;
height: 75%;
background: rgba(10, 10, 10, 0.95);
clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
}
.hex-text {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-family: 'Merienda', cursive;
font-size: 48px;
font-weight: 700;
color: #00FFB3;
text-shadow:
0 0 20px rgba(0, 255, 179, 0.9),
0 0 40px rgba(0, 255, 179, 0.5);
}
/* Anillo de energía alrededor del hexágono */
.energy-ring {
position: absolute;
top: -10px;
left: -10px;
right: -10px;
bottom: -10px;
border: 2px solid transparent;
border-radius: 50%;
background: linear-gradient(45deg, transparent 30%, rgba(0, 255, 179, 0.3) 50%, transparent 70%);
animation: ring-pulse 3s linear infinite;
}
@keyframes ring-pulse {
0% {
transform: rotate(0deg) scale(1);
opacity: 0;
}
50% {
opacity: 1;
}
100% {
transform: rotate(360deg) scale(1.2);
opacity: 0;
}
}
/* Grid de características */
.features-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-bottom: 30px;
padding: 20px;
background: rgba(0, 0, 0, 0.5);
border-radius: 12px;
backdrop-filter: blur(10px);
}
.feature-item {
text-align: center;
padding: 15px;
background: rgba(206, 66, 43, 0.1);
border-radius: 8px;
border: 1px solid rgba(206, 66, 43, 0.3);
}
.feature-emoji {
font-size: 32px;
margin-bottom: 5px;
}
.feature-text {
font-size: 12px;
color: #cbd5e1;
font-weight: 600;
}
/* Terminal holográfico */
.holographic-terminal {
background: rgba(0, 0, 0, 0.8);
border: 2px solid transparent;
background-image:
linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
linear-gradient(135deg, #00D4FF, #7B2BFF, #00FFB3);
background-origin: border-box;
background-clip: padding-box, border-box;
border-radius: 8px;
padding: 20px;
margin-bottom: 30px;
position: relative;
overflow: hidden;
}
.holographic-terminal::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(45deg,
transparent 30%,
rgba(59, 130, 246, 0.1) 50%,
transparent 70%);
animation: hologram 4s linear infinite;
}
@keyframes hologram {
0% { transform: translate(-50%, -50%) rotate(0deg); }
100% { transform: translate(-50%, -50%) rotate(360deg); }
}
.terminal-text {
font-family: 'JetBrains Mono', monospace;
font-size: 14px;
color: #10b981;
position: relative;
z-index: 1;
}
/* Speaker info */
.speaker-section {
text-align: center;
margin-bottom: 30px;
padding: 20px;
background: rgba(206, 66, 43, 0.1);
border-radius: 12px;
border: 2px solid rgba(206, 66, 43, 0.3);
}
.speaker-name {
font-size: 24px;
font-weight: 700;
color: #CE422B;
margin-bottom: 5px;
}
.speaker-title {
font-size: 14px;
color: #cbd5e1;
}
/* Footer */
.footer {
margin-top: auto;
text-align: center;
padding: 20px;
background: linear-gradient(135deg, rgba(206, 66, 43, 0.2), rgba(59, 130, 246, 0.2));
border-radius: 12px;
}
.contact-row {
display: flex;
justify-content: center;
gap: 30px;
margin-bottom: 15px;
font-size: 14px;
color: #cbd5e1;
}
.register-cta {
font-size: 18px;
font-weight: 700;
color: #fff;
text-transform: uppercase;
letter-spacing: 2px;
padding: 15px 30px;
background: linear-gradient(135deg, #CE422B, #f97316);
border-radius: 30px;
display: inline-block;
box-shadow: 0 10px 30px rgba(206, 66, 43, 0.4);
animation: pulse-cta 2s infinite;
}
@keyframes pulse-cta {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.05); }
}
/* Partículas de datos */
.data-particles {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 2;
pointer-events: none;
}
.particle {
position: absolute;
width: 4px;
height: 4px;
background: #3B82F6;
border-radius: 50%;
opacity: 0;
animation: particle-rise 8s linear infinite;
}
.particle:nth-child(1) { left: 10%; animation-delay: 0s; }
.particle:nth-child(2) { left: 30%; animation-delay: 2s; }
.particle:nth-child(3) { left: 50%; animation-delay: 4s; }
.particle:nth-child(4) { left: 70%; animation-delay: 6s; }
.particle:nth-child(5) { left: 90%; animation-delay: 8s; }
@keyframes particle-rise {
0% {
bottom: -10px;
opacity: 0;
}
10% {
opacity: 1;
}
90% {
opacity: 1;
}
100% {
bottom: 100%;
opacity: 0;
}
}
</style>
</head>
<body>
<div class="poster">
<!-- Fondo oceánico/tecnológico -->
<div class="ocean-tech-bg"></div>
<!-- Partículas de datos ascendentes -->
<div class="data-particles">
<div class="particle"></div>
<div class="particle"></div>
<div class="particle"></div>
<div class="particle"></div>
<div class="particle"></div>
</div>
<!-- Símbolo del infinito detrás del cangrejo -->
<div class="infinity-container">
<svg class="infinity-symbol" viewBox="0 0 600 300" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="infinityGradient" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#00D4FF;stop-opacity:1">
<animate attributeName="stop-color" values="#00D4FF;#7B2BFF;#00FFB3;#00D4FF" dur="4s" repeatCount="indefinite" />
</stop>
<stop offset="50%" style="stop-color:#7B2BFF;stop-opacity:1">
<animate attributeName="stop-color" values="#7B2BFF;#00FFB3;#00D4FF;#7B2BFF" dur="4s" repeatCount="indefinite" />
</stop>
<stop offset="100%" style="stop-color:#00FFB3;stop-opacity:1">
<animate attributeName="stop-color" values="#00FFB3;#00D4FF;#7B2BFF;#00FFB3" dur="4s" repeatCount="indefinite" />
</stop>
</linearGradient>
</defs>
<path class="infinity-path" d="M 150 150 C 150 75, 225 75, 300 150 S 450 225, 450 150 S 525 75, 450 150 S 375 225, 300 150 S 150 225, 150 150 Z" />
</svg>
<div class="infinity-particles">
<div class="infinity-particle"></div>
<div class="infinity-particle"></div>
<div class="infinity-particle"></div>
<div class="infinity-particle"></div>
<div class="infinity-particle"></div>
<div class="infinity-particle"></div>
</div>
</div>
<!-- Servidores flotantes -->
<div class="floating-servers">
<div class="server-island server-1"></div>
<div class="server-island server-2"></div>
<div class="server-island server-3"></div>
</div>
<!-- Cangrejo de Rust gigante -->
<div class="rust-crab-container">
<div class="digital-crab">
<div class="crab-body"></div>
<div class="claw claw-left"></div>
<div class="claw claw-right"></div>
<div class="crab-eyes">
<div class="eye"></div>
<div class="eye"></div>
</div>
</div>
<div class="digital-circuits">
<div class="circuit-line"></div>
<div class="circuit-line"></div>
<div class="circuit-line"></div>
</div>
</div>
<!-- Contenido -->
<div class="content">
<!-- Logo de Provisioning - Hexágono con infinito -->
<div class="provisioning-logo">
<div class="energy-ring"></div>
<div class="logo-hexagon">
<div class="hex-shape"></div>
<div class="hex-inner"></div>
<div class="hex-text"></div>
</div>
</div>
<div class="header">
<div class="event-location">RUST LAS PALMAS</div>
<div class="event-name">MEETUP 2025</div>
</div>
<div class="crab-space"></div>
<div class="main-title">
<h1 class="title">Provisioning<br><span class="title-systems">Systems</span></h1>
<p class="subtitle">Infrastructure Automation with Rust, Nushell & KCL</p>
<p class="tagline">"Del océano digital al edge computing - Un ciclo infinito de automatización"</p>
</div>
<div class="features-grid">
<div class="feature-item">
<div class="feature-emoji">🌊</div>
<div class="feature-text">Universal Deploy</div>
</div>
<div class="feature-item">
<div class="feature-emoji"></div>
<div class="feature-text">10x Performance</div>
</div>
<div class="feature-item">
<div class="feature-emoji">🦀</div>
<div class="feature-text">Memory Safe</div>
</div>
<div class="feature-item">
<div class="feature-emoji">🤖</div>
<div class="feature-text">AI Powered</div>
</div>
</div>
<div class="holographic-terminal">
<div class="terminal-text">
$ provisioning --target all --deploy<br>
🦀 Orchestrating infrastructure across the digital ocean...<br>
✓ Bare metal | ✓ Cloud | ✓ Edge | ✓ IoT
</div>
</div>
<div class="speaker-section">
<div class="speaker-name">Jesús Pérez Lorenzo</div>
<div class="speaker-title">Senior Rust Developer & Provisioning Architect</div>
<div class="speaker-title" style="margin-top: 5px; color: #CE422B;">Organizador Rust Las Palmas</div>
</div>
<div class="footer">
<div class="contact-row">
<span>🐦 @jesusperezdev</span>
<span>📧 jesus@provisioning.dev</span>
<span>🌐 provisioning.systems</span>
</div>
<div class="register-cta">
ÚNETE A LA REVOLUCIÓN
</div>
<!-- Símbolo del infinito simple y elegante -->
<div class="bottom-infinity">
<svg class="bottom-infinity-svg" viewBox="0 0 120 60" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bottomGradient" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#00D4FF;stop-opacity:1" />
<stop offset="50%" style="stop-color:#00FFB3;stop-opacity:1" />
<stop offset="100%" style="stop-color:#7B2BFF;stop-opacity:1" />
</linearGradient>
</defs>
<path class="bottom-infinity-path" d="M 30 30 C 30 15, 45 15, 60 30 S 90 45, 90 30 S 105 15, 90 30 S 75 45, 60 30 S 30 45, 30 30 Z" />
</svg>
</div>
</div>
</div>
</div>
</body>
</html>