<html lang="es"><head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>posCUB — El Sistema POS que tu negocio en Cuba necesita</title>
    <meta name="description" content="posCUB es el sistema de punto de venta mas completo para negocios en Cuba. Funciona 100% offline, sin internet. Descarga gratis.">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&amp;display=swap" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
    <style>
        :root {
            --primary: #c24f29;
            --primary-light: #e8754d;
            --primary-glow: rgba(194, 79, 41, 0.4);
            --primary-glow-strong: rgba(194, 79, 41, 0.7);
            --bg-dark: #0a0a1a;
            --bg-dark-2: #1a1a2e;
            --bg-card: rgba(255, 255, 255, 0.05);
            --bg-card-hover: rgba(255, 255, 255, 0.08);
            --border-card: rgba(255, 255, 255, 0.1);
            --border-card-hover: rgba(255, 255, 255, 0.2);
            --text-white: #ffffff;
            --text-body: rgba(255, 255, 255, 0.92);
            --text-muted: rgba(255, 255, 255, 0.72);
            --green: #10b981;
            --green-glow: rgba(16, 185, 129, 0.3);
            --purple: #8b5cf6;
            --blue: #3b82f6;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        html {
            scroll-behavior: smooth;
            font-size: 16px;
        }

        body {
            font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
            background: linear-gradient(180deg, var(--bg-dark) 0%, var(--bg-dark-2) 50%, var(--bg-dark) 100%);
            color: var(--text-body);
            line-height: 1.6;
            overflow-x: hidden;
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
            -webkit-tap-highlight-color: transparent;
        }

        /* ========== SCROLLBAR ========== */
        ::-webkit-scrollbar { width: 8px; }
        ::-webkit-scrollbar-track { background: var(--bg-dark); }
        ::-webkit-scrollbar-thumb { background: var(--primary); border-radius: 4px; }
        ::-webkit-scrollbar-thumb:hover { background: var(--primary-light); }

        /* ========== UTILITY ========== */
        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 24px;
        }

        .gradient-text {
            background: linear-gradient(135deg, var(--primary-light), var(--primary), #ff9a5c);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
        }

        .section-title {
            font-size: clamp(2rem, 5vw, 3rem);
            font-weight: 800;
            color: var(--text-white);
            text-align: center;
            margin-bottom: 1rem;
            line-height: 1.2;
        }

        .section-subtitle {
            font-size: clamp(1rem, 2.5vw, 1.2rem);
            color: var(--text-muted);
            text-align: center;
            max-width: 600px;
            margin: 0 auto 3rem;
            padding: 0 8px;
        }

        .btn {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 14px 32px;
            border-radius: 12px;
            font-weight: 600;
            font-size: 1rem;
            text-decoration: none;
            border: none;
            cursor: pointer;
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            font-family: inherit;
            position: relative;
            overflow: hidden;
            touch-action: manipulation;
        }

        .btn-primary {
            background: linear-gradient(135deg, var(--primary), var(--primary-light));
            color: white;
            box-shadow: 0 4px 24px var(--primary-glow);
        }
        .btn-primary:hover {
            transform: translateY(-2px);
            box-shadow: 0 8px 40px var(--primary-glow-strong);
        }

        .btn-whatsapp {
            background: linear-gradient(135deg, #25d366, #128c7e);
            color: white;
            box-shadow: 0 4px 24px var(--green-glow);
        }
        .btn-whatsapp:hover {
            transform: translateY(-2px);
            box-shadow: 0 8px 40px var(--green-glow);
        }

        .btn-outline {
            background: transparent;
            color: var(--text-white);
            border: 1px solid var(--border-card);
            backdrop-filter: blur(10px);
        }
        .btn-outline:hover {
            background: var(--bg-card-hover);
            border-color: var(--primary);
            color: var(--primary-light);
        }

        /* ========== ANIMATIONS ========== */
        .reveal {
            opacity: 0;
            transform: translateY(40px);
            transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
        }
        .reveal.active {
            opacity: 1;
            transform: translateY(0);
        }
        .reveal-delay-1 { transition-delay: 0.1s; }
        .reveal-delay-2 { transition-delay: 0.2s; }
        .reveal-delay-3 { transition-delay: 0.3s; }
        .reveal-delay-4 { transition-delay: 0.4s; }
        .reveal-delay-5 { transition-delay: 0.5s; }

        @keyframes float {
            0%, 100% { transform: translateY(0px); }
            50% { transform: translateY(-20px); }
        }
        @keyframes float-slow {
            0%, 100% { transform: translateY(0px) rotate(0deg); }
            50% { transform: translateY(-15px) rotate(5deg); }
        }
        @keyframes pulse-glow {
            0%, 100% { box-shadow: 0 0 20px var(--primary-glow); }
            50% { box-shadow: 0 0 40px var(--primary-glow-strong), 0 0 60px var(--primary-glow); }
        }
        @keyframes gradient-shift {
            0% { background-position: 0% 50%; }
            50% { background-position: 100% 50%; }
            100% { background-position: 0% 50%; }
        }
        @keyframes spin-slow {
            from { transform: rotate(0deg); }
            to { transform: rotate(360deg); }
        }
        @keyframes particle-float {
            0% { transform: translate(0, 0) scale(1); opacity: 0.6; }
            25% { transform: translate(50px, -80px) scale(1.2); opacity: 0.8; }
            50% { transform: translate(-30px, -120px) scale(0.8); opacity: 0.4; }
            75% { transform: translate(60px, -60px) scale(1.1); opacity: 0.7; }
            100% { transform: translate(0, 0) scale(1); opacity: 0.6; }
        }

        /* ========== MOBILE-FIRST GLOBAL ========== */
        @media (max-width: 480px) {
            .container { padding: 0 16px; }
            body { font-size: 15px; }
        }
        /* Disable hover effects on touch devices */
        @media (hover: none) and (pointer: coarse) {
            .feature-card:hover, .pricing-card:hover, .preview-screen:hover, .step:hover .step-number {
                transform: none !important;
                box-shadow: none !important;
            }
            .btn:hover { transform: none !important; }
        }

        /* ========== NAVBAR ========== */
        .navbar {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            z-index: 1000;
            padding: 16px 0;
            transition: all 0.4s ease;
        }
        .navbar.scrolled {
            background: rgba(10, 10, 26, 0.85);
            backdrop-filter: blur(20px);
            -webkit-backdrop-filter: blur(20px);
            border-bottom: 1px solid var(--border-card);
            padding: 10px 0;
        }
        .navbar .container {
            display: flex;
            align-items: center;
            justify-content: space-between;
        }
        .navbar-logo {
            font-size: 1.6rem;
            font-weight: 900;
            color: var(--primary-light);
            text-decoration: none;
            letter-spacing: -0.5px;
        }
        .navbar-logo span {
            color: var(--text-white);
            font-weight: 400;
        }
        .navbar-links {
            display: flex;
            align-items: center;
            gap: 32px;
            list-style: none;
        }
        .navbar-links a {
            color: var(--text-body);
            text-decoration: none;
            font-weight: 500;
            font-size: 0.95rem;
            transition: color 0.3s;
            position: relative;
        }
        .navbar-links a::after {
            content: '';
            position: absolute;
            bottom: -4px;
            left: 0;
            width: 0;
            height: 2px;
            background: var(--primary);
            transition: width 0.3s;
        }
        .navbar-links a:hover {
            color: var(--text-white);
        }
        .navbar-links a:hover::after {
            width: 100%;
        }
        .navbar-cta {
            padding: 10px 24px;
            font-size: 0.9rem;
        }
        .hamburger {
            display: none;
            flex-direction: column;
            gap: 5px;
            cursor: pointer;
            background: none;
            border: none;
            padding: 4px;
        }
        .hamburger span {
            width: 24px;
            height: 2px;
            background: var(--text-white);
            transition: all 0.3s;
            border-radius: 2px;
        }
        .hamburger.active span:nth-child(1) {
            transform: rotate(45deg) translate(5px, 5px);
        }
        .hamburger.active span:nth-child(2) {
            opacity: 0;
        }
        .hamburger.active span:nth-child(3) {
            transform: rotate(-45deg) translate(5px, -5px);
        }
        .mobile-menu {
            position: fixed;
            top: 0;
            right: -100%;
            width: 280px;
            height: 100%;
            height: 100dvh;
            background: rgba(10, 10, 26, 0.98);
            backdrop-filter: blur(24px);
            -webkit-backdrop-filter: blur(24px);
            z-index: 999;
            flex-direction: column;
            align-items: flex-start;
            justify-content: center;
            gap: 8px;
            padding: 32px;
            transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);
            border-left: 1px solid var(--border-card);
        }
        .mobile-menu.active {
            right: 0;
        }
        .mobile-menu-overlay {
            display: none;
            position: fixed;
            inset: 0;
            background: rgba(0, 0, 0, 0.5);
            z-index: 998;
            opacity: 0;
            transition: opacity 0.35s;
        }
        .mobile-menu-overlay.active {
            display: block;
            opacity: 1;
        }
        .mobile-menu a {
            color: var(--text-white);
            text-decoration: none;
            font-size: 1.15rem;
            font-weight: 600;
            transition: color 0.3s;
            padding: 14px 16px;
            border-radius: 12px;
            width: 100%;
            display: flex;
            align-items: center;
            gap: 12px;
        }
        .mobile-menu a:hover, .mobile-menu a:active {
            color: var(--primary-light);
            background: var(--bg-card);
        }
        .mobile-menu .btn {
            margin-top: 16px;
            font-size: 1rem;
            justify-content: center;
        }
        .mobile-menu-close {
            position: absolute;
            top: 20px;
            right: 24px;
            background: none;
            border: none;
            color: var(--text-white);
            font-size: 1.8rem;
            cursor: pointer;
            padding: 8px;
            line-height: 1;
            z-index: 1001;
            touch-action: manipulation;
        }
        @supports (padding-top: env(safe-area-inset-top)) {
            .mobile-menu-close { top: calc(20px + env(safe-area-inset-top)); right: calc(24px + env(safe-area-inset-right)); }
            .mobile-menu { padding-top: calc(32px + env(safe-area-inset-top)); padding-bottom: calc(32px + env(safe-area-inset-bottom)); }
            .hero { padding-top: calc(120px + env(safe-area-inset-top)); }
            .footer { padding-bottom: calc(40px + env(safe-area-inset-bottom)); }
            .floating-whatsapp { bottom: calc(20px + env(safe-area-inset-bottom)); }
        }

        @media (max-width: 768px) {
            .navbar-links { display: none; }
            .hamburger { display: flex; }
        }
        @media (max-width: 380px) {
            .navbar-logo { font-size: 1.15rem; }
            .hamburger { padding: 2px; }
            .hamburger span { width: 20px; }
        }
        @media (max-width: 480px) {
            .navbar { padding: 12px 0; }
            .navbar.scrolled { padding: 8px 0; }
            .navbar-logo { font-size: 1.3rem; }
            .hamburger span { width: 22px; }
        }

        /* ========== HERO ========== */
        .hero {
            min-height: 100vh;
            display: flex;
            align-items: center;
            position: relative;
            overflow: hidden;
            padding: 120px 0 80px;
        }
        .hero-bg {
            position: absolute;
            inset: 0;
            z-index: 0;
        }
        .hero-gradient {
            position: absolute;
            width: 600px;
            height: 600px;
            border-radius: 50%;
            filter: blur(120px);
            opacity: 0.3;
        }
        .hero-gradient-1 {
            top: -200px;
            left: -100px;
            background: var(--primary);
            animation: float-slow 8s ease-in-out infinite;
        }
        .hero-gradient-2 {
            bottom: -200px;
            right: -100px;
            background: var(--purple);
            animation: float-slow 10s ease-in-out infinite reverse;
        }
        .hero-gradient-3 {
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 400px;
            height: 400px;
            background: var(--blue);
            opacity: 0.15;
            animation: float 12s ease-in-out infinite;
        }
        .hero-particles {
            position: absolute;
            inset: 0;
            z-index: 0;
        }
        .particle {
            position: absolute;
            width: 4px;
            height: 4px;
            background: var(--primary-light);
            border-radius: 50%;
            animation: particle-float linear infinite;
        }
        .hero .container {
            position: relative;
            z-index: 1;
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 60px;
            align-items: center;
        }
        .hero-content {
            max-width: 560px;
        }
        .hero-badge {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 8px 16px;
            background: var(--bg-card);
            border: 1px solid var(--border-card);
            border-radius: 50px;
            font-size: 0.85rem;
            color: var(--primary-light);
            margin-bottom: 24px;
            backdrop-filter: blur(10px);
        }
        .hero-badge i {
            font-size: 0.7rem;
        }
        .hero h1 {
            font-size: clamp(2.5rem, 6vw, 4rem);
            font-weight: 900;
            color: var(--text-white);
            line-height: 1.1;
            margin-bottom: 20px;
            letter-spacing: -1px;
        }
        .hero h1 .highlight {
            background: linear-gradient(135deg, var(--primary-light), #ff9a5c, var(--primary));
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
            background-size: 200% 200%;
            animation: gradient-shift 3s ease infinite;
        }
        .hero p {
            font-size: clamp(1rem, 2vw, 1.2rem);
            color: var(--text-body);
            margin-bottom: 36px;
            max-width: 480px;
            line-height: 1.7;
        }
        .hero-buttons {
            display: flex;
            gap: 16px;
            flex-wrap: wrap;
        }
        .hero-float-badges {
            position: absolute;
            z-index: 2;
        }
        .float-badge {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 10px 18px;
            background: rgba(255, 255, 255, 0.08);
            backdrop-filter: blur(16px);
            -webkit-backdrop-filter: blur(16px);
            border: 1px solid rgba(255, 255, 255, 0.15);
            border-radius: 12px;
            font-size: 0.85rem;
            color: var(--text-white);
            font-weight: 500;
            animation: float 4s ease-in-out infinite;
            white-space: nowrap;
        }
        .float-badge i {
            color: var(--primary-light);
        }
        .float-badge-1 {
            top: 15%;
            right: 5%;
            animation-delay: 0s;
        }
        .float-badge-2 {
            top: 55%;
            right: 0%;
            animation-delay: 1s;
        }
        .float-badge-3 {
            bottom: 20%;
            right: 10%;
            animation-delay: 2s;
        }

        /* Phone Mockup */
        .hero-visual {
            position: relative;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        .phone-mockup {
            width: 280px;
            height: 560px;
            background: linear-gradient(145deg, #1e1e3a, #2a2a4a);
            border-radius: 36px;
            border: 3px solid rgba(255, 255, 255, 0.15);
            position: relative;
            overflow: hidden;
            box-shadow: 0 40px 80px rgba(0, 0, 0, 0.5), 0 0 60px var(--primary-glow);
            animation: float 6s ease-in-out infinite;
        }
        .phone-notch {
            width: 120px;
            height: 28px;
            background: #0a0a1a;
            border-radius: 0 0 16px 16px;
            position: absolute;
            top: 0;
            left: 50%;
            transform: translateX(-50%);
            z-index: 2;
        }
        .phone-screen {
            padding: 40px 16px 16px;
            height: 100%;
            background: linear-gradient(180deg, #12122a 0%, #0f0f23 100%);
        }
        .phone-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 20px;
            padding: 0 4px;
        }
        .phone-header-title {
            font-size: 1.1rem;
            font-weight: 700;
            color: var(--text-white);
        }
        .phone-header-icon {
            width: 32px;
            height: 32px;
            background: var(--primary);
            border-radius: 8px;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 0.8rem;
        }
        .phone-search {
            background: rgba(255, 255, 255, 0.06);
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 10px;
            padding: 10px 12px;
            font-size: 0.75rem;
            color: var(--text-muted);
            margin-bottom: 16px;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .phone-grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 10px;
            margin-bottom: 16px;
        }
        .phone-grid-item {
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 255, 255, 0.08);
            border-radius: 12px;
            padding: 14px 10px;
            text-align: center;
        }
        .phone-grid-item i {
            font-size: 1.2rem;
            color: var(--primary-light);
            margin-bottom: 6px;
            display: block;
        }
        .phone-grid-item span {
            font-size: 0.7rem;
            color: var(--text-body);
            font-weight: 500;
        }
        .phone-cart-item {
            display: flex;
            align-items: center;
            gap: 10px;
            background: rgba(255, 255, 255, 0.04);
            border-radius: 10px;
            padding: 10px;
            margin-bottom: 8px;
            border: 1px solid rgba(255, 255, 255, 0.06);
        }
        .phone-cart-icon {
            width: 36px;
            height: 36px;
            border-radius: 8px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 0.9rem;
            color: white;
            flex-shrink: 0;
        }
        .phone-cart-info {
            flex: 1;
        }
        .phone-cart-name {
            font-size: 0.75rem;
            color: var(--text-white);
            font-weight: 600;
        }
        .phone-cart-detail {
            font-size: 0.65rem;
            color: var(--text-muted);
        }
        .phone-cart-price {
            font-size: 0.8rem;
            color: var(--primary-light);
            font-weight: 700;
        }
        .phone-total-bar {
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            background: linear-gradient(135deg, var(--primary), var(--primary-light));
            padding: 14px 20px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            color: white;
        }
        .phone-total-label {
            font-size: 0.8rem;
            font-weight: 500;
        }
        .phone-total-value {
            font-size: 1.1rem;
            font-weight: 800;
        }

        @media (max-width: 968px) {
            .hero {
                min-height: auto;
                padding: 100px 0 60px;
            }
            .hero .container {
                grid-template-columns: 1fr;
                text-align: center;
                gap: 48px;
            }
            .hero-content {
                max-width: 100%;
            }
            .hero p { margin-left: auto; margin-right: auto; }
            .hero-buttons { justify-content: center; }
            .hero-visual { order: -1; }
            .phone-mockup {
                width: 240px;
                height: 480px;
                animation: none;
            }
            .float-badge { display: none; }
        }
        @media (max-width: 480px) {
            .hero {
                padding: 90px 0 40px;
            }
            .hero-badge { font-size: 0.78rem; padding: 6px 14px; margin-bottom: 16px; }
            .hero h1 { letter-spacing: -0.5px; margin-bottom: 14px; }
            .hero p { margin-bottom: 24px; }
            .hero-buttons { flex-direction: column; align-items: stretch; gap: 12px; }
            .hero-buttons .btn { width: 100%; justify-content: center; padding: 16px 24px; font-size: 1rem; }
            .phone-mockup { width: 200px; height: 400px; border-radius: 28px; }
            .phone-notch { width: 90px; height: 22px; }
            .phone-screen { padding: 32px 12px 12px; }
            .phone-grid { gap: 8px; }
            .phone-grid-item { padding: 10px 8px; }
            .phone-grid-item i { font-size: 1rem; }
            .phone-grid-item span { font-size: 0.65rem; }
            .phone-cart-item { padding: 8px; gap: 8px; }
            .phone-cart-icon { width: 30px; height: 30px; font-size: 0.75rem; }
            .phone-cart-name { font-size: 0.68rem; }
            .phone-cart-detail { font-size: 0.6rem; }
            .phone-cart-price { font-size: 0.72rem; }
            .phone-total-bar { padding: 10px 16px; }
            .phone-total-label { font-size: 0.72rem; }
            .phone-total-value { font-size: 0.95rem; }
        }
        @media (max-width: 360px) {
            .hero { padding: 80px 0 36px; }
            .phone-mockup { width: 170px; height: 340px; border-radius: 24px; }
            .phone-notch { width: 76px; height: 20px; }
            .phone-header-title { font-size: 0.95rem; }
            .phone-search { font-size: 0.68rem; padding: 8px 10px; }
            .phone-grid-item { padding: 8px 6px; }
            .phone-grid-item i { font-size: 0.9rem; }
            .phone-grid-item span { font-size: 0.6rem; }
        }

        /* ========== STATS BAR ========== */
        .stats-bar {
            position: relative;
            z-index: 1;
            padding: 40px 0;
            background: rgba(255, 255, 255, 0.02);
            border-top: 1px solid rgba(255, 255, 255, 0.05);
            border-bottom: 1px solid rgba(255, 255, 255, 0.05);
        }
        .stats-grid {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 24px;
        }
        .stat-item {
            text-align: center;
            padding: 20px;
        }
        .stat-number {
            font-size: clamp(1.8rem, 4vw, 2.5rem);
            font-weight: 900;
            color: var(--primary-light);
            line-height: 1;
            margin-bottom: 8px;
        }
        .stat-label {
            font-size: clamp(0.8rem, 2vw, 0.95rem);
            color: var(--text-muted);
            font-weight: 500;
        }
        @media (max-width: 768px) {
            .stats-bar { padding: 30px 0; }
            .stats-grid { grid-template-columns: repeat(2, 1fr); }
        }
        @media (max-width: 480px) {
            .stats-bar { padding: 24px 0; }
            .stats-grid { grid-template-columns: 1fr 1fr; gap: 4px; }
            .stat-item { padding: 10px 4px; }
            .stat-label { font-size: 0.75rem; }
        }

        /* ========== FEATURES ========== */
        .features {
            padding: 100px 0;
            position: relative;
        }
        .features-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 24px;
        }
        .feature-card {
            background: var(--bg-card);
            border: 1px solid var(--border-card);
            border-radius: 20px;
            padding: 32px;
            backdrop-filter: blur(16px);
            -webkit-backdrop-filter: blur(16px);
            transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
            position: relative;
            overflow: hidden;
        }
        .feature-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 2px;
            background: linear-gradient(90deg, transparent, var(--primary), transparent);
            opacity: 0;
            transition: opacity 0.4s;
        }
        .feature-card:hover {
            transform: translateY(-8px);
            border-color: var(--border-card-hover);
            background: var(--bg-card-hover);
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3), 0 0 40px var(--primary-glow);
        }
        .feature-card:hover::before {
            opacity: 1;
        }
        .feature-icon {
            width: 56px;
            height: 56px;
            background: linear-gradient(135deg, var(--primary), var(--primary-light));
            border-radius: 14px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 1.4rem;
            color: white;
            margin-bottom: 20px;
            box-shadow: 0 8px 24px var(--primary-glow);
        }
        .feature-card h3 {
            font-size: 1.2rem;
            font-weight: 700;
            color: var(--text-white);
            margin-bottom: 12px;
        }
        .feature-card p {
            font-size: 0.92rem;
            color: var(--text-body);
            line-height: 1.6;
        }
        @media (max-width: 968px) {
            .features { padding: 70px 0; }
            .features-grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
            .feature-card { padding: 24px; }
        }
        @media (max-width: 600px) {
            .features { padding: 60px 0; }
            .features-grid { grid-template-columns: 1fr; }
        }
        @media (max-width: 480px) {
            .feature-card { padding: 20px; border-radius: 16px; }
            .feature-icon { width: 48px; height: 48px; font-size: 1.2rem; border-radius: 12px; margin-bottom: 16px; }
            .feature-card h3 { font-size: 1.05rem; margin-bottom: 8px; }
            .feature-card p { font-size: 0.88rem; line-height: 1.5; }
        }

        /* ========== HOW IT WORKS ========== */
        .how-it-works {
            padding: 100px 0;
            position: relative;
        }
        .steps-container {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 24px;
            position: relative;
        }
        .steps-container::before {
            content: '';
            position: absolute;
            top: 40px;
            left: 12.5%;
            right: 12.5%;
            height: 2px;
            background: linear-gradient(90deg, var(--primary), var(--primary-light), var(--primary));
            z-index: 0;
        }
        .step {
            text-align: center;
            position: relative;
            z-index: 1;
        }
        .step-number {
            width: 80px;
            height: 80px;
            border-radius: 50%;
            background: var(--bg-dark);
            border: 2px solid var(--primary);
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 1.6rem;
            font-weight: 900;
            color: var(--primary-light);
            margin: 0 auto 20px;
            box-shadow: 0 0 30px var(--primary-glow);
            transition: all 0.4s;
        }
        .step:hover .step-number {
            background: linear-gradient(135deg, var(--primary), var(--primary-light));
            color: white;
            transform: scale(1.1);
        }
        .step h3 {
            font-size: 1.05rem;
            font-weight: 700;
            color: var(--text-white);
            margin-bottom: 8px;
        }
        .step p {
            font-size: 0.88rem;
            color: var(--text-muted);
            max-width: 200px;
            margin: 0 auto;
            line-height: 1.5;
        }
        @media (max-width: 768px) {
            .how-it-works { padding: 70px 0; }
            .steps-container {
                grid-template-columns: 1fr 1fr;
                gap: 32px 20px;
            }
            .steps-container::before {
                display: none;
            }
            .step-number { width: 64px; height: 64px; font-size: 1.3rem; }
        }
        @media (max-width: 480px) {
            .how-it-works { padding: 60px 0; }
            .steps-container {
                grid-template-columns: 1fr;
                gap: 28px;
            }
            .step-number { width: 56px; height: 56px; font-size: 1.2rem; margin-bottom: 14px; }
            .step h3 { font-size: 0.95rem; margin-bottom: 6px; }
            .step p { font-size: 0.82rem; max-width: 260px; }
        }

        /* ========== PRICING ========== */
        .pricing {
            padding: 100px 0;
            position: relative;
        }
        .pricing-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 24px;
            align-items: stretch;
        }
        .pricing-card {
            background: var(--bg-card);
            border: 1px solid var(--border-card);
            border-radius: 24px;
            padding: 40px 32px;
            backdrop-filter: blur(16px);
            -webkit-backdrop-filter: blur(16px);
            transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
            position: relative;
            display: flex;
            flex-direction: column;
        }
        .pricing-card:hover {
            transform: translateY(-4px);
        }
        .pricing-card.popular {
            border-color: var(--primary);
            background: rgba(194, 79, 41, 0.08);
            transform: scale(1.05);
            box-shadow: 0 0 60px var(--primary-glow), 0 20px 60px rgba(0, 0, 0, 0.3);
        }
        .pricing-card.popular:hover {
            transform: scale(1.05) translateY(-4px);
        }
        .popular-badge {
            position: absolute;
            top: -14px;
            left: 50%;
            transform: translateX(-50%);
            background: linear-gradient(135deg, var(--primary), var(--primary-light));
            color: white;
            padding: 6px 24px;
            border-radius: 50px;
            font-size: 0.8rem;
            font-weight: 700;
            letter-spacing: 1px;
            text-transform: uppercase;
            box-shadow: 0 4px 20px var(--primary-glow);
        }
        .pricing-plan {
            font-size: 1.1rem;
            font-weight: 600;
            color: var(--text-muted);
            margin-bottom: 8px;
        }
        .pricing-price {
            font-size: clamp(2.2rem, 5vw, 3rem);
            font-weight: 900;
            color: var(--text-white);
            margin-bottom: 4px;
        }
        .pricing-price span {
            font-size: 0.5em;
            font-weight: 500;
            color: var(--text-muted);
        }
        .pricing-period {
            font-size: 0.9rem;
            color: var(--text-muted);
            margin-bottom: 24px;
        }
        .pricing-features {
            list-style: none;
            margin-bottom: 32px;
            flex: 1;
        }
        .pricing-features li {
            display: flex;
            align-items: flex-start;
            gap: 10px;
            padding: 8px 0;
            font-size: 0.92rem;
            color: var(--text-body);
        }
        .pricing-features li i {
            color: var(--green);
            margin-top: 3px;
            flex-shrink: 0;
        }
        .pricing-card .btn {
            width: 100%;
            justify-content: center;
            padding: 16px;
        }
        .pricing-note {
            text-align: center;
            margin-top: 24px;
            font-size: 0.9rem;
            color: var(--text-muted);
        }
        .pricing-note strong {
            color: var(--primary-light);
        }

        @media (max-width: 968px) {
            .pricing { padding: 70px 0; }
            .pricing-grid {
                grid-template-columns: 1fr;
                max-width: 420px;
                margin: 0 auto;
            }
            .pricing-card.popular {
                transform: scale(1);
            }
            .pricing-card.popular:hover {
                transform: translateY(-4px);
            }
        }
        @media (max-width: 480px) {
            .pricing { padding: 60px 0; }
            .pricing-grid { max-width: 100%; }
            .pricing-card { padding: 28px 20px; border-radius: 18px; }
            .popular-badge { font-size: 0.7rem; padding: 5px 16px; top: -12px; }
            .pricing-plan { font-size: 1rem; }
            .pricing-price { font-size: 2rem; }
            .pricing-features li { font-size: 0.85rem; padding: 6px 0; }
            .pricing-card .btn { padding: 14px; font-size: 0.95rem; }
            .pricing-note { font-size: 0.82rem; margin-top: 20px; }
        }

        /* ========== APP PREVIEW ========== */
        .app-preview {
            padding: 100px 0;
            position: relative;
        }
        .preview-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 32px;
        }
        .preview-screen {
            background: linear-gradient(145deg, #1a1a3a, #16162e);
            border-radius: 24px;
            border: 1px solid var(--border-card);
            overflow: hidden;
            transition: all 0.4s;
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
        }
        .preview-screen:hover {
            transform: translateY(-8px) scale(1.02);
            box-shadow: 0 30px 80px rgba(0, 0, 0, 0.4), 0 0 40px var(--primary-glow);
            border-color: var(--primary);
        }
        .preview-topbar {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 14px 18px;
            background: rgba(255, 255, 255, 0.03);
            border-bottom: 1px solid rgba(255, 255, 255, 0.06);
        }
        .preview-dot {
            width: 10px;
            height: 10px;
            border-radius: 50%;
        }
        .preview-dot:nth-child(1) { background: #ff5f57; }
        .preview-dot:nth-child(2) { background: #ffbd2e; }
        .preview-dot:nth-child(3) { background: #28ca41; }
        .preview-title {
            flex: 1;
            text-align: center;
            font-size: 0.8rem;
            color: var(--text-muted);
            font-weight: 500;
        }
        .preview-body {
            padding: 20px;
            min-height: 260px;
        }
        .preview-body h4 {
            font-size: 1rem;
            font-weight: 700;
            color: var(--text-white);
            margin-bottom: 16px;
        }

        /* POS Preview */
        .pos-preview-grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 8px;
            margin-bottom: 16px;
        }
        .pos-item {
            background: rgba(255, 255, 255, 0.05);
            border-radius: 10px;
            padding: 12px 10px;
            text-align: center;
        }
        .pos-item-icon {
            font-size: 1.2rem;
            margin-bottom: 4px;
            color: var(--primary-light);
        }
        .pos-item-name {
            font-size: 0.7rem;
            color: var(--text-body);
            font-weight: 500;
        }
        .pos-item-price {
            font-size: 0.65rem;
            color: var(--text-muted);
        }
        .pos-receipt {
            background: rgba(255, 255, 255, 0.04);
            border-radius: 10px;
            padding: 12px;
            border: 1px dashed rgba(255, 255, 255, 0.1);
        }
        .pos-receipt-line {
            display: flex;
            justify-content: space-between;
            font-size: 0.72rem;
            padding: 3px 0;
            color: var(--text-body);
        }
        .pos-receipt-total {
            border-top: 1px solid rgba(255, 255, 255, 0.15);
            margin-top: 6px;
            padding-top: 6px;
            font-weight: 700;
            color: var(--text-white);
        }

        /* Inventory Preview */
        .inv-table {
            width: 100%;
        }
        .inv-row {
            display: flex;
            align-items: center;
            padding: 10px 0;
            border-bottom: 1px solid rgba(255, 255, 255, 0.06);
            font-size: 0.78rem;
        }
        .inv-row:last-child { border: none; }
        .inv-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            margin-right: 10px;
            flex-shrink: 0;
        }
        .inv-name {
            flex: 1;
            color: var(--text-body);
            font-weight: 500;
        }
        .inv-stock {
            color: var(--text-muted);
            margin-right: 12px;
        }
        .inv-bar-bg {
            width: 60px;
            height: 6px;
            background: rgba(255, 255, 255, 0.08);
            border-radius: 3px;
            overflow: hidden;
        }
        .inv-bar {
            height: 100%;
            border-radius: 3px;
            background: var(--green);
        }
        .inv-bar.warning { background: #f59e0b; }
        .inv-bar.danger { background: #ef4444; }

        /* Reports Preview */
        .report-chart {
            display: flex;
            align-items: flex-end;
            gap: 10px;
            height: 120px;
            padding: 10px 0;
            margin-bottom: 16px;
        }
        .report-bar {
            flex: 1;
            background: linear-gradient(180deg, var(--primary), var(--primary-light));
            border-radius: 6px 6px 0 0;
            min-height: 10px;
            position: relative;
            transition: all 0.3s;
        }
        .report-bar:hover {
            opacity: 0.8;
        }
        .report-labels {
            display: flex;
            justify-content: space-between;
            font-size: 0.7rem;
            color: var(--text-muted);
        }
        .report-summary {
            display: flex;
            gap: 16px;
            margin-top: 16px;
        }
        .report-stat {
            background: rgba(255, 255, 255, 0.04);
            border-radius: 10px;
            padding: 12px;
            flex: 1;
            text-align: center;
        }
        .report-stat-value {
            font-size: 1rem;
            font-weight: 800;
            color: var(--primary-light);
        }
        .report-stat-label {
            font-size: 0.68rem;
            color: var(--text-muted);
            margin-top: 2px;
        }

        .gallery-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
            gap: 24px;
        }
        .gallery-item {
            background: linear-gradient(145deg, #1a1a3a, #16162e);
            border-radius: 20px;
            border: 1px solid var(--border-card);
            overflow: hidden;
            transition: all 0.4s;
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
        }
        .gallery-item:hover {
            transform: translateY(-6px) scale(1.01);
            box-shadow: 0 30px 80px rgba(0, 0, 0, 0.4), 0 0 40px var(--primary-glow);
            border-color: var(--primary);
        }
        .gallery-item img {
            width: 100%;
            display: block;
        }
        .gallery-label {
            text-align: center;
            font-size: 0.85rem;
            font-weight: 600;
            color: var(--text-muted);
            padding: 12px 16px;
            background: rgba(0,0,0,0.2);
        }
        @media (max-width: 968px) {
            .app-preview { padding: 70px 0; }
            .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
        }
        @media (max-width: 600px) {
            .app-preview { padding: 60px 0; }
            .gallery-grid { grid-template-columns: 1fr; max-width: 360px; margin: 0 auto; }
        }
        @media (max-width: 480px) {
            .gallery-grid { max-width: 100%; }
        }

        /* ========== DOWNLOAD CTA ========== */
        .download-cta {
            padding: 100px 0;
            position: relative;
            overflow: hidden;
        }
        .download-card {
            background: linear-gradient(135deg, rgba(194, 79, 41, 0.15), rgba(139, 92, 246, 0.1), rgba(194, 79, 41, 0.15));
            background-size: 200% 200%;
            animation: gradient-shift 6s ease infinite;
            border: 1px solid rgba(194, 79, 41, 0.3);
            border-radius: 32px;
            padding: 80px 40px;
            text-align: center;
            position: relative;
            overflow: hidden;
        }
        .download-card::before {
            content: '';
            position: absolute;
            width: 300px;
            height: 300px;
            border-radius: 50%;
            background: var(--primary);
            filter: blur(120px);
            opacity: 0.15;
            top: -100px;
            right: -100px;
        }
        .download-card::after {
            content: '';
            position: absolute;
            width: 300px;
            height: 300px;
            border-radius: 50%;
            background: var(--purple);
            filter: blur(120px);
            opacity: 0.1;
            bottom: -100px;
            left: -100px;
        }
        .download-card > * {
            position: relative;
            z-index: 1;
        }
        .download-card h2 {
            font-size: clamp(2rem, 5vw, 2.8rem);
            font-weight: 900;
            color: var(--text-white);
            margin-bottom: 16px;
        }
        .download-card p {
            font-size: 1.1rem;
            color: var(--text-body);
            margin-bottom: 36px;
            max-width: 500px;
            margin-left: auto;
            margin-right: auto;
        }
        .download-buttons {
            display: flex;
            gap: 16px;
            justify-content: center;
            flex-wrap: wrap;
            margin-bottom: 24px;
        }
        .download-meta {
            display: flex;
            justify-content: center;
            gap: 24px;
            font-size: 0.85rem;
            color: var(--text-muted);
        }
        .download-meta span {
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .download-meta i {
            color: var(--primary-light);
        }

        @media (max-width: 600px) {
            .download-cta { padding: 70px 0; }
            .download-card { padding: 50px 20px; border-radius: 20px; }
            .download-buttons { flex-direction: column; align-items: stretch; gap: 12px; }
            .download-buttons .btn { width: 100%; justify-content: center; }
            .download-meta { flex-direction: column; gap: 8px; align-items: center; }
        }
        @media (max-width: 480px) {
            .download-cta { padding: 60px 0; }
            .download-card { padding: 40px 16px; border-radius: 16px; }
            .download-card h2 { font-size: 1.6rem; margin-bottom: 12px; }
            .download-card p { font-size: 0.95rem; margin-bottom: 24px; }
            .download-buttons .btn { padding: 16px 20px; font-size: 1rem; }
        }

        /* ========== FLOATING WHATSAPP ========== */
        .floating-whatsapp {
            position: fixed;
            bottom: 24px;
            right: 24px;
            z-index: 900;
            width: 60px;
            height: 60px;
            background: linear-gradient(135deg, #25d366, #128c7e);
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 1.6rem;
            text-decoration: none;
            box-shadow: 0 6px 24px rgba(37, 211, 102, 0.4), 0 2px 8px rgba(0, 0, 0, 0.3);
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            animation: pulse-glow-wa 2s ease-in-out infinite;
        }
        .floating-whatsapp:hover {
            transform: scale(1.1);
            box-shadow: 0 8px 32px rgba(37, 211, 102, 0.5), 0 4px 12px rgba(0, 0, 0, 0.3);
        }
        @keyframes pulse-glow-wa {
            0%, 100% { box-shadow: 0 6px 24px rgba(37, 211, 102, 0.4), 0 2px 8px rgba(0, 0, 0, 0.3); }
            50% { box-shadow: 0 6px 32px rgba(37, 211, 102, 0.6), 0 4px 16px rgba(0, 0, 0, 0.3); }
        }
        @media (max-width: 480px) {
            .floating-whatsapp { width: 54px; height: 54px; font-size: 1.4rem; bottom: 16px; right: 16px; }
        }
        @media (max-width: 380px) {
            .floating-whatsapp { width: 48px; height: 48px; font-size: 1.2rem; bottom: 12px; right: 12px; }
        }
        /* Hide on desktop */
        @media (min-width: 769px) {
            .floating-whatsapp { display: none; }
        }

        /* ========== FOOTER ========== */
        .footer {
            padding: 40px 0;
            border-top: 1px solid rgba(255, 255, 255, 0.06);
            background: rgba(0, 0, 0, 0.3);
        }
        .footer .container {
            display: flex;
            align-items: center;
            justify-content: space-between;
            flex-wrap: wrap;
            gap: 16px;
        }
        .footer-logo {
            font-size: 1.2rem;
            font-weight: 800;
            color: var(--primary-light);
            text-decoration: none;
        }
        .footer-links {
            display: flex;
            gap: 24px;
        }
        .footer-links a {
            color: var(--text-muted);
            text-decoration: none;
            font-size: 0.9rem;
            transition: color 0.3s;
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .footer-links a:hover { color: var(--primary-light); }
        .footer-copy {
            font-size: 0.85rem;
            color: var(--text-muted);
            width: 100%;
            text-align: center;
            margin-top: 8px;
        }
        @media (max-width: 600px) {
            .footer { padding: 30px 0; }
            .footer .container { justify-content: center; text-align: center; }
            .footer-links { flex-direction: column; gap: 12px; }
        }
        @media (max-width: 480px) {
            .footer-logo { font-size: 1rem; }
            .footer-links a { font-size: 0.82rem; }
            .footer-copy { font-size: 0.78rem; }
            .section-title { margin-bottom: 0.75rem; }
            .section-subtitle { margin-bottom: 2rem; }
        }
        @media (max-width: 360px) {
            .section-subtitle { font-size: 0.88rem; }
            .feature-card { padding: 16px; border-radius: 14px; }
            .feature-icon { width: 42px; height: 42px; font-size: 1rem; margin-bottom: 12px; border-radius: 10px; }
            .feature-card h3 { font-size: 0.95rem; }
            .feature-card p { font-size: 0.84rem; }
            .step-number { width: 48px; height: 48px; font-size: 1.1rem; }
            .pricing-card { padding: 24px 16px; }
            .pricing-plan { font-size: 0.9rem; }
            .pricing-price { font-size: 1.8rem; }
            .pricing-features li { font-size: 0.8rem; gap: 8px; padding: 5px 0; }
            .download-card { padding: 32px 14px; }
            .download-card h2 { font-size: 1.4rem; }
            .download-card p { font-size: 0.88rem; }
        }
    </style>
</head>
<body>

    <!-- ===== NAVBAR ===== -->
    <nav class="navbar" id="navbar">
        <div class="container">
            <a href="#" class="navbar-logo">pos<span>CUB</span></a>
            <ul class="navbar-links">
                <li><a href="#funciones">Funciones</a></li>
                <li><a href="#precios">Precios</a></li>
                <li><a href="manual.html" target="_blank">Manual</a></li>
                <li><a href="#descargar" class="btn btn-primary navbar-cta"><i class="fas fa-download"></i> Descargar APK</a></li>
            </ul>
            <button class="hamburger" id="hamburger" aria-label="Menu">
                <span></span><span></span><span></span>
            </button>
        </div>
    </nav>
    <div class="mobile-menu-overlay" id="mobileMenuOverlay"></div>
    <div class="mobile-menu" id="mobileMenu">
        <button class="mobile-menu-close" id="mobileMenuClose" aria-label="Cerrar menu">&times;</button>
        <a href="#funciones" class="mobile-link"><i class="fas fa-bolt" style="color:var(--primary-light);width:20px;text-align:center;"></i> Funciones</a>
        <a href="#precios" class="mobile-link"><i class="fas fa-tag" style="color:var(--primary-light);width:20px;text-align:center;"></i> Precios</a>
        <a href="manual.html" class="mobile-link"><i class="fas fa-book" style="color:var(--primary-light);width:20px;text-align:center;"></i> Manual</a>
        <a href="#descargar" class="btn btn-primary mobile-link"><i class="fas fa-download"></i> Descargar APK</a>
    </div>

    <!-- ===== HERO ===== -->
    <section class="hero" id="hero">
        <div class="hero-bg">
            <div class="hero-gradient hero-gradient-1"></div>
            <div class="hero-gradient hero-gradient-2"></div>
            <div class="hero-gradient hero-gradient-3"></div>
            <div class="hero-particles" id="particles"><div class="particle" style="left: 63.6796%; top: 31.8507%; width: 3.38174px; height: 3.38174px; animation-duration: 8.58951s; animation-delay: 3.45856s; opacity: 0.618714;"></div><div class="particle" style="left: 11.4485%; top: 17.3844%; width: 3.01218px; height: 3.01218px; animation-duration: 10.1147s; animation-delay: 4.42623s; opacity: 0.664053;"></div><div class="particle" style="left: 17.2921%; top: 4.41032%; width: 2.71165px; height: 2.71165px; animation-duration: 10.9972s; animation-delay: 0.614158s; opacity: 0.414643;"></div><div class="particle" style="left: 54.6316%; top: 75.2621%; width: 2.97234px; height: 2.97234px; animation-duration: 13.3338s; animation-delay: 1.96691s; opacity: 0.468944;"></div><div class="particle" style="left: 66.0863%; top: 35.2695%; width: 3.97018px; height: 3.97018px; animation-duration: 8.52525s; animation-delay: 3.29711s; opacity: 0.453144;"></div><div class="particle" style="left: 77.298%; top: 77.5999%; width: 1.57508px; height: 1.57508px; animation-duration: 16.9619s; animation-delay: 3.34824s; opacity: 0.533381;"></div><div class="particle" style="left: 67.0943%; top: 7.86963%; width: 2.51945px; height: 2.51945px; animation-duration: 11.9824s; animation-delay: 0.582552s; opacity: 0.289197;"></div><div class="particle" style="left: 14.4162%; top: 70.4865%; width: 3.13677px; height: 3.13677px; animation-duration: 17.7579s; animation-delay: 3.56031s; opacity: 0.591031;"></div><div class="particle" style="left: 88.4715%; top: 9.88979%; width: 1.43234px; height: 1.43234px; animation-duration: 9.75867s; animation-delay: 3.38158s; opacity: 0.273867;"></div><div class="particle" style="left: 62.3883%; top: 9.66028%; width: 3.97942px; height: 3.97942px; animation-duration: 9.99071s; animation-delay: 3.68212s; opacity: 0.268632;"></div><div class="particle" style="left: 92.4055%; top: 81.0377%; width: 3.5504px; height: 3.5504px; animation-duration: 16.8137s; animation-delay: 3.47082s; opacity: 0.455723;"></div><div class="particle" style="left: 47.441%; top: 46.9033%; width: 2.44879px; height: 2.44879px; animation-duration: 10.3059s; animation-delay: 4.36084s; opacity: 0.390033;"></div><div class="particle" style="left: 82.2932%; top: 52.2248%; width: 2.95486px; height: 2.95486px; animation-duration: 10.5424s; animation-delay: 4.195s; opacity: 0.289127;"></div><div class="particle" style="left: 24.6909%; top: 67.858%; width: 3.89792px; height: 3.89792px; animation-duration: 11.4043s; animation-delay: 2.82265s; opacity: 0.531542;"></div><div class="particle" style="left: 58.0765%; top: 86.3369%; width: 3.83798px; height: 3.83798px; animation-duration: 8.7585s; animation-delay: 1.7152s; opacity: 0.666132;"></div><div class="particle" style="left: 6.91671%; top: 12.4014%; width: 3.77078px; height: 3.77078px; animation-duration: 17.7776s; animation-delay: 0.01737s; opacity: 0.68918;"></div><div class="particle" style="left: 34.9334%; top: 86.4084%; width: 1.35926px; height: 1.35926px; animation-duration: 15.257s; animation-delay: 3.79139s; opacity: 0.578341;"></div><div class="particle" style="left: 53.1457%; top: 6.61123%; width: 3.30946px; height: 3.30946px; animation-duration: 13.3807s; animation-delay: 1.51229s; opacity: 0.212277;"></div><div class="particle" style="left: 16.0409%; top: 82.0219%; width: 1.0132px; height: 1.0132px; animation-duration: 9.46381s; animation-delay: 3.30063s; opacity: 0.498255;"></div><div class="particle" style="left: 98.6898%; top: 13.9295%; width: 1.55549px; height: 1.55549px; animation-duration: 12.5096s; animation-delay: 4.80039s; opacity: 0.296979;"></div><div class="particle" style="left: 1.71854%; top: 26.2905%; width: 3.87773px; height: 3.87773px; animation-duration: 12.841s; animation-delay: 2.11599s; opacity: 0.626812;"></div><div class="particle" style="left: 7.34292%; top: 0.606562%; width: 2.59583px; height: 2.59583px; animation-duration: 16.6496s; animation-delay: 2.10438s; opacity: 0.227521;"></div><div class="particle" style="left: 83.5256%; top: 74.0258%; width: 3.53569px; height: 3.53569px; animation-duration: 11.1023s; animation-delay: 2.92251s; opacity: 0.687797;"></div><div class="particle" style="left: 31.4469%; top: 26.7059%; width: 2.8042px; height: 2.8042px; animation-duration: 15.1756s; animation-delay: 2.95053s; opacity: 0.233769;"></div><div class="particle" style="left: 57.4764%; top: 70.9849%; width: 1.39192px; height: 1.39192px; animation-duration: 17.2894s; animation-delay: 0.990179s; opacity: 0.435143;"></div><div class="particle" style="left: 11.2119%; top: 5.5193%; width: 2.38933px; height: 2.38933px; animation-duration: 15.4893s; animation-delay: 4.70039s; opacity: 0.40512;"></div><div class="particle" style="left: 76.1234%; top: 72.5904%; width: 3.3834px; height: 3.3834px; animation-duration: 10.7249s; animation-delay: 4.55485s; opacity: 0.428533;"></div><div class="particle" style="left: 56.3931%; top: 93.3397%; width: 2.45672px; height: 2.45672px; animation-duration: 10.4929s; animation-delay: 4.62702s; opacity: 0.665406;"></div><div class="particle" style="left: 64.8628%; top: 83.4033%; width: 1.7856px; height: 1.7856px; animation-duration: 12.6603s; animation-delay: 4.65804s; opacity: 0.465994;"></div><div class="particle" style="left: 69.5427%; top: 81.2657%; width: 3.5298px; height: 3.5298px; animation-duration: 13.8133s; animation-delay: 3.43445s; opacity: 0.359995;"></div></div>
        </div>
        <div class="container">
            <div class="hero-content">
                <div class="hero-badge reveal active">
                    <i class="fas fa-rocket"></i>
                    Versión 2.7.9 &mdash; Nueva
                </div>
                <h1 class="reveal reveal-delay-1 active">
                    El <span class="highlight">Sistema POS</span> que tu negocio en Cuba necesita
                </h1>
                <p class="reveal reveal-delay-2 active">
                    Punto de venta, restaurante con comandas, cocina y pizzería con KDS, control de turnos, IPV, impresion termica Bluetooth y contabilidad. 100% offline — la licencia se activa con una clave que recibes por WhatsApp, sin internet en la app.
                </p>
                <div class="hero-buttons reveal reveal-delay-3 active">
                    <a href="#descargar" class="btn btn-primary">
                        <i class="fas fa-download"></i> Descargar APK
                    </a>
                    <a href="#descargar" class="btn btn-primary" style="background:#0078d4;">
                        <i class="fab fa-windows"></i> Descargar Windows
                    </a>
                    <a href="https://wa.me/5350560023" target="_blank" class="btn btn-whatsapp">
                        <i class="fab fa-whatsapp"></i> WhatsApp
                    </a>
                </div>
            </div>
            <div class="hero-visual">
                <div class="float-badge float-badge-1 reveal reveal-delay-2 active">
                    <i class="fas fa-gift"></i> 3 dias gratis
                </div>
                <div class="float-badge float-badge-2 reveal reveal-delay-3 active">
                    <i class="fas fa-wifi-slash"></i> Funciona sin internet
                </div>
                <div class="float-badge float-badge-3 reveal reveal-delay-4 active">
                    <i class="fas fa-store"></i> 500+ negocios
                </div>
                <div class="phone-mockup reveal reveal-delay-1 active">
                    <div class="phone-notch"></div>
                    <div class="phone-screen">
                        <div class="phone-header">
                            <div class="phone-header-title">posCUB</div>
                            <div class="phone-header-icon"><i class="fas fa-bell"></i></div>
                        </div>
                        <div class="phone-search">
                            <i class="fas fa-search"></i> Buscar producto...
                        </div>
                        <div class="phone-grid">
                            <div class="phone-grid-item">
                                <i class="fas fa-cash-register"></i>
                                <span>Venta</span>
                            </div>
                            <div class="phone-grid-item">
                                <i class="fas fa-boxes-stacked"></i>
                                <span>Inventario</span>
                            </div>
                            <div class="phone-grid-item">
                                <i class="fas fa-chart-pie"></i>
                                <span>Reportes</span>
                            </div>
                            <div class="phone-grid-item">
                                <i class="fas fa-print"></i>
                                <span>Imprimir</span>
                            </div>
                        </div>
                        <div class="phone-cart-item">
                            <div class="phone-cart-icon" style="background:#c24f29;"><i class="fas fa-beer-mug-empty"></i></div>
                            <div class="phone-cart-info">
                                <div class="phone-cart-name">Cerveza Cristal</div>
                                <div class="phone-cart-detail">x3 unidades</div>
                            </div>
                            <div class="phone-cart-price">$450</div>
                        </div>
                        <div class="phone-cart-item">
                            <div class="phone-cart-icon" style="background:#8b5cf6;"><i class="fas fa-bottle-water"></i></div>
                            <div class="phone-cart-info">
                                <div class="phone-cart-name">Agua Natural</div>
                                <div class="phone-cart-detail">x5 unidades</div>
                            </div>
                            <div class="phone-cart-price">$250</div>
                        </div>
                    </div>
                    <div class="phone-total-bar">
                        <div class="phone-total-label">Total</div>
                        <div class="phone-total-value">$700 CUP</div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- ===== FEATURES ===== -->
    <section class="features" id="funciones">
        <div class="container">
            <h2 class="section-title reveal">Todo lo que tu <span class="gradient-text">negocio</span> necesita</h2>
            <p class="section-subtitle reveal reveal-delay-1">Funciones diseñadas para la realidad cubana, sin complicaciones</p>
            <div class="features-grid">
                <div class="feature-card reveal reveal-delay-1">
                    <div class="feature-icon"><i class="fas fa-cash-register"></i></div>
                    <h3>Registro rapido de ventas</h3>
                    <p>Vende en segundos con interfaz tactil intuitiva. Multiples metodos de pago, busqueda rapida por nombre o codigo, y atajos de teclado.</p>
                </div>
                <div class="feature-card reveal reveal-delay-2">
                    <div class="feature-icon"><i class="fas fa-boxes-stacked"></i></div>
                    <h3>Control de stock + IPV</h3>
                    <p>Inventario en tiempo real con Inventario Pre-Venta (IPV) por turno. Vista resumida con detalles, alertas de stock bajo y seguimiento automatico por cada producto.</p>
                </div>
                <div class="feature-card reveal reveal-delay-3">
                    <div class="feature-icon"><i class="fas fa-clock"></i></div>
                    <h3>Control de turnos</h3>
                    <p>Gestiona apertura y cierre de turnos con registro de quien abre y cierra. Imprime cierre de turno directo a impresora termica con resumen completo.</p>
                </div>
                <div class="feature-card reveal reveal-delay-1">
                    <div class="feature-icon"><i class="fas fa-warehouse"></i></div>
                    <h3>Gestion de almacen</h3>
                    <p>Control completo de entradas y salidas. Registra proveedores, facturas de compra, movimientos de almacen y transferencias entre almacenes.</p>
                </div>
                <div class="feature-card reveal reveal-delay-2">
                    <div class="feature-icon"><i class="fas fa-print"></i></div>
                    <h3>Impresion termica Bluetooth</h3>
                    <p>Imprime tickets, cierres de turno, IPV individual y reportes directo a impresoras termicas Bluetooth 58mm y 80mm. Vista previa antes de imprimir.</p>
                </div>
                <div class="feature-card reveal reveal-delay-3">
                    <div class="feature-icon"><i class="fas fa-calculator"></i></div>
                    <h3>Contabilidad integrada</h3>
                    <p>Registro de gastos e ingresos con categorias personalizables. Balance financiero automatico, impresion de reporte de contabilidad y seguimiento de flujo de caja.</p>
                </div>
                <div class="feature-card reveal reveal-delay-1">
                    <div class="feature-icon"><i class="fas fa-users-gear"></i></div>
                    <h3>Roles y permisos</h3>
                    <p>Sistema multiusuario con roles personalizados. Controla que puede hacer cada empleado: vender, ver reportes, gestionar productos o configurar el sistema.</p>
                </div>

                <div class="feature-card reveal reveal-delay-3">
                    <div class="feature-icon"><i class="fas fa-chart-line"></i></div>
                    <h3>Reportes y estadisticas</h3>
                    <p>Historial de ventas por fecha, productos mas vendidos, ganancias y tendencias. Imprime reportes en impresora termica o consulta la vista visual.</p>
                </div>
                <div class="feature-card reveal reveal-delay-1">
                    <div class="feature-icon"><i class="fas fa-utensils"></i></div>
                    <h3>Modulo Restaurante</h3>
                    <p>Plano de mesas, comandas con numero consecutivo, reservas con aviso, pre-cuenta y recibo con vuelto. Metodos de pago en CUP, USD, EUR y transferencia.</p>
                </div>
                <div class="feature-card reveal reveal-delay-2">
                    <div class="feature-icon"><i class="fas fa-fire"></i></div>
                    <h3>Modulo Cocina (KDS)</h3>
                    <p>Tickets de cocina en pantalla, turnos de cocina, inventario propio con IPV, alertas de platos demorados y control de mermas.</p>
                </div>
                <div class="feature-card reveal reveal-delay-2">
                    <div class="feature-icon"><i class="fas fa-cocktail"></i></div>
                    <h3>Modulo Barra (BDS)</h3>
                    <p>Pantalla de barra para el bartender: tickets de bebidas en tiempo real, turnos, inventario propio con IPV y control de mermas.</p>
                </div>
                <div class="feature-card reveal reveal-delay-2">
                    <div class="feature-icon"><i class="fas fa-pizza-slice"></i></div>
                    <h3>Modulo Pizzería (PDS)</h3>
                    <p>Pantalla de pizzería: tickets de pizzas en tiempo real, turnos, inventario propio con IPV y control de mermas.</p>
                </div>
                <div class="feature-card reveal reveal-delay-2">
                    <div class="feature-icon"><i class="fas fa-comments"></i></div>
                    <h3>Chat del equipo</h3>
                    <p>Conversaciones por la red local sin internet: canal general y chats privados con sonido y aviso de no leidos.</p>
                </div>
                <div class="feature-card reveal reveal-delay-2">
                    <div class="feature-icon"><i class="fas fa-book-open"></i></div>
                    <h3>Manual en la app</h3>
                    <p>Ayuda detallada de todos los modulos con buscador, instalada por defecto. Ideal para entrenar personal nuevo.</p>
                </div>
                <div class="feature-card reveal reveal-delay-3">
                    <div class="feature-icon"><i class="fas fa-shield-halved"></i></div>
                    <h3>Respaldo automatico</h3>
                    <p>La app guarda sola una copia diaria de todos tus datos en el telefono. Restaura cualquier copia cuando la necesites, sin internet.</p>
                </div>
                <div class="feature-card reveal reveal-delay-1">
                    <div class="feature-icon"><i class="fas fa-money-bill-wave"></i></div>
                    <h3>Control de Gastos</h3>
                    <p>Registra renta, salarios, insumos y servicios por categorías. Ve el total del mes y calcula tu ganancia real descontando gastos.</p>
                </div>
                <div class="feature-card reveal reveal-delay-2">
                    <div class="feature-icon"><i class="fas fa-user-clock"></i></div>
                    <h3>Turnos de Empleados</h3>
                    <p>Registra entrada y salida de cada trabajador con un toque. Ve quién está en turno y calcula las horas trabajadas automáticamente.</p>
                </div>
                <div class="feature-card reveal reveal-delay-3">
                    <div class="feature-icon"><i class="fas fa-qrcode"></i></div>
                    <h3>Menú Digital QR</h3>
                    <p>Genera un código QR con tu menú completo. El cliente lo escanea y ve los platos y precios en su teléfono, sin app.</p>
                </div>
                <div class="feature-card reveal reveal-delay-1">
                    <div class="feature-icon"><i class="fas fa-cart-shopping"></i></div>
                    <h3>Lista de Compras Automática</h3>
                    <p>Sugiere qué comprar según tu stock y ritmo de venta, con prioridades y cantidades. Compártela por WhatsApp.</p>
                </div>
                <div class="feature-card reveal reveal-delay-2">
                    <div class="feature-icon"><i class="fas fa-camera"></i></div>
                    <h3>Fotos en Productos</h3>
                    <p>Agrega foto a cada producto para vender más visual. Se muestra la miniatura en el catálogo de productos.</p>
                </div>
            </div>
        </div>
    </section>

    <!-- ===== HOW IT WORKS ===== -->
    <section class="how-it-works">
        <div class="container">
            <h2 class="section-title reveal">Comienza en <span class="gradient-text">4 pasos</span></h2>
            <p class="section-subtitle reveal reveal-delay-1">Tan facil que estara listo en minutos</p>
            <div class="steps-container">
                <div class="step reveal reveal-delay-1">
                    <div class="step-number">1</div>
                    <h3>Descarga el APK</h3>
                    <p>Descarga la aplicacion directamente a tu telefono Android</p>
                </div>
                <div class="step reveal reveal-delay-2">
                    <div class="step-number">2</div>
                    <h3>Prueba 3 dias gratis</h3>
                    <p>Usa todas las funciones sin limitaciones durante 3 dias completos</p>
                </div>
                <div class="step reveal reveal-delay-3">
                    <div class="step-number">3</div>
                    <h3>Activa por WhatsApp</h3>
                    <p>Contactanos por WhatsApp y activa tu licencia al instante</p>
                </div>
                <div class="step reveal reveal-delay-4">
                    <div class="step-number">4</div>
                    <h3>Vende como profesional</h3>
                    <p>Empieza a gestionar tu negocio de forma profesional</p>
                </div>
            </div>
        </div>
    </section>

    <!-- ===== PRICING ===== -->
    <section class="pricing" id="precios">
        <div class="container">
            <h2 class="section-title reveal">Precios <span class="gradient-text">accesibles</span></h2>
            <p class="section-subtitle reveal reveal-delay-1">Elige el plan que mejor se adapte a tu negocio</p>
            <div class="pricing-grid">
                <div class="pricing-card reveal reveal-delay-1">
                    <div class="pricing-plan">Mensual</div>
                    <div class="pricing-price">1,500 <span>CUP</span></div>
                    <div class="pricing-period">por mes</div>
                    <ul class="pricing-features">
                        <li><i class="fas fa-check"></i> Todas las funciones incluidas</li>
                        <li><i class="fas fa-check"></i> 100% offline</li>
                        <li><i class="fas fa-check"></i> Soporte por WhatsApp</li>
                        <li><i class="fas fa-check"></i> Actualizaciones gratuitas</li>
                    </ul>
                    <a href="https://wa.me/5350560023?text=Hola,%20quiero%20activar%20el%20plan%20mensual%20de%20posCUB.%20Mi%20ID%20de%20equipo%20es:%20" target="_blank" class="btn btn-outline">Elegir Mensual</a>
                </div>
                <div class="pricing-card popular reveal reveal-delay-2">
                    <div class="popular-badge">MAS POPULAR</div>
                    <div class="pricing-plan">Anual</div>
                    <div class="pricing-price">12,500 <span>CUP</span></div>
                    <div class="pricing-period">por año — ahorras 5,500 CUP</div>
                    <ul class="pricing-features">
                        <li><i class="fas fa-check"></i> Todas las funciones incluidas</li>
                        <li><i class="fas fa-check"></i> 100% offline</li>
                        <li><i class="fas fa-check"></i> Soporte prioritario</li>
                        <li><i class="fas fa-check"></i> Actualizaciones gratuitas</li>
                        <li><i class="fas fa-check"></i> Respaldo automatico</li>
                        <li><i class="fas fa-check"></i> Modulo Barra para bebidas</li>
                        <li><i class="fas fa-check"></i> Modulo Pizzería</li>
                    </ul>
                    <a href="https://wa.me/5350560023?text=Hola,%20quiero%20activar%20el%20plan%20anual%20de%20posCUB.%20Mi%20ID%20de%20equipo%20es:%20" target="_blank" class="btn btn-primary">Elegir Anual</a>
                </div>
                <div class="pricing-card reveal reveal-delay-3">
                    <div class="pricing-plan">Permanente</div>
                    <div class="pricing-price">30,000 <span>CUP</span></div>
                    <div class="pricing-period">una sola vez</div>
                    <ul class="pricing-features">
                        <li><i class="fas fa-check"></i> Todas las funciones incluidas</li>
                        <li><i class="fas fa-check"></i> 100% offline</li>
                        <li><i class="fas fa-check"></i> Soporte VIP permanente</li>
                        <li><i class="fas fa-check"></i> Actualizaciones de por vida</li>
                        <li><i class="fas fa-check"></i> Configuracion personalizada</li>
                    </ul>
                    <a href="https://wa.me/5350560023?text=Hola,%20quiero%20activar%20el%20plan%20permanente%20de%20posCUB.%20Mi%20ID%20de%20equipo%20es:%20" target="_blank" class="btn btn-outline">Elegir Permanente</a>
                </div>
            </div>
        </div>
    </section>

    <!-- ===== DOWNLOAD CTA ===== -->
    <section class="download-cta" id="descargar">
        <div class="container">
            <div class="download-card reveal">
                <h2>Descarga <span class="gradient-text">posCUB</span> Gratis</h2>
                <p>Comienza a gestionar tu negocio de forma profesional en minutos. 3 dias de prueba totalmente gratuita.</p>
                <div class="download-buttons">
                    <a href="posCUB_v2.7.9.apk" download class="btn btn-primary" style="font-size:1.1rem;padding:18px 40px;">
                        <i class="fas fa-download"></i> Descargar APK v2.7.4
                    </a>
                    <a href="posCUB-Setup-v2.7.4.exe" download class="btn btn-primary" style="font-size:1.1rem;padding:18px 40px;background:#0078d4;">
                        <i class="fab fa-windows"></i> Descargar Windows
                    </a>
                    <a href="https://wa.me/5350560023?text=Hola,%20quiero%20informacion%20sobre%20posCUB" target="_blank" class="btn btn-whatsapp" style="font-size:1.1rem;padding:18px 40px;">
                        <i class="fab fa-whatsapp"></i> Contactar
                    </a>
                </div>
                <div class="download-meta">
                    <span><i class="fas fa-weight-hanging"></i> APK 23.2 MB</span>
                    <span><i class="fab fa-android"></i> Android 6.0+</span>
                    <span><i class="fas fa-weight-hanging"></i> Windows 14 MB</span>
                    <span><i class="fab fa-windows"></i> Windows 10/11</span>
                    <span><i class="fas fa-shield-halved"></i> Seguro y verificado</span>
                </div>
            </div>
        </div>
    </section>

    <!-- ===== FLOATING WHATSAPP ===== -->
    <a href="https://wa.me/5350560023?text=Hola,%20quiero%20informacion%20sobre%20posCUB" target="_blank" class="floating-whatsapp" aria-label="Contactar por WhatsApp">
        <i class="fab fa-whatsapp"></i>
    </a>

    <!-- ===== FOOTER ===== -->
    <footer class="footer">
        <div class="container">
            <a href="#" class="footer-logo">posCUB</a>
            <div class="footer-links">
                <a href="https://wa.me/5350560023" target="_blank"><i class="fab fa-whatsapp"></i> +53 50560023</a>
                <a href="mailto:soporte@poscub.app"><i class="fas fa-envelope"></i> soporte@poscub.app</a>
                <a href="https://poscub-web.pages.dev" target="_blank"><i class="fas fa-globe"></i> poscub-web.pages.dev</a>
            </div>
            <div class="footer-copy">© 2026 posCUB. Todos los derechos reservados.</div>
        </div>
    </footer>

    <!-- ===== JAVASCRIPT ===== -->
    <script>
        // ===== NAVBAR SCROLL =====
        const navbar = document.getElementById('navbar');
        window.addEventListener('scroll', () => {
            navbar.classList.toggle('scrolled', window.scrollY > 50);
        });

        // ===== MOBILE MENU =====
        const hamburger = document.getElementById('hamburger');
        const mobileMenu = document.getElementById('mobileMenu');
        const mobileMenuClose = document.getElementById('mobileMenuClose');
        const mobileMenuOverlay = document.getElementById('mobileMenuOverlay');
        function closeMobileMenu() {
            hamburger.classList.remove('active');
            mobileMenu.classList.remove('active');
            if (mobileMenuOverlay) mobileMenuOverlay.classList.remove('active');
            document.body.style.overflow = '';
        }
        function openMobileMenu() {
            hamburger.classList.add('active');
            mobileMenu.classList.add('active');
            if (mobileMenuOverlay) mobileMenuOverlay.classList.add('active');
            document.body.style.overflow = 'hidden';
        }
        hamburger.addEventListener('click', () => {
            if (mobileMenu.classList.contains('active')) {
                closeMobileMenu();
            } else {
                openMobileMenu();
            }
        });
        if (mobileMenuClose) {
            mobileMenuClose.addEventListener('click', closeMobileMenu);
        }
        if (mobileMenuOverlay) {
            mobileMenuOverlay.addEventListener('click', closeMobileMenu);
        }
        document.querySelectorAll('.mobile-link').forEach(link => {
            link.addEventListener('click', closeMobileMenu);
        });

        // ===== PARTICLES =====
        (function createParticles() {
            const container = document.getElementById('particles');
            const count = window.innerWidth < 768 ? 15 : 30;
            for (let i = 0; i < count; i++) {
                const p = document.createElement('div');
                p.className = 'particle';
                p.style.left = Math.random() * 100 + '%';
                p.style.top = Math.random() * 100 + '%';
                p.style.width = (Math.random() * 3 + 1) + 'px';
                p.style.height = p.style.width;
                p.style.animationDuration = (Math.random() * 10 + 8) + 's';
                p.style.animationDelay = (Math.random() * 5) + 's';
                p.style.opacity = Math.random() * 0.5 + 0.2;
                container.appendChild(p);
            }
        })();

        // ===== SCROLL REVEAL =====
        const revealObserver = new IntersectionObserver((entries) => {
            entries.forEach(entry => {
                if (entry.isIntersecting) {
                    entry.target.classList.add('active');
                }
            });
        }, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' });

        document.querySelectorAll('.reveal').forEach(el => revealObserver.observe(el));

        // ===== ANIMATED COUNTERS =====
        const counterObserver = new IntersectionObserver((entries) => {
            entries.forEach(entry => {
                if (entry.isIntersecting) {
                    const el = entry.target;
                    const target = parseInt(el.getAttribute('data-target'));
                    if (!target) return;
                    let current = 0;
                    const duration = 2000;
                    const step = target / (duration / 16);
                    const timer = setInterval(() => {
                        current += step;
                        if (current >= target) {
                            current = target;
                            clearInterval(timer);
                        }
                        el.textContent = Math.floor(current).toLocaleString('es-ES') + (target >= 1000 ? '+' : '+');
                    }, 16);
                    counterObserver.unobserve(el);
                }
            });
        }, { threshold: 0.5 });

        document.querySelectorAll('.stat-number[data-target]').forEach(el => counterObserver.observe(el));

        // ===== SMOOTH SCROLL FOR ANCHOR LINKS =====
        document.querySelectorAll('a').forEach(function(anchor) {
            var hr = anchor.getAttribute('href');
            if (hr && hr.charAt(0) === '#') {
                anchor.addEventListener('click', function(e) {
                    if (hr === '#') return;
                    e.preventDefault();
                    var tgt = document.querySelector(hr);
                    if (tgt) {
                        var off = 80;
                        var tp = tgt.getBoundingClientRect().top + window.pageYOffset - off;
                        window.scrollTo({ top: tp, behavior: 'smooth' });
                    }
                });
            }
        });
    </script>

<!-- posCUB v2.3 --><script>(function(){try{navigator.sendBeacon('/api/track',JSON.stringify({type:'pageview',page:window.location.pathname,ref:document.referrer,lang:navigator.language,w:screen.width,h:screen.height}));}catch(e){var x=new XMLHttpRequest();x.open('POST','/api/track',true);x.setRequestHeader('Content-Type','application/json');x.send(JSON.stringify({type:'pageview',page:window.location.pathname}));}})();</script>
</body></html>