refactor: countdown + ops Apple SOTA 2026

- index.astro: white bg, Manrope font, Apple blue accent,
  clean timer (light weight, tabular-nums), gentle-float logo,
  fade-in stagger, no retro/glitch effects
- ops.astro: max-width 1200px (aligned with content grid),
  fluid padding clamp()

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Clément SAILLANT
2026-03-25 06:40:17 +01:00
parent 193f2cc67d
commit 389b5ca6cd
2 changed files with 90 additions and 96 deletions
+88 -94
View File
@@ -137,147 +137,141 @@ import '@/styles/global.css';
align-items: center;
justify-content: center;
text-align: center;
padding: 48px 24px;
background: linear-gradient(rgba(11,10,9,0.85), rgba(11,10,9,0.92)), url('/assets/hero-bg.jpg') center/cover no-repeat;
background-color: var(--bg, #0b0a09);
padding: clamp(32px, 6vw, 80px) clamp(20px, 4vw, 48px);
background-color: #ffffff;
font-family: 'Manrope', -apple-system, 'SF Pro Display', 'Helvetica Neue', sans-serif;
}
/* Logo sprite animation */
/* Logo — clean, static display */
.logo-sprite {
width: clamp(140px, 22vw, 200px);
height: clamp(140px, 22vw, 200px);
width: clamp(120px, 18vw, 180px);
height: clamp(120px, 18vw, 180px);
background-size: contain;
background-repeat: no-repeat;
background-position: center;
margin-bottom: 12px;
transition: opacity 0.15s ease;
filter: drop-shadow(0 0 24px rgba(91,209,216,0.3));
animation: logo-float 6s ease-in-out infinite;
margin-bottom: clamp(16px, 3vw, 32px);
transition: opacity 0.3s ease;
animation: gentle-float 6s ease-in-out infinite;
}
@keyframes gentle-float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-6px); }
}
@keyframes logo-float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-8px)} }
.atom { width: clamp(120px, 20vw, 170px); height: auto; margin-bottom: 20px; opacity: 0.4; }
.atom {
width: clamp(100px, 16vw, 150px);
height: auto;
margin-bottom: clamp(16px, 2vw, 24px);
opacity: 0.12;
}
/* Title bubble */
.title-bubble {
background: rgba(244, 238, 227, 0.92);
border: 1px solid rgba(91, 209, 216, 0.3);
border-radius: 14px;
padding: 16px 36px;
margin-bottom: 28px;
position: relative;
overflow: hidden;
box-shadow: 0 4px 24px rgba(0,0,0,0.15), 0 0 40px rgba(91,209,216,0.06);
margin-bottom: clamp(24px, 4vw, 40px);
padding: 0;
animation: fade-in 0.8s ease both;
}
.title-bubble::before {
content: '';
position: absolute;
inset: 0;
background:
repeating-linear-gradient(90deg, transparent 0, rgba(91,209,216,0.03) 1px, transparent 2px, transparent 4px),
repeating-linear-gradient(0deg, transparent 0, rgba(241,194,122,0.02) 1px, transparent 2px, transparent 6px);
animation: scanlines 8s linear infinite;
pointer-events: none;
}
.title-bubble::after {
content: '';
position: absolute;
top: 0; left: -100%; width: 60%; height: 100%;
background: linear-gradient(90deg, transparent, rgba(91,209,216,0.08), transparent);
animation: glitch-sweep 4s ease-in-out infinite;
pointer-events: none;
}
@keyframes scanlines { from{transform:translateY(0)} to{transform:translateY(6px)} }
@keyframes glitch-sweep { 0%,100%{left:-100%} 50%{left:140%} }
.title {
font-family: 'Fraunces', serif;
font-size: clamp(28px, 5vw, 48px);
font-weight: 700;
color: #0b0a09;
font-family: 'Manrope', -apple-system, 'SF Pro Display', sans-serif;
font-size: clamp(32px, 6vw, 56px);
font-weight: 800;
color: #1d1d1f;
margin: 0;
letter-spacing: -1px;
position: relative;
animation: title-glitch 6s ease-in-out infinite;
letter-spacing: -0.03em;
line-height: 1.1;
}
@keyframes title-glitch {
0%,92%,100% { transform:none; text-shadow:none; }
93% { transform:translateX(-2px) skewX(-0.5deg); text-shadow:2px 0 var(--electric,#5bd1d8), -2px 0 var(--accent,#f1c27a); }
94% { transform:translateX(1px) skewX(0.3deg); text-shadow:-1px 0 var(--electric,#5bd1d8), 1px 0 #d89b63; }
95% { transform:translateX(-1px); text-shadow:1px 0 var(--accent,#f1c27a); }
96% { transform:none; text-shadow:none; }
.electric {
color: #0071e3;
}
.electric { color: var(--electric, #5bd1d8); animation: pulse 3s ease-in-out infinite; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.6;text-shadow:0 0 12px var(--electric,#5bd1d8)} }
/* Bubbles */
/* Timer */
.timer-bubble {
background: rgba(244, 238, 227, 0.92);
border: 1px solid rgba(91, 209, 216, 0.3);
border-radius: 16px;
padding: 20px 32px;
margin-bottom: 24px;
backdrop-filter: blur(12px);
box-shadow: 0 4px 24px rgba(0,0,0,0.15), 0 0 40px rgba(91,209,216,0.06);
background: #f5f5f7;
border: none;
border-radius: 20px;
padding: clamp(16px, 3vw, 28px) clamp(24px, 4vw, 48px);
margin-bottom: clamp(20px, 3vw, 32px);
animation: fade-in 0.8s 0.2s ease both;
}
.timer {
display: flex;
align-items: center;
gap: clamp(8px, 2vw, 16px);
}
.unit {
display: flex;
flex-direction: column;
align-items: center;
}
.timer { display: flex; align-items: center; gap: 8px; }
.unit { display: flex; flex-direction: column; align-items: center; }
.num {
font-family: 'IBM Plex Mono', 'Share Tech Mono', monospace;
font-size: clamp(32px, 7vw, 64px);
font-weight: 600;
color: var(--bg, #0b0a09);
font-family: 'Manrope', -apple-system, 'SF Pro Display', sans-serif;
font-size: clamp(36px, 8vw, 72px);
font-weight: 300;
color: #1d1d1f;
line-height: 1;
min-width: 2ch;
font-variant-numeric: tabular-nums;
}
.label {
font-family: 'IBM Plex Mono', monospace;
font-size: 10px;
color: #666;
font-family: 'Manrope', -apple-system, 'SF Pro Display', sans-serif;
font-size: clamp(9px, 1.2vw, 12px);
color: #86868b;
text-transform: uppercase;
letter-spacing: 2px;
margin-top: 6px;
letter-spacing: 0.08em;
margin-top: 8px;
font-weight: 500;
}
.sep {
font-family: 'IBM Plex Mono', monospace;
font-family: 'Manrope', -apple-system, 'SF Pro Display', sans-serif;
font-size: clamp(24px, 5vw, 48px);
color: #b8860b;
opacity: 0.6;
color: #d2d2d7;
font-weight: 200;
margin-bottom: 18px;
}
/* Tagline */
.tagline-bubble {
background: rgba(244, 238, 227, 0.88);
border: 1px solid rgba(241, 194, 122, 0.35);
border-radius: 12px;
padding: 12px 24px;
margin-bottom: 20px;
margin-bottom: clamp(16px, 2vw, 24px);
min-height: 44px;
display: flex;
align-items: center;
transition: opacity 0.4s ease, transform 0.4s ease;
box-shadow: 0 2px 12px rgba(0,0,0,0.08);
animation: fade-in 0.8s 0.4s ease both;
}
.tagline-text {
font-family: 'IBM Plex Mono', monospace;
font-size: 14px;
color: #8b6914;
font-family: 'Manrope', -apple-system, 'SF Pro Display', sans-serif;
font-size: clamp(13px, 1.6vw, 16px);
color: #86868b;
font-weight: 400;
letter-spacing: 0.01em;
}
/* Footnote */
.footnote-bubble {
background: rgba(244, 238, 227, 0.7);
border: 1px solid rgba(182, 168, 148, 0.2);
border-radius: 10px;
padding: 10px 20px;
padding: clamp(8px, 1.5vw, 12px) 20px;
animation: fade-in 0.8s 0.6s ease both;
}
.footnote-bubble span {
font-family: 'IBM Plex Mono', monospace;
font-size: 12px;
color: #666;
letter-spacing: 0.5px;
font-family: 'Manrope', -apple-system, 'SF Pro Display', sans-serif;
font-size: clamp(11px, 1.2vw, 13px);
color: #aeaeb2;
letter-spacing: 0.02em;
font-weight: 400;
}
/* Animations */
@keyframes fade-in {
from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
.logo-sprite { animation: none; }
.electric { animation: none; }
.title-bubble, .timer-bubble, .tagline-bubble, .footnote-bubble {
animation: none;
opacity: 1;
}
}
</style>
+2 -2
View File
@@ -413,9 +413,9 @@ import '@/styles/global.css';
<style>
/* ═══ Apple SOTA 2026 — Ops Dashboard ═══ */
.ops {
max-width: 1080px;
max-width: 1200px;
margin: 0 auto;
padding: 2rem 1.25rem;
padding: 2rem clamp(1rem, 4vw, 2rem);
min-height: 100vh;
background: #ffffff;
color: #1d1d1f;