/* ============================================
   SCREENSAVER — Mode veille Lab Gold v3
   ============================================ */

/* --- Overlay container --- */
#screensaver-overlay {
    position: fixed;
    inset: 0;
    z-index: 99999;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.4s ease;
    will-change: opacity;
    background: #030303;
    font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif;
    overflow: hidden;
    cursor: none;
}

.screensaver-active #screensaver-overlay {
    opacity: 1;
    pointer-events: all;
    transition: opacity 0.8s ease;
}

/* --- Variables gold --- */
#screensaver-overlay {
    --gold-light: #f4e4a6;
    --gold: #d4af37;
    --gold-dark: #a67c00;
    --ss-bg: #030303;
}

/* ============================================
   SCREENSAVER INNER (flex center)
   ============================================ */
.ss-inner {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* ============================================
   AMBIENT BACKGROUND
   ============================================ */
.ss-bg-glow {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at 30% 40%, rgba(212, 175, 55, 0.04) 0%, transparent 50%),
        radial-gradient(ellipse at 70% 60%, rgba(212, 175, 55, 0.03) 0%, transparent 50%);
    animation: ss-bgBreath 10s ease-in-out infinite;
}

@keyframes ss-bgBreath {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

.ss-orb {
    position: absolute;
    width: 600px;
    height: 600px;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: radial-gradient(circle, rgba(212, 175, 55, 0.06) 0%, transparent 70%);
    animation: ss-orbPulse 8s ease-in-out infinite;
    pointer-events: none;
}

@keyframes ss-orbPulse {
    0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.6; }
    50% { transform: translate(-50%, -50%) scale(1.15); opacity: 1; }
}

.ss-grid {
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(212, 175, 55, 0.02) 1px, transparent 1px),
        linear-gradient(90deg, rgba(212, 175, 55, 0.02) 1px, transparent 1px);
    background-size: 60px 60px;
    animation: ss-gridMove 20s linear infinite;
}

@keyframes ss-gridMove {
    0% { background-position: 0 0; }
    100% { background-position: 60px 60px; }
}

/* ============================================
   FLOATING PARTICLES
   ============================================ */
.ss-particles {
    position: absolute;
    inset: 0;
    overflow: hidden;
}

.ss-particle {
    position: absolute;
    background: var(--gold);
    border-radius: 50%;
    opacity: 0;
    animation: ss-particleDrift linear infinite;
}

.ss-particle.small {
    width: 2px;
    height: 2px;
}

.ss-particle.medium {
    width: 3px;
    height: 3px;
    box-shadow: 0 0 6px rgba(212, 175, 55, 0.5);
}

@keyframes ss-particleDrift {
    0% { transform: translateY(100vh) translateX(0) rotate(0deg); opacity: 0; }
    10% { opacity: 0.6; }
    90% { opacity: 0.3; }
    100% { transform: translateY(-100px) translateX(30px) rotate(180deg); opacity: 0; }
}

/* ============================================
   SCAN LINE
   ============================================ */
.ss-scan-line {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(90deg, transparent, rgba(212, 175, 55, 0.3), transparent);
    animation: ss-scanMove 8s linear infinite;
    opacity: 0.5;
}

@keyframes ss-scanMove {
    0% { top: 0; }
    100% { top: 100%; }
}

/* ============================================
   LENS FLARE
   ============================================ */
.ss-lensflare {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
    opacity: 0;
    animation: ss-lensflareAppear 18s ease-in-out infinite;
}

.ss-lensflare-line {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 800px;
    height: 2px;
    transform: translate(-50%, -50%) rotate(-25deg);
    background: linear-gradient(90deg,
        transparent 0%, transparent 20%,
        rgba(244, 228, 166, 0.1) 30%,
        rgba(255, 255, 255, 0.6) 48%,
        rgba(244, 228, 166, 1) 50%,
        rgba(255, 255, 255, 0.6) 52%,
        rgba(244, 228, 166, 0.1) 70%,
        transparent 80%, transparent 100%
    );
    filter: blur(1px);
}

.ss-lensflare-glow {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 150px;
    height: 150px;
    transform: translate(-50%, -50%);
    background: radial-gradient(circle,
        rgba(255, 255, 255, 0.8) 0%,
        rgba(244, 228, 166, 0.4) 20%,
        rgba(212, 175, 55, 0.1) 40%,
        transparent 60%
    );
    filter: blur(2px);
}

.ss-lensflare-orb {
    position: absolute;
    border-radius: 50%;
    background: radial-gradient(circle,
        rgba(244, 228, 166, 0.6) 0%,
        rgba(212, 175, 55, 0.2) 50%,
        transparent 70%
    );
}

.ss-lensflare-orb:nth-child(3) {
    width: 30px; height: 30px;
    top: calc(50% + 80px); left: calc(50% + 120px);
}
.ss-lensflare-orb:nth-child(4) {
    width: 15px; height: 15px;
    top: calc(50% + 50px); left: calc(50% + 180px); opacity: 0.7;
}
.ss-lensflare-orb:nth-child(5) {
    width: 50px; height: 50px;
    top: calc(50% - 100px); left: calc(50% - 150px); opacity: 0.4;
}
.ss-lensflare-orb:nth-child(6) {
    width: 20px; height: 20px;
    top: calc(50% - 60px); left: calc(50% - 200px); opacity: 0.5;
}

.ss-lensflare-streak {
    position: absolute;
    top: 50%; left: 50%;
    width: 400px; height: 1px;
    transform: translate(-50%, -50%) rotate(-25deg);
    background: linear-gradient(90deg,
        transparent 0%, rgba(255, 255, 255, 0.3) 45%,
        rgba(255, 255, 255, 0.8) 50%,
        rgba(255, 255, 255, 0.3) 55%, transparent 100%
    );
}

@keyframes ss-lensflareAppear {
    0%, 70% { opacity: 0; }
    72% { opacity: 0; }
    75% { opacity: 1; }
    78% { opacity: 0.6; }
    80% { opacity: 0.9; }
    82% { opacity: 0; }
    100% { opacity: 0; }
}

/* ============================================
   CORNERS
   ============================================ */
.ss-corner {
    position: absolute;
    width: 80px;
    height: 80px;
}

.ss-corner::before,
.ss-corner::after {
    content: '';
    position: absolute;
    background: rgba(212, 175, 55, 0.2);
}
.ss-corner::before { width: 1px; height: 50px; }
.ss-corner::after { width: 50px; height: 1px; }

.ss-corner.tl { top: 25px; left: 25px; }
.ss-corner.tl::before { top: 0; left: 0; }
.ss-corner.tl::after { top: 0; left: 0; }

.ss-corner.tr { top: 25px; right: 25px; }
.ss-corner.tr::before { top: 0; right: 0; }
.ss-corner.tr::after { top: 0; right: 0; }

.ss-corner.bl { bottom: 25px; left: 25px; }
.ss-corner.bl::before { bottom: 0; left: 0; }
.ss-corner.bl::after { bottom: 0; left: 0; }

.ss-corner.br { bottom: 25px; right: 25px; }
.ss-corner.br::before { bottom: 0; right: 0; }
.ss-corner.br::after { bottom: 0; right: 0; }

.ss-corner-accent {
    position: absolute;
    width: 6px; height: 6px;
    background: var(--gold);
    opacity: 0.3;
}
.ss-corner.tl .ss-corner-accent { top: 0; left: 0; }
.ss-corner.tr .ss-corner-accent { top: 0; right: 0; }
.ss-corner.bl .ss-corner-accent { bottom: 0; left: 0; }
.ss-corner.br .ss-corner-accent { bottom: 0; right: 0; }

/* ============================================
   SIDE DATA
   ============================================ */
.ss-side-data {
    position: absolute;
    font-size: 9px;
    letter-spacing: 3px;
    color: rgba(212, 175, 55, 0.2);
    writing-mode: vertical-lr;
}
.ss-side-data.left {
    left: 35px; top: 50%;
    transform: translateY(-50%) rotate(180deg);
}
.ss-side-data.right {
    right: 35px; top: 50%;
    transform: translateY(-50%);
}

/* ============================================
   DNA HELIX
   ============================================ */
.ss-helix {
    position: absolute;
    width: 30px; height: 200px;
    opacity: 0.15;
}
.ss-helix.left { left: 80px; top: 50%; transform: translateY(-50%); }
.ss-helix.right { right: 80px; top: 50%; transform: translateY(-50%); }

.ss-helix-dot {
    position: absolute;
    width: 4px; height: 4px;
    background: var(--gold);
    border-radius: 50%;
    animation: ss-helixFloat 4s ease-in-out infinite;
}

@keyframes ss-helixFloat {
    0%, 100% { transform: translateX(0); }
    50% { transform: translateX(20px); }
}
.ss-helix-dot:nth-child(even) { animation-direction: reverse; }

/* ============================================
   STATUS INDICATOR
   ============================================ */
.ss-status {
    position: absolute;
    top: 35px; left: 50%;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 9px;
    letter-spacing: 3px;
    color: rgba(212, 175, 55, 0.35);
}

.ss-status-dot {
    width: 6px; height: 6px;
    background: var(--gold);
    border-radius: 50%;
    animation: ss-statusPulse 2s ease-in-out infinite;
    box-shadow: 0 0 10px var(--gold);
}

@keyframes ss-statusPulse {
    0%, 100% { transform: scale(1); box-shadow: 0 0 10px var(--gold); }
    50% { transform: scale(0.8); box-shadow: 0 0 15px var(--gold), 0 0 25px rgba(212, 175, 55, 0.3); }
}

/* ============================================
   MAIN CONTENT (centered)
   ============================================ */
.ss-main-content {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    z-index: 10;
}

/* ============================================
   LOGO SECTION
   ============================================ */
.ss-logo-section {
    position: relative;
    margin-bottom: 50px;
}

/* Orbital rings */
.ss-ring {
    position: absolute;
    top: 50%; left: 50%;
    border-radius: 50%;
    border: 1px solid rgba(212, 175, 55, 0.12);
}

.ss-ring-1 {
    width: 340px; height: 340px;
    transform: translate(-50%, -50%) rotateX(75deg);
    animation: ss-ring1Rotate 20s linear infinite;
}
.ss-ring-2 {
    width: 320px; height: 320px;
    transform: translate(-50%, -50%) rotateX(75deg) rotateY(20deg);
    animation: ss-ring2Rotate 25s linear infinite reverse;
    border-color: rgba(212, 175, 55, 0.08);
}
.ss-ring-3 {
    width: 360px; height: 360px;
    transform: translate(-50%, -50%) rotateX(75deg) rotateY(-20deg);
    animation: ss-ring3Rotate 30s linear infinite;
    border-color: rgba(212, 175, 55, 0.06);
}

@keyframes ss-ring1Rotate {
    from { transform: translate(-50%, -50%) rotateX(75deg) rotateZ(0deg); }
    to { transform: translate(-50%, -50%) rotateX(75deg) rotateZ(360deg); }
}
@keyframes ss-ring2Rotate {
    from { transform: translate(-50%, -50%) rotateX(75deg) rotateY(20deg) rotateZ(0deg); }
    to { transform: translate(-50%, -50%) rotateX(75deg) rotateY(20deg) rotateZ(360deg); }
}
@keyframes ss-ring3Rotate {
    from { transform: translate(-50%, -50%) rotateX(75deg) rotateY(-20deg) rotateZ(0deg); }
    to { transform: translate(-50%, -50%) rotateX(75deg) rotateY(-20deg) rotateZ(360deg); }
}

/* Ring orbital dots */
.ss-ring::before {
    content: '';
    position: absolute;
    width: 6px; height: 6px;
    background: var(--gold);
    border-radius: 50%;
    top: -3px; left: 50%;
    transform: translateX(-50%);
    box-shadow: 0 0 10px var(--gold), 0 0 20px rgba(212, 175, 55, 0.5);
}
.ss-ring-2::before {
    width: 4px; height: 4px;
    top: auto; bottom: -2px;
    background: var(--gold-dark);
    box-shadow: 0 0 8px var(--gold-dark);
}
.ss-ring-3::before {
    width: 5px; height: 5px;
    left: -2px; top: 50%;
    transform: translateY(-50%);
}

/* Ring glitch effect */
.ss-ring-glitch {
    position: absolute;
    top: 50%; left: 50%;
    width: 340px; height: 340px;
    border-radius: 50%;
    border: 2px solid transparent;
    transform: translate(-50%, -50%);
    opacity: 0;
    animation: ss-ringGlitch 15s ease-in-out infinite;
}

.ss-ring-glitch::before {
    content: '';
    position: absolute;
    inset: -2px;
    border-radius: 50%;
    border: 2px solid #ff006e;
    opacity: 0.7;
    animation: ss-ringGlitchOffset1 15s ease-in-out infinite;
}
.ss-ring-glitch::after {
    content: '';
    position: absolute;
    inset: -2px;
    border-radius: 50%;
    border: 2px solid #00f0ff;
    opacity: 0.7;
    animation: ss-ringGlitchOffset2 15s ease-in-out infinite;
}

@keyframes ss-ringGlitch {
    0%, 88% { opacity: 0; }
    89% { opacity: 1; } 90% { opacity: 0; }
    91% { opacity: 1; } 92% { opacity: 0; }
    93% { opacity: 0.8; } 94% { opacity: 0; }
    95%, 100% { opacity: 0; }
}
@keyframes ss-ringGlitchOffset1 {
    0%, 88% { transform: translate(0, 0); }
    89% { transform: translate(-5px, -3px); }
    90% { transform: translate(3px, 2px); }
    91% { transform: translate(-4px, 2px); }
    92% { transform: translate(2px, -3px); }
    93% { transform: translate(-3px, 1px); }
    94% { transform: translate(4px, -2px); }
    95%, 100% { transform: translate(0, 0); }
}
@keyframes ss-ringGlitchOffset2 {
    0%, 88% { transform: translate(0, 0); }
    89% { transform: translate(4px, 2px); }
    90% { transform: translate(-3px, -2px); }
    91% { transform: translate(3px, -2px); }
    92% { transform: translate(-2px, 3px); }
    93% { transform: translate(3px, -1px); }
    94% { transform: translate(-4px, 2px); }
    95%, 100% { transform: translate(0, 0); }
}

/* Glitch lines */
.ss-glitch-lines {
    position: absolute;
    top: 50%; left: 50%;
    width: 400px; height: 300px;
    transform: translate(-50%, -50%);
    overflow: hidden;
    opacity: 0;
    animation: ss-glitchLinesAppear 15s ease-in-out infinite;
    pointer-events: none;
}

.ss-glitch-line {
    position: absolute;
    left: 0; width: 100%; height: 2px;
    background: linear-gradient(90deg,
        transparent 0%, rgba(212, 175, 55, 0.5) 20%,
        rgba(255, 255, 255, 0.8) 50%,
        rgba(212, 175, 55, 0.5) 80%, transparent 100%
    );
}

@keyframes ss-glitchLinesAppear {
    0%, 89% { opacity: 0; }
    90% { opacity: 1; } 91% { opacity: 0; }
    92% { opacity: 0.7; } 93% { opacity: 0; }
    94% { opacity: 0.5; }
    95%, 100% { opacity: 0; }
}

/* Eclipse rings */
.ss-eclipse-ring {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    pointer-events: none;
}

.ss-eclipse-ring-1 {
    width: 280px; height: 280px;
    border: 2px solid transparent;
    background:
        linear-gradient(var(--ss-bg), var(--ss-bg)) padding-box,
        conic-gradient(
            from 0deg,
            transparent 0deg, rgba(212, 175, 55, 0.6) 30deg,
            rgba(244, 228, 166, 0.8) 60deg, rgba(212, 175, 55, 0.6) 90deg,
            transparent 120deg, transparent 240deg,
            rgba(212, 175, 55, 0.4) 270deg, rgba(244, 228, 166, 0.6) 300deg,
            rgba(212, 175, 55, 0.4) 330deg, transparent 360deg
        ) border-box;
    animation: ss-eclipseRotate1 20s linear infinite;
    filter: blur(1px);
    opacity: 0;
}

.ss-eclipse-ring-2 {
    width: 300px; height: 300px;
    border: 1px solid transparent;
    background:
        linear-gradient(var(--ss-bg), var(--ss-bg)) padding-box,
        conic-gradient(
            from 180deg,
            transparent 0deg, rgba(212, 175, 55, 0.3) 45deg,
            rgba(244, 228, 166, 0.5) 90deg, rgba(212, 175, 55, 0.3) 135deg,
            transparent 180deg, transparent 360deg
        ) border-box;
    animation: ss-eclipseRotate2 25s linear infinite reverse;
    filter: blur(2px);
    opacity: 0;
}

.ss-eclipse-ring-3 {
    width: 320px; height: 320px;
    box-shadow:
        inset 0 0 60px rgba(212, 175, 55, 0.1),
        0 0 80px rgba(212, 175, 55, 0.05);
    animation: ss-eclipseGlow 8s ease-in-out infinite;
    opacity: 0;
}

@keyframes ss-eclipseRotate1 {
    0%, 15% { transform: translate(-50%, -50%) rotate(0deg); opacity: 0; }
    20% { opacity: 1; }
    45% { opacity: 1; }
    50%, 100% { transform: translate(-50%, -50%) rotate(180deg); opacity: 0; }
}
@keyframes ss-eclipseRotate2 {
    0%, 40% { transform: translate(-50%, -50%) rotate(0deg); opacity: 0; }
    45% { opacity: 0.8; }
    70% { opacity: 0.8; }
    75%, 100% { transform: translate(-50%, -50%) rotate(-120deg); opacity: 0; }
}
@keyframes ss-eclipseGlow {
    0%, 30% {
        opacity: 0;
        box-shadow: inset 0 0 60px rgba(212, 175, 55, 0.1), 0 0 80px rgba(212, 175, 55, 0.05);
    }
    40% { opacity: 0.6; }
    50% {
        opacity: 1;
        box-shadow: inset 0 0 100px rgba(212, 175, 55, 0.2), 0 0 150px rgba(212, 175, 55, 0.15);
    }
    60% { opacity: 0.6; }
    70%, 100% {
        opacity: 0;
        box-shadow: inset 0 0 60px rgba(212, 175, 55, 0.1), 0 0 80px rgba(212, 175, 55, 0.05);
    }
}

/* Corona flares */
.ss-corona-flare {
    position: absolute;
    top: 50%; left: 50%;
    width: 350px; height: 350px;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    background: radial-gradient(ellipse at center,
        transparent 40%, rgba(212, 175, 55, 0.05) 50%,
        rgba(244, 228, 166, 0.1) 55%, rgba(212, 175, 55, 0.05) 60%,
        transparent 70%
    );
    opacity: 0;
    animation: ss-coronaBurst1 12s ease-in-out infinite;
}
.ss-corona-flare:nth-child(8) {
    animation: ss-coronaBurst2 15s ease-in-out infinite;
    transform: translate(-50%, -50%) rotate(45deg);
}

@keyframes ss-coronaBurst1 {
    0%, 60% { opacity: 0; transform: translate(-50%, -50%) scale(1); }
    65% { opacity: 0; }
    70% { opacity: 1; transform: translate(-50%, -50%) scale(1.02); }
    75% { opacity: 0.8; }
    80% { opacity: 0.3; transform: translate(-50%, -50%) scale(1.08); }
    85%, 100% { opacity: 0; transform: translate(-50%, -50%) scale(1); }
}
@keyframes ss-coronaBurst2 {
    0%, 20% { opacity: 0; transform: translate(-50%, -50%) rotate(45deg) scale(1); }
    25% { opacity: 0; }
    30% { opacity: 0.8; transform: translate(-50%, -50%) rotate(45deg) scale(1.03); }
    40% { opacity: 0.5; }
    45% { opacity: 0; transform: translate(-50%, -50%) rotate(45deg) scale(1.1); }
    50%, 100% { opacity: 0; }
}

/* Light flicker */
.ss-light-flicker {
    position: absolute;
    top: 50%; left: 50%;
    width: 400px; height: 400px;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    background: radial-gradient(circle at 30% 30%,
        rgba(244, 228, 166, 0.15) 0%, transparent 50%
    );
    opacity: 0;
    animation: ss-flicker 10s ease-in-out infinite;
}

@keyframes ss-flicker {
    0%, 45% { opacity: 0; }
    48% { opacity: 0.6; }
    50% { opacity: 0.2; }
    52% { opacity: 0.8; }
    55% { opacity: 0; }
    100% { opacity: 0; }
}

/* ============================================
   LOGO TEXT
   ============================================ */
.ss-logo {
    position: relative;
    text-align: center;
    padding: 60px;
}

.ss-logo-text {
    font-size: 64px;
    font-weight: 200;
    letter-spacing: 25px;
    color: #fff;
    text-shadow: 0 0 40px rgba(212, 175, 55, 0.3);
    animation: ss-logoBreath 6s ease-in-out infinite, ss-glitchText 15s ease-in-out infinite;
    position: relative;
}

.ss-logo-text::before,
.ss-logo-text::after {
    content: "LE SON\2019";
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    opacity: 0;
}
.ss-logo-text::before {
    color: #ff006e;
    animation: ss-glitchBefore 15s ease-in-out infinite;
    clip-path: polygon(0 0, 100% 0, 100% 45%, 0 45%);
}
.ss-logo-text::after {
    color: #00f0ff;
    animation: ss-glitchAfter 15s ease-in-out infinite;
    clip-path: polygon(0 55%, 100% 55%, 100% 100%, 0 100%);
}

@keyframes ss-glitchText {
    0%, 89% { transform: translate(0); }
    90% { transform: translate(-3px, 1px); }
    91% { transform: translate(2px, -1px); }
    92% { transform: translate(-1px, 2px); }
    93% { transform: translate(1px, -2px); }
    94% { transform: translate(-2px, 1px); }
    95%, 100% { transform: translate(0); }
}
@keyframes ss-glitchBefore {
    0%, 89% { opacity: 0; transform: translate(0); }
    90% { opacity: 0.8; transform: translate(-4px, -2px); }
    91% { opacity: 0; transform: translate(3px, 1px); }
    92% { opacity: 0.6; transform: translate(-2px, 1px); }
    93% { opacity: 0; }
    94% { opacity: 0.5; transform: translate(2px, -1px); }
    95%, 100% { opacity: 0; transform: translate(0); }
}
@keyframes ss-glitchAfter {
    0%, 89% { opacity: 0; transform: translate(0); }
    90% { opacity: 0; }
    91% { opacity: 0.8; transform: translate(4px, 2px); }
    92% { opacity: 0; transform: translate(-3px, -1px); }
    93% { opacity: 0.6; transform: translate(2px, -1px); }
    94% { opacity: 0; }
    95%, 100% { opacity: 0; transform: translate(0); }
}
@keyframes ss-logoBreath {
    0%, 100% {
        opacity: 1;
        text-shadow: 0 0 40px rgba(212, 175, 55, 0.3);
    }
    50% {
        opacity: 0.9;
        text-shadow: 0 0 60px rgba(212, 175, 55, 0.5);
    }
}

.ss-logo-text span {
    background: linear-gradient(180deg, var(--gold-light) 0%, var(--gold) 50%, var(--gold-dark) 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.ss-logo-sub {
    font-size: 11px;
    letter-spacing: 6px;
    text-transform: uppercase;
    color: rgba(212, 175, 55, 0.4);
    margin-top: 15px;
}

/* ============================================
   DECRYPT TEXT
   ============================================ */
.ss-decrypt-container {
    margin-top: 20px;
    font-family: 'Courier New', monospace;
    font-size: 10px;
    letter-spacing: 6px;
    color: rgba(212, 175, 55, 0.6);
    text-transform: uppercase;
    display: flex;
    justify-content: center;
    gap: 2px;
}

.ss-decrypt-char {
    display: inline-block;
    min-width: 10px;
    text-align: center;
    animation: ss-charGlow 3s ease-in-out infinite;
}
.ss-decrypt-char.space { min-width: 15px; }
.ss-decrypt-char.decrypting {
    color: rgba(244, 228, 166, 0.9);
    text-shadow: 0 0 8px rgba(212, 175, 55, 0.8);
}
.ss-decrypt-char.revealed {
    color: rgba(212, 175, 55, 0.7);
    text-shadow: 0 0 5px rgba(212, 175, 55, 0.4);
}

@keyframes ss-charGlow {
    0%, 100% { opacity: 0.7; }
    50% { opacity: 1; }
}

/* ============================================
   DATA BARS
   ============================================ */
.ss-data-section {
    display: flex;
    align-items: flex-end;
    gap: 25px;
    height: 100px;
    padding: 0 20px;
}

.ss-data-bar {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.ss-bar-track {
    width: 4px; height: 70px;
    background: rgba(212, 175, 55, 0.08);
    border-radius: 2px;
    position: relative;
    overflow: hidden;
}

.ss-bar-fill {
    position: absolute;
    bottom: 0; width: 100%;
    background: linear-gradient(0deg, var(--gold-dark), var(--gold), var(--gold-light));
    border-radius: 2px;
    transition: height 2s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 0 8px rgba(212, 175, 55, 0.4);
}

.ss-bar-fill::after {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 10px;
    background: linear-gradient(180deg, rgba(255,255,255,0.4), transparent);
    animation: ss-barScan 2s ease-in-out infinite;
}

@keyframes ss-barScan {
    0%, 100% { transform: translateY(0); opacity: 0; }
    50% { transform: translateY(60px); opacity: 1; }
}

.ss-bar-label {
    font-size: 8px;
    letter-spacing: 1px;
    color: rgba(212, 175, 55, 0.4);
    text-transform: uppercase;
}

/* ============================================
   TIME DISPLAY
   ============================================ */
.ss-time-section {
    margin-top: 25px;
    text-align: center;
}

.ss-time {
    font-size: 16px;
    font-weight: 300;
    color: rgba(255, 255, 255, 0.6);
    letter-spacing: 4px;
}

.ss-date {
    font-size: 9px;
    letter-spacing: 3px;
    color: rgba(212, 175, 55, 0.3);
    text-transform: uppercase;
    margin-top: 5px;
}

/* ============================================
   METRICS
   ============================================ */
.ss-metrics {
    display: flex;
    gap: 60px;
    margin-top: 40px;
}

.ss-metric { text-align: center; position: relative; }

.ss-metric-value {
    font-size: 32px;
    font-weight: 200;
    color: #fff;
    letter-spacing: 2px;
}

.ss-metric-value .ss-unit {
    font-size: 14px;
    color: rgba(212, 175, 55, 0.5);
    margin-left: 2px;
}

.ss-metric-label {
    font-size: 9px;
    letter-spacing: 3px;
    color: rgba(212, 175, 55, 0.4);
    text-transform: uppercase;
    margin-top: 8px;
}

.ss-metric-dot {
    display: inline-block;
    width: 4px; height: 4px;
    background: var(--gold);
    border-radius: 50%;
    margin-right: 10px;
    animation: ss-dotPulse 2s ease-in-out infinite;
    box-shadow: 0 0 8px var(--gold);
}
.ss-metric:nth-child(2) .ss-metric-dot { animation-delay: 0.3s; }
.ss-metric:nth-child(3) .ss-metric-dot { animation-delay: 0.6s; }

@keyframes ss-dotPulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(0.8); }
}

/* ============================================
   TOUCH PROMPT
   ============================================ */
.ss-touch-prompt {
    position: absolute;
    bottom: 35px; left: 50%;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    gap: 15px;
    animation: ss-promptFade 4s ease-in-out infinite;
}

@keyframes ss-promptFade {
    0%, 100% { opacity: 0.2; }
    50% { opacity: 0.5; }
}

.ss-prompt-line {
    width: 40px; height: 1px;
    background: linear-gradient(90deg, transparent, rgba(212, 175, 55, 0.4));
}
.ss-prompt-line:last-child {
    background: linear-gradient(90deg, rgba(212, 175, 55, 0.4), transparent);
}

.ss-prompt-text {
    font-size: 9px;
    letter-spacing: 4px;
    color: rgba(212, 175, 55, 0.4);
    text-transform: uppercase;
}

/* ============================================
   BIOMETRIC ACCESS OVERLAY
   ============================================ */
.access-overlay {
    position: fixed;
    inset: 0;
    background: #000;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
    overflow: hidden;
}

.access-overlay.active {
    opacity: 1;
    pointer-events: all;
}

/* CSS variables for access overlay */
.access-overlay {
    --gold-light: #f4e4a6;
    --gold: #d4af37;
    --gold-dark: #a67c00;
}

/* Result color schemes - only for final text */
.access-overlay .access-level,
.access-overlay .access-granted,
.access-overlay .access-welcome-section {
    --result-accent: var(--gold);
    --result-accent-light: var(--gold-light);
    --result-accent-dark: var(--gold-dark);
    --result-accent-rgb: 212, 175, 55;
}

.access-overlay.visitor .access-level,
.access-overlay.visitor .access-granted,
.access-overlay.visitor .access-welcome-section {
    --result-accent: #a8b4c0;
    --result-accent-light: #d4dce4;
    --result-accent-dark: #6b7a8a;
    --result-accent-rgb: 168, 180, 192;
}

/* Grid background */
.access-grid {
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(212, 175, 55, 0.03) 1px, transparent 1px),
        linear-gradient(90deg, rgba(212, 175, 55, 0.03) 1px, transparent 1px);
    background-size: 40px 40px;
    opacity: 0;
}

.access-overlay.active .access-grid {
    animation: gridFadeIn 0.5s ease-out forwards;
}

@keyframes gridFadeIn {
    to { opacity: 1; }
}

/* Scan lines */
.access-scanline {
    position: fixed;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(212, 175, 55, 0.5) 20%,
        rgba(244, 228, 166, 1) 50%,
        rgba(212, 175, 55, 0.5) 80%,
        transparent 100%
    );
    box-shadow: 0 0 30px rgba(212, 175, 55, 0.8), 0 0 60px rgba(212, 175, 55, 0.4);
    opacity: 0;
    top: 0;
}

.access-scanline.v {
    width: 3px;
    height: 100%;
    left: 0;
    top: 0;
    background: linear-gradient(180deg,
        transparent 0%,
        rgba(212, 175, 55, 0.5) 20%,
        rgba(244, 228, 166, 1) 50%,
        rgba(212, 175, 55, 0.5) 80%,
        transparent 100%
    );
}

.access-overlay.active .access-scanline.h1 {
    animation: scanDown 1s ease-out 0.2s forwards;
}
.access-overlay.active .access-scanline.h2 {
    animation: scanUp 1s ease-out 0.4s forwards;
}
.access-overlay.active .access-scanline.v1 {
    animation: scanRight 1s ease-out 0.3s forwards;
}
.access-overlay.active .access-scanline.v2 {
    animation: scanLeft 1s ease-out 0.5s forwards;
}

@keyframes scanDown {
    0% { top: 0; opacity: 1; }
    100% { top: 100%; opacity: 0; }
}
@keyframes scanUp {
    0% { top: 100%; opacity: 1; }
    100% { top: 0; opacity: 0; }
}
@keyframes scanRight {
    0% { left: 0; opacity: 1; }
    100% { left: 100%; opacity: 0; }
}
@keyframes scanLeft {
    0% { left: 100%; opacity: 1; }
    100% { left: 0; opacity: 0; }
}

/* Central content */
.access-content {
    text-align: center;
    position: relative;
    z-index: 10;
}

/* Biometric ring scanner */
.bio-scanner {
    width: 250px;
    height: 250px;
    position: relative;
    margin: 0 auto 50px;
}

.bio-ring {
    position: absolute;
    inset: 0;
    border: 2px solid var(--gold);
    border-radius: 50%;
    opacity: 0;
}

.bio-ring.outer {
    border-color: rgba(212, 175, 55, 0.3);
    border-style: dashed;
}
.access-overlay.active .bio-ring.outer {
    animation: bioRingAppear 0.5s ease-out 0.8s forwards, bioRingSpin 10s linear 1.3s infinite;
}

.bio-ring.middle {
    inset: 20px;
    border-width: 1px;
    border-color: rgba(212, 175, 55, 0.5);
}
.access-overlay.active .bio-ring.middle {
    animation: bioRingAppear 0.5s ease-out 1s forwards, bioRingSpin 8s linear 1.5s infinite reverse;
}

.bio-ring.inner {
    inset: 40px;
    border-color: var(--gold);
}
.access-overlay.active .bio-ring.inner {
    animation: bioRingAppear 0.5s ease-out 1.2s forwards, bioRingPulse 1.5s ease-in-out 1.7s infinite;
}

@keyframes bioRingAppear {
    0% { opacity: 0; transform: scale(0.5); }
    100% { opacity: 1; transform: scale(1); }
}
@keyframes bioRingSpin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}
@keyframes bioRingPulse {
    0%, 100% { box-shadow: 0 0 20px rgba(212, 175, 55, 0.3), inset 0 0 20px rgba(212, 175, 55, 0.1); }
    50% { box-shadow: 0 0 40px rgba(212, 175, 55, 0.6), inset 0 0 40px rgba(212, 175, 55, 0.2); }
}

/* Scanning arc */
.bio-arc {
    position: absolute;
    inset: 40px;
    border: 3px solid transparent;
    border-top-color: var(--gold-light);
    border-radius: 50%;
    opacity: 0;
}
.access-overlay.active .bio-arc {
    animation: bioRingAppear 0.3s ease-out 1.4s forwards, bioArcSpin 1s linear 1.7s infinite;
}

@keyframes bioArcSpin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* Lock icon */
.bio-icon {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 80px;
    height: 80px;
    opacity: 0;
}
.access-overlay.active .bio-icon {
    animation: iconAppear 0.5s ease-out 1.5s forwards;
}

@keyframes iconAppear {
    0% { opacity: 0; transform: translate(-50%, -50%) scale(0); }
    60% { transform: translate(-50%, -50%) scale(1.2); }
    100% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

.bio-icon svg {
    width: 100%;
    height: 100%;
    fill: none;
    stroke: var(--gold);
    stroke-width: 1.5;
}

/* Status text */
.bio-status {
    font-family: 'Courier New', monospace;
    font-size: 11px;
    letter-spacing: 4px;
    color: var(--gold);
    text-transform: uppercase;
    height: 20px;
    margin-bottom: 30px;
    opacity: 0;
}
.access-overlay.active .bio-status {
    animation: statusAppear 0.3s ease-out 1s forwards;
}

@keyframes statusAppear {
    to { opacity: 1; }
}

/* Protocol text */
.access-protocol {
    font-family: 'Courier New', monospace;
    font-size: 10px;
    letter-spacing: 3px;
    color: rgba(212, 175, 55, 0.4);
    margin-bottom: 15px;
    opacity: 0;
}
.access-overlay.active .access-protocol {
    animation: textReveal 0.4s ease-out 0.6s forwards;
}

@keyframes textReveal {
    0% { opacity: 0; transform: translateY(20px); }
    100% { opacity: 1; transform: translateY(0); }
}

/* Security level */
.access-level {
    font-size: 12px;
    letter-spacing: 6px;
    color: var(--result-accent);
    text-transform: uppercase;
    margin-bottom: 10px;
    opacity: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
}
.access-overlay.active .access-level {
    animation: textReveal 0.4s ease-out 2.8s forwards;
}

.access-level::before,
.access-level::after {
    content: '';
    width: 60px;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--result-accent));
}
.access-level::after {
    background: linear-gradient(90deg, var(--result-accent), transparent);
}

/* ACCESS GRANTED */
.access-granted {
    font-size: 38px;
    font-weight: 200;
    letter-spacing: 18px;
    color: #fff;
    text-transform: uppercase;
    margin-bottom: 40px;
    opacity: 0;
    text-shadow: 0 0 30px rgba(var(--result-accent-rgb), 0.5);
    position: relative;
}
.access-overlay.active .access-granted {
    animation: grantedReveal 0.6s ease-out 3s forwards;
}

@keyframes grantedReveal {
    0% {
        opacity: 0;
        transform: translateY(30px) scale(0.9);
        letter-spacing: 30px;
    }
    50% {
        text-shadow: 0 0 60px rgba(212, 175, 55, 1), 0 0 100px rgba(212, 175, 55, 0.5);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
        letter-spacing: 18px;
        text-shadow: 0 0 30px rgba(212, 175, 55, 0.5);
    }
}

/* Welcome section */
.access-welcome-section {
    opacity: 0;
}
.access-overlay.active .access-welcome-section {
    animation: textReveal 0.5s ease-out 3.2s forwards;
}

.access-welcome {
    font-size: 42px;
    font-weight: 200;
    letter-spacing: 12px;
    color: #fff;
    margin-bottom: 20px;
    text-shadow: 0 0 40px rgba(var(--result-accent-rgb), 0.5);
}

.access-welcome span {
    background: linear-gradient(180deg, var(--result-accent-light) 0%, var(--result-accent) 50%, var(--result-accent-dark) 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    text-transform: uppercase;
}

.access-username {
    font-size: 16px;
    font-weight: 300;
    letter-spacing: 6px;
    color: rgba(var(--result-accent-rgb), 0.7);
    text-transform: uppercase;
}

/* Data readouts */
.access-data {
    position: absolute;
    font-family: 'Courier New', monospace;
    font-size: 9px;
    letter-spacing: 2px;
    color: rgba(212, 175, 55, 0.4);
    opacity: 0;
}
.access-overlay.active .access-data {
    animation: dataAppear 0.3s ease-out forwards;
}

@keyframes dataAppear {
    to { opacity: 1; }
}

.access-data.tl { top: 60px; left: 60px; text-align: left; animation-delay: 0.7s; }
.access-data.tr { top: 60px; right: 60px; text-align: right; animation-delay: 0.9s; }
.access-data.bl { bottom: 60px; left: 60px; text-align: left; animation-delay: 1.1s; }
.access-data.br { bottom: 60px; right: 60px; text-align: right; animation-delay: 1.3s; }

.access-data div {
    margin: 5px 0;
}

.access-data .value {
    color: rgba(212, 175, 55, 0.7);
}

/* Corner brackets */
.access-corner {
    position: absolute;
    width: 100px;
    height: 100px;
    opacity: 0;
}
.access-overlay.active .access-corner {
    animation: cornerAppear 0.4s ease-out 0.5s forwards;
}

@keyframes cornerAppear {
    0% { opacity: 0; }
    100% { opacity: 1; }
}

.access-corner::before,
.access-corner::after {
    content: '';
    position: absolute;
    background: var(--gold);
}
.access-corner::before {
    width: 2px;
    height: 60px;
}
.access-corner::after {
    width: 60px;
    height: 2px;
}

.access-corner.tl { top: 30px; left: 30px; }
.access-corner.tl::before, .access-corner.tl::after { top: 0; left: 0; }

.access-corner.tr { top: 30px; right: 30px; }
.access-corner.tr::before { top: 0; right: 0; }
.access-corner.tr::after { top: 0; right: 0; }

.access-corner.bl { bottom: 30px; left: 30px; }
.access-corner.bl::before { bottom: 0; left: 0; }
.access-corner.bl::after { bottom: 0; left: 0; }

.access-corner.br { bottom: 30px; right: 30px; }
.access-corner.br::before { bottom: 0; right: 0; }
.access-corner.br::after { bottom: 0; right: 0; }

/* Particle burst */
.access-particles {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 600px;
    height: 600px;
    pointer-events: none;
}

.access-particle {
    position: absolute;
    width: 3px;
    height: 3px;
    background: var(--gold);
    border-radius: 50%;
    top: 50%;
    left: 50%;
    opacity: 0;
    box-shadow: 0 0 6px var(--gold);
}
.access-overlay.active .access-particle {
    animation: particleBurst 1.5s ease-out forwards;
}

@keyframes particleBurst {
    0% {
        transform: translate(-50%, -50%);
        opacity: 1;
    }
    100% {
        transform: translate(-50%, -50%) translateX(var(--tx)) translateY(var(--ty));
        opacity: 0;
    }
}

/* Flash effect */
.access-flash {
    position: fixed;
    inset: 0;
    background: rgba(212, 175, 55, 0.3);
    opacity: 0;
    pointer-events: none;
}
.access-overlay.active .access-flash {
    animation: flashBang 0.5s ease-out 2.9s;
}

@keyframes flashBang {
    0% { opacity: 0; }
    20% { opacity: 1; }
    100% { opacity: 0; }
}

/* Horizontal lines decoration */
.access-hlines {
    position: absolute;
    left: 0;
    right: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
    opacity: 0;
}
.access-hlines.top { top: 150px; }
.access-hlines.bottom { bottom: 150px; }

.access-overlay.active .access-hlines {
    animation: hlinesAppear 0.5s ease-out 0.6s forwards;
}

@keyframes hlinesAppear {
    to { opacity: 0.3; }
}

.access-hline {
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--gold), transparent);
}

/* ============================================
   VISITOR MODE - Industrial/Austere
   ============================================ */
.access-overlay.visitor .access-grid {
    background-image:
        linear-gradient(rgba(100, 120, 140, 0.03) 1px, transparent 1px),
        linear-gradient(90deg, rgba(100, 120, 140, 0.03) 1px, transparent 1px);
}

.access-overlay.visitor .access-scanline {
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(150, 170, 190, 0.4) 20%,
        rgba(200, 210, 220, 0.8) 50%,
        rgba(150, 170, 190, 0.4) 80%,
        transparent 100%
    );
    box-shadow: 0 0 20px rgba(150, 170, 190, 0.5);
}

.access-overlay.visitor .access-scanline.v {
    background: linear-gradient(180deg,
        transparent 0%,
        rgba(150, 170, 190, 0.4) 20%,
        rgba(200, 210, 220, 0.8) 50%,
        rgba(150, 170, 190, 0.4) 80%,
        transparent 100%
    );
}

.access-overlay.visitor .access-corner::before,
.access-overlay.visitor .access-corner::after {
    background: #5a6a7a;
}

.access-overlay.visitor .access-hline {
    background: linear-gradient(90deg, transparent, #5a6a7a, transparent);
}

.access-overlay.visitor .access-data {
    color: rgba(120, 140, 160, 0.4);
}

.access-overlay.visitor .access-data .value {
    color: rgba(140, 160, 180, 0.6);
}

.access-overlay.visitor .bio-ring {
    border-color: #5a6a7a;
}

.access-overlay.visitor .bio-ring.outer {
    border-color: rgba(100, 120, 140, 0.3);
}

.access-overlay.visitor .bio-ring.middle {
    border-color: rgba(120, 140, 160, 0.4);
}

.access-overlay.visitor .bio-ring.inner {
    border-color: #6a7a8a;
}

.access-overlay.visitor.active .bio-ring.inner {
    animation: bioRingAppear 0.5s ease-out 1.2s forwards, bioRingPulseVisitor 1.5s ease-in-out 1.7s infinite;
}

@keyframes bioRingPulseVisitor {
    0%, 100% { box-shadow: 0 0 15px rgba(100, 120, 140, 0.2), inset 0 0 15px rgba(100, 120, 140, 0.1); }
    50% { box-shadow: 0 0 25px rgba(100, 120, 140, 0.3), inset 0 0 25px rgba(100, 120, 140, 0.15); }
}

.access-overlay.visitor .bio-arc {
    border-top-color: #8a9aaa;
}

.access-overlay.visitor .bio-icon svg {
    stroke: #7a8a9a;
}

.access-overlay.visitor .bio-status {
    color: #7a8a9a;
}

.access-overlay.visitor .access-protocol {
    color: rgba(100, 120, 140, 0.4);
}

.access-overlay.visitor .access-particle {
    background: #8a9aaa;
    box-shadow: 0 0 4px #8a9aaa;
}

.access-overlay.visitor .access-flash {
    background: rgba(150, 170, 190, 0.15);
}

/* Visitor: less particles, smaller burst */
.access-overlay.visitor .access-particles {
    transform: translate(-50%, -50%) scale(0.7);
}

.access-overlay.visitor .access-granted {
    text-shadow: 0 0 30px rgba(168, 180, 192, 0.5);
}
