:root {
            --bg:          #070c15;
            --surface:     #0c1524;
            --card:        #101e32;
            --border:      #192c46;
            --accent:      #2563eb;
            --accent-lite: #3b82f6;
            --accent-glow: rgba(37,99,235,.22);
            --cyan:        #06b6d4;
            --green:       #10b981;
            --yellow:      #f59e0b;
            --text:        #dce8f8;
            --dim:         #8ca5c0;
            --muted:       #3d5a7a;
        }

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

        body {
            background: var(--bg);
            font-family: 'DM Sans', sans-serif;
            color: var(--text);
            min-height: 100vh;
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }

        /* ── FONDO ── */
        .bg-layer {
            position: fixed; inset: 0; pointer-events: none; z-index: 0;
        }
        .bg-layer::before {
            content: '';
            position: absolute; inset: 0;
            background-image:
                linear-gradient(rgba(37,99,235,.04) 1px, transparent 1px),
                linear-gradient(90deg, rgba(37,99,235,.04) 1px, transparent 1px);
            background-size: 44px 44px;
        }
        .bg-layer::after {
            content: '';
            position: absolute;
            top: 50%; left: 50%;
            transform: translate(-50%, -50%);
            width: 900px; height: 900px;
            background: radial-gradient(circle, rgba(37,99,235,.07) 0%, transparent 65%);
            border-radius: 50%;
        }

        /* ── HEADER ── */
        header {
            position: relative; z-index: 10;
            padding: 1.25rem 2.5rem;
            display: flex; align-items: center; justify-content: space-between;
            border-bottom: 1px solid var(--border);
            background: rgba(7,12,21,.7);
            backdrop-filter: blur(10px);
            flex-shrink: 0;
        }
        .brand { display: flex; align-items: center; gap: .75rem; }
        .brand-mark {
            width: 36px; height: 36px; background: var(--accent);
            border-radius: 9px; display: grid; place-items: center; font-size: 1.1rem;
        }
        .brand-name {
            font-family: 'Syne', sans-serif; font-weight: 800;
            font-size: 1.05rem; letter-spacing: .03em;
        }
        .brand-name span { color: var(--cyan); }
        .header-clock {
            font-family: 'Syne', sans-serif; font-size: .9rem;
            font-weight: 700; color: var(--muted); letter-spacing: .08em;
        }

        /* ── HERO ── */
        .hero {
            position: relative; z-index: 1;
            flex: 1;
            display: flex; flex-direction: column;
            align-items: center; justify-content: center;
            padding: 3rem 2rem;
            text-align: center;
        }

        .hero-eyebrow {
            font-size: .7rem; text-transform: uppercase;
            letter-spacing: .2em; color: var(--muted);
            margin-bottom: 1.25rem;
            display: flex; align-items: center; gap: .75rem;
        }
        .hero-eyebrow::before,
        .hero-eyebrow::after {
            content: ''; width: 32px; height: 1px; background: var(--muted);
        }

        .hero-title {
            font-family: 'Syne', sans-serif;
            font-size: clamp(2.5rem, 6vw, 4rem);
            font-weight: 800;
            letter-spacing: -.02em;
            line-height: 1.05;
            margin-bottom: .75rem;
        }
        .hero-title span { color: var(--cyan); }

        .hero-sub {
            font-size: clamp(.85rem, 2vw, 1rem);
            color: var(--dim);
            max-width: 480px;
            line-height: 1.6;
            margin-bottom: 3rem;
        }

        /* ── CARDS DE ACCESO ── */
        .access-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 1rem;
            width: 100%;
            max-width: 780px;
            margin-bottom: 2.5rem;
        }

        .access-card {
            background: var(--card);
            border: 1px solid var(--border);
            border-radius: 16px;
            padding: 1.75rem 1.25rem;
            text-decoration: none;
            color: var(--text);
            display: flex; flex-direction: column;
            align-items: center; gap: .85rem;
            text-align: center;
            transition: all .2s ease;
            position: relative;
            overflow: hidden;
        }
        .access-card::before {
            content: '';
            position: absolute; bottom: 0; left: 0; right: 0;
            height: 2px;
            background: var(--card-accent, var(--accent));
            transform: scaleX(0);
            transition: transform .25s ease;
        }
        .access-card:hover {
            border-color: var(--card-accent, var(--accent));
            background: #131f35;
            transform: translateY(-3px);
            box-shadow: 0 12px 36px rgba(0,0,0,.3);
            color: var(--text);
        }
        .access-card:hover::before { transform: scaleX(1); }

        /* colores por tarjeta */
        .access-card.worker  { --card-accent: var(--accent); }
        .access-card.recep   { --card-accent: var(--cyan); }
        .access-card.display { --card-accent: var(--green); }

        .ac-icon {
            width: 52px; height: 52px;
            border-radius: 14px;
            display: grid; place-items: center;
            font-size: 1.4rem;
            border: 1px solid var(--border);
            transition: all .2s;
        }
        .access-card.worker  .ac-icon { background: rgba(37,99,235,.12);  color: var(--accent); }
        .access-card.recep   .ac-icon { background: rgba(6,182,212,.12);   color: var(--cyan);   }
        .access-card.display .ac-icon { background: rgba(16,185,129,.12);  color: var(--green);  }

        .access-card:hover .ac-icon {
            border-color: var(--card-accent);
        }

        .ac-title {
            font-family: 'Syne', sans-serif;
            font-size: 1rem; font-weight: 700;
        }
        .ac-desc {
            font-size: .75rem; color: var(--muted);
            line-height: 1.4;
        }
        .ac-badge {
            font-size: .62rem; font-weight: 600;
            letter-spacing: .09em; text-transform: uppercase;
            padding: .2rem .6rem; border-radius: 20px;
            margin-top: .25rem;
        }
        .access-card.worker  .ac-badge { background: rgba(37,99,235,.15); color: var(--accent); border: 1px solid rgba(37,99,235,.25); }
        .access-card.recep   .ac-badge { background: rgba(6,182,212,.15);  color: var(--cyan);   border: 1px solid rgba(6,182,212,.25);  }
        .access-card.display .ac-badge { background: rgba(16,185,129,.15); color: var(--green);  border: 1px solid rgba(16,185,129,.25); }

        /* ── STATS BOTTOM ── */
        .bottom-stats {
            display: flex; gap: 2rem;
            align-items: center;
        }
        .bs-item {
            display: flex; flex-direction: column; align-items: center; gap: .2rem;
        }
        .bs-num {
            font-family: 'Syne', sans-serif;
            font-size: 1.6rem; font-weight: 800; line-height: 1;
        }
        .bs-label {
            font-size: .65rem; color: var(--muted);
            text-transform: uppercase; letter-spacing: .1em;
        }
        .bs-divider {
            width: 1px; height: 36px; background: var(--border);
        }

        /* ── FOOTER ── */
        footer {
            position: relative; z-index: 10;
            padding: .75rem 2.5rem;
            border-top: 1px solid var(--border);
            display: flex; align-items: center; justify-content: space-between;
            font-size: .68rem; color: var(--muted);
            background: rgba(7,12,21,.6);
            backdrop-filter: blur(8px);
            flex-shrink: 0;
        }
        .footer-dot {
            width: 6px; height: 6px; border-radius: 50%;
            background: var(--green);
            box-shadow: 0 0 5px var(--green);
            animation: blink 2s infinite;
            display: inline-block; margin-right: .4rem;
        }
        @keyframes blink { 0%,100%{opacity:1} 50%{opacity:.3} }

        /* animación entrada */
        .fade-up {
            animation: fadeUp .5s cubic-bezier(.16,1,.3,1) both;
        }
        .fade-up:nth-child(2) { animation-delay: .08s; }
        .fade-up:nth-child(3) { animation-delay: .16s; }
        @keyframes fadeUp {
            from { opacity:0; transform:translateY(20px); }
            to   { opacity:1; transform:translateY(0); }
        }