 :root{
    --offline-backdrop: rgba(15,23,42,0.65);
    --offline-card-bg: #fff;
    --offline-primary: #16a34a;
    --offline-accent: #f59e0b;
    --offline-text: #0f172a;
    --offline-muted: #64748b;
    --offline-shadow: 0 20px 50px rgba(15,23,42,0.25);
    --offline-radius: 20px;
    --offline-font: Poppins, Segoe UI, sans-serif;
    --offline-fade: 220ms;
    --offline-pulse: 1600ms;
    --offline-shake: 500ms;
    --offline-float: 2400ms;
}

 html.offline-active,
 body.offline-active{
    overflow:hidden;
    height:100%;
 }

 .offline-overlay{
    position:fixed;
    inset:0;
    background:radial-gradient(1200px circle at 30% 20%, #101827 0%, #0a0f18 55%, #070b12 100%);
    align-items:center;
    justify-content:center;
    z-index:99999;
    font-family:var(--offline-font);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    overflow:hidden;
    touch-action:none;
    transition:opacity var(--offline-fade) ease, visibility 0s linear var(--offline-fade);
}

 .offline-overlay.show{
    display:flex;
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transition:opacity var(--offline-fade) ease;
}

 .offline-card{
    width:min(900px,94vw);
    background:transparent;
    border-radius:18px;
    padding:12px 10px 18px;
    box-shadow:none;
    text-align:center;
    color:#e5e7eb;
    transform:translateY(16px) scale(0.98);
    opacity:0;
    transition:transform var(--offline-fade) ease, opacity var(--offline-fade) ease;
    animation:offlineFloat var(--offline-float) ease-in-out infinite;
    max-height:92vh;
    overflow:hidden;
}

 .offline-overlay.show .offline-card{
    transform:translateY(0) scale(1);
    opacity:1;
}

 .offline-indicator-bar{
    position:fixed;
    top:16px;
    right:16px;
    z-index:100000;
    background:rgba(15,23,42,0.92);
    color:#fff;
    border-radius:999px;
    padding:10px 16px;
    display:flex;
    align-items:center;
    gap:10px;
    font-size:12px;
    font-weight:600;
    letter-spacing:.2px;
    opacity:0;
    transform:translateY(-12px);
    pointer-events:none;
    transition:opacity 220ms ease, transform 220ms ease;
    box-shadow:0 12px 30px rgba(15,23,42,0.35);
}

 .offline-indicator-bar.show{
    opacity:1;
    transform:translateY(0);
}

 .offline-indicator-dot{
    width:8px;
    height:8px;
    border-radius:50%;
    background:#ef4444;
    box-shadow:0 0 0 6px rgba(239,68,68,0.25);
    animation:offlinePulse 1.6s ease-in-out infinite;
}

 .offline-indicator-wave{
    width:34px;
    height:10px;
    background:linear-gradient(90deg, rgba(239,68,68,0.2), rgba(239,68,68,0.6), rgba(239,68,68,0.2));
    border-radius:999px;
    position:relative;
    overflow:hidden;
}

 .offline-indicator-wave::after{
    content:"";
    position:absolute;
    inset:0;
    background:linear-gradient(90deg, transparent, rgba(255,255,255,0.7), transparent);
    animation:offlineWave 1.4s ease-in-out infinite;
}

 .offline-visual{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:22px;
    margin-bottom:8px;
    flex-wrap:wrap;
    position:relative;
}

 .offline-illustration{
    width:min(520px, 92vw);
    aspect-ratio: 16 / 9;
    border-radius:18px;
    box-shadow:0 18px 36px rgba(15,23,42,0.28);
    transform-style:preserve-3d;
    animation:offlineOrbit 6s ease-in-out infinite;
    position:relative;
    overflow:hidden;
}

 .offline-illustration::after{
    content:"";
    position:absolute;
    inset:8px;
    border-radius:14px;
    background:linear-gradient(120deg, rgba(255,255,255,0.35), rgba(255,255,255,0));
    pointer-events:none;
}

 .offline-illustration img{
    width:100%;
    height:100%;
    object-fit:contain;
    display:block;
}

 .offline-icon{
    width:92px;
    height:92px;
    margin:0 auto 14px;
    border-radius:50%;
    background:rgba(22,163,74,0.08);
    display:flex;
    align-items:center;
    justify-content:center;
    position:relative;
    overflow:hidden;
    display:none;
}

 .offline-icon svg{
    width:54px;
    height:54px;
    stroke:var(--offline-primary);
    animation:offlineWiggle 2.4s ease-in-out infinite;
}

 @media (max-width: 768px){
    .offline-card{
        width:min(92vw, 520px);
        padding:10px 10px 16px;
    }
    .offline-title{
        font-size:20px;
    }
    .offline-illustration{
        width:min(420px, 92vw);
    }
    .offline-message{
        font-size:13px;
        -webkit-line-clamp:3;
    }
    .offline-actions{
        gap:8px;
    }
 }

 @media (max-width: 480px){
    .offline-card{
        width:92vw;
        padding:6px 4px 14px;
    }
    .offline-visual{
        gap:10px;
    }
    .offline-illustration{
        width:92vw;
    }
    .offline-title{
        font-size:18px;
    }
    .offline-indicator-bar{
        top:10px;
        right:10px;
        padding:8px 12px;
        font-size:11px;
    }
    .offline-retry{
        font-size:12px;
        padding:8px 14px;
    }
 }

 .offline-icon::after{
    content:"";
    position:absolute;
    inset:10px;
    border-radius:50%;
    border:2px solid rgba(22,163,74,0.25);
    animation:offlinePulse var(--offline-pulse) ease-in-out infinite;
}

 .offline-title{
    font-size:22px;
    font-weight:700;
    margin:10px 0 4px;
    letter-spacing:0.2px;
    color:#ffffff;
    text-shadow:0 8px 30px rgba(0,0,0,0.45), 0 1px 0 rgba(255,255,255,0.05);
    transform:perspective(800px) translateZ(0);
    animation:offlineTitleTilt 6s ease-in-out infinite;
}

 .offline-message{
    font-size:13px;
    color:#94a3b8;
    line-height:1.5;
    margin-bottom:14px;
    display:-webkit-box;
    -webkit-line-clamp:4;
    -webkit-box-orient:vertical;
    overflow:hidden;
}

 .offline-status-chip{
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:6px 12px;
    border-radius:999px;
    background:rgba(239,68,68,0.12);
    color:#b91c1c;
    font-weight:700;
    font-size:12px;
    margin:6px auto 10px;
}

.offline-title-dup{
    font-size:22px;
    font-weight:800;
    color:rgba(255,255,255,0.12);
    letter-spacing:0.28px;
    transform:translateY(-2px);
}

 .offline-title strong{
    color:#111827;
}

 .offline-subtitle{
    font-size:12px;
    color:#6b7280;
    margin-bottom:8px;
}

 .offline-actions{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    flex-wrap:wrap;
}

 .offline-link{
    font-size:12px;
    color:#374151;
    text-decoration:none;
    font-weight:600;
    padding:8px 12px;
    border-radius:999px;
    background:rgba(17,24,39,0.06);
    transition:transform .2s ease, background .2s ease;
 }

 .offline-link:hover{
    transform:translateY(-1px);
    background:rgba(17,24,39,0.12);
 }

 .offline-retry{
    background:#e5e7eb;
    color:#111827;
    border:none;
    padding:8px 16px;
    border-radius:999px;
    cursor:pointer;
    font-weight:600;
    font-size:12px;
    display:inline-flex;
    align-items:center;
    gap:8px;
    transition:transform .2s ease, box-shadow .2s ease, background .2s ease;
    box-shadow:0 8px 16px rgba(17,24,39,0.12);
}

 .offline-retry:hover{
    transform:translateY(-1px);
}

 .offline-indicator{
    font-size:12px;
    padding:6px 12px;
    border-radius:999px;
    background:rgba(245,158,11,0.12);
    color:var(--offline-accent);
    font-weight:600;
}

 .offline-shake{
    animation:offlineShake var(--offline-shake) ease;
}

 @keyframes offlineFadeIn{
    from{opacity:0}
    to{opacity:1}
}

 @keyframes offlinePulse{
    0%{transform:scale(1);opacity:.6}
    50%{transform:scale(1.08);opacity:1}
    100%{transform:scale(1);opacity:.6}
}

 @keyframes offlineFloat{
    0%{transform:translateY(6px)}
    50%{transform:translateY(0)}
    100%{transform:translateY(6px)}
}

 @keyframes offlineOrbit{
    0%{transform:translateY(0) rotateX(6deg) rotateY(-8deg)}
    50%{transform:translateY(-10px) rotateX(-6deg) rotateY(8deg)}
    100%{transform:translateY(0) rotateX(6deg) rotateY(-8deg)}
}

 @keyframes offlineWave{
    0%{transform:translateX(-100%)}
    100%{transform:translateX(100%)}
}

@keyframes offlineTitleTilt{
    0%{transform:perspective(800px) rotateX(0deg) rotateY(0deg)}
    50%{transform:perspective(800px) rotateX(6deg) rotateY(-6deg)}
    100%{transform:perspective(800px) rotateX(0deg) rotateY(0deg)}
}

 @keyframes offlineDrift{
    0%{transform:translate(0,0)}
    50%{transform:translate(10px,6px)}
    100%{transform:translate(0,0)}
}

 @keyframes offlineSway{
    0%{transform:translateY(0) rotate(0deg)}
    50%{transform:translateY(-4px) rotate(1.5deg)}
    100%{transform:translateY(0) rotate(0deg)}
}

 @keyframes offlineLeaf{
    0%{transform:translateY(0)}
    50%{transform:translateY(-6px)}
    100%{transform:translateY(0)}
}
 @keyframes offlineWiggle{
    0%{transform:rotate(0deg)}
    45%{transform:rotate(-6deg)}
    60%{transform:rotate(6deg)}
    100%{transform:rotate(0deg)}
}

 @keyframes offlineShake{
    0%{transform:translateX(0)}
    20%{transform:translateX(-6px)}
    40%{transform:translateX(6px)}
    60%{transform:translateX(-4px)}
    80%{transform:translateX(4px)}
    100%{transform:translateX(0)}
}
