/* Linkea - Sistema de diseño (tema oscuro, regla 80/20)
   Primario 80%: #09276E · Secundario 20%: #FF4400 · Íconos: #0066FF */

:root {
    --linkea-primary: #09276E;
    --linkea-primary-700: #0e2f80;
    --linkea-primary-800: #0a225f;
    --linkea-primary-900: #061a4d;
    --linkea-ink: #04123a;            /* fondo más profundo */
    --linkea-night: #1C1837;          /* azul-negro nocturno */
    --linkea-secondary: #FF4400;
    --linkea-secondary-600: #e63d00;
    --linkea-icon: #0066FF;
    --linkea-text: #eef2fb;
    --linkea-muted: #93a4cc;
    --linkea-border: rgba(255, 255, 255, 0.09);
    --linkea-border-strong: rgba(255, 255, 255, 0.16);
    --linkea-danger: #ff5a6a;
    --linkea-success: #34d399;
    --linkea-radius: 18px;
    --linkea-shadow: 0 18px 40px -22px rgba(0, 0, 0, 0.65);
    --linkea-shadow-sm: 0 8px 20px -14px rgba(0, 0, 0, 0.6);
}

* { box-sizing: border-box; }

body {
    background:
        radial-gradient(1200px 600px at 80% -10%, rgba(0, 102, 255, 0.18), transparent 60%),
        radial-gradient(900px 500px at -10% 10%, rgba(255, 68, 0, 0.10), transparent 55%),
        linear-gradient(165deg, var(--linkea-night) 0%, var(--linkea-ink) 35%, var(--linkea-primary-900) 70%, var(--linkea-primary) 100%);
    background-attachment: fixed;
    color: var(--linkea-text);
    min-height: 100vh;
    font-family: 'Exo 2', system-ui, -apple-system, sans-serif;
    -webkit-font-smoothing: antialiased;
}

a { color: var(--linkea-secondary); text-decoration: none; transition: color .15s ease; }
a:hover { color: var(--linkea-secondary-600); }

.text-secondary-linkea { color: var(--linkea-secondary) !important; }
.text-icon-linkea { color: var(--linkea-icon) !important; }
.text-muted-linkea { color: var(--linkea-muted) !important; }
.fw-800 { font-weight: 800; }

/* Marca tipográfica (respaldo cuando no se usa el logo en imagen) */
.linkea-brand { font-weight: 800; letter-spacing: .3px; }
.linkea-brand .kea { color: var(--linkea-secondary); }
.linkea-logo { height: 56px; width: auto; max-width: 100%; object-fit: contain; }
.linkea-logo-sm { height: 36px; width: auto; max-width: 100%; object-fit: contain; }
.linkea-logo-lg { height: 56px; width: auto; max-width: 100%; object-fit: contain; }

/* ─── Botones ─────────────────────────────────────────── */
.btn { border-radius: 6px; font-weight: 600; transition: transform .12s ease, background .15s ease, box-shadow .15s ease; }
.btn:active { transform: translateY(1px); }

.btn-linkea {
    background: linear-gradient(180deg, #ff5a1f, var(--linkea-secondary));
    border: 1px solid var(--linkea-secondary);
    color: #fff;
    box-shadow: 0 10px 24px -12px rgba(255, 68, 0, 0.7);
}
.btn-linkea:hover { background: var(--linkea-secondary-600); border-color: var(--linkea-secondary-600); color: #fff; box-shadow: 0 14px 28px -12px rgba(255, 68, 0, 0.8); }

.btn-outline-linkea { border: 1px solid var(--linkea-border-strong); color: var(--linkea-text); background: rgba(255,255,255,.02); }
.btn-outline-linkea:hover { background: rgba(255,255,255,.08); color: #fff; }

/* ─── Tarjetas / superficies ──────────────────────────── */
.linkea-card {
    background: linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.015));
    border: 1px solid var(--linkea-border);
    border-radius: var(--linkea-radius);
    box-shadow: var(--linkea-shadow);
    backdrop-filter: blur(4px);
}
.linkea-card.hoverable { transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease; }
.linkea-card.hoverable:hover { transform: translateY(-3px); border-color: var(--linkea-border-strong); box-shadow: var(--linkea-shadow); }

/* Chip de icono (cuadro redondeado con icono) */
.icon-chip {
    width: 48px; height: 48px;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: 14px;
    background: rgba(0, 102, 255, 0.14);
    border: 1px solid rgba(0, 102, 255, 0.25);
    color: var(--linkea-icon);
}
.icon-chip.orange { background: rgba(255, 68, 0, 0.14); border-color: rgba(255, 68, 0, 0.3); color: var(--linkea-secondary); }
.icon-chip.sm { width: 38px; height: 38px; border-radius: 11px; }

/* ─── Navbar pública ──────────────────────────────────── */
.linkea-navbar {
    background: transparent;
    padding-top: .4rem;
    transition: transform .35s cubic-bezier(0.4, 0, 0.2, 1),
                background-color .3s ease,
                box-shadow .3s ease,
                padding .3s ease;
    will-change: transform;
}
.linkea-navbar .container {
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
    padding-bottom: .5rem;
    transition: border-color .3s ease;
}
.linkea-navbar .linkea-logo { height: 44px; }

/* Aparece un color de fondo cuando la página ya no está en el tope */
.linkea-navbar.is-scrolled {
    background: linear-gradient(90deg,
        rgba(28, 24, 55, 0.94) 0%,
        rgba(9, 39, 110, 0.94) 55%,
        rgba(13, 63, 166, 0.94) 100%);   /* night → primary → azul */
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 10px 30px -16px rgba(0, 0, 0, 0.6);
    padding-top: .3rem;
}
.linkea-navbar.is-scrolled .linkea-logo { height: 38px; }
.linkea-navbar.is-scrolled .container {
    border-bottom-color: transparent;
}

/* Se oculta al hacer scroll hacia abajo; reaparece al subir */
.linkea-navbar.is-hidden {
    transform: translateY(-100%);
}

/* La categoría salta a una segunda línea solo en escritorio (nav horizontal) */
.nav-cat { display: block; }

/* ─── Menú móvil tipo offcanvas (panel lateral) ──────────── */
.linkea-offcanvas {
    width: min(86vw, 340px);
    background: linear-gradient(180deg,
        rgba(28, 24, 55, 0.99) 0%,
        rgba(9, 39, 110, 0.99) 60%,
        rgba(13, 63, 166, 0.99) 100%);
    color: #fff;
    border-right: 1px solid rgba(255, 255, 255, 0.09);
    box-shadow: 18px 0 40px -20px rgba(0, 0, 0, 0.7);
}
.linkea-offcanvas .offcanvas-header {
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    padding: 1rem 1.25rem;
}
.linkea-offcanvas .offcanvas-header .linkea-logo { height: 36px; }
.linkea-offcanvas .offcanvas-body {
    display: flex;
    flex-direction: column;
    padding: 1rem 1.25rem 1.5rem;
}

/* Cada categoría en una sola línea, ocupando todo el ancho */
.linkea-offcanvas .navbar-nav { gap: .15rem; margin: 0; }
.linkea-offcanvas .nav-link {
    display: block;
    color: #fff;
    text-align: left;
    padding: .8rem .9rem;
    border-radius: 10px;
    font-size: 1.05rem;
}
.linkea-offcanvas .nav-link:hover,
.linkea-offcanvas .nav-link.active {
    color: var(--linkea-secondary);
    background: rgba(255, 255, 255, 0.06);
}

/* Separador y botones de acción a todo el ancho */
.linkea-offcanvas .nav-auth {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: .5rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.linkea-offcanvas .nav-auth .btn { width: 100%; justify-content: center; }
.linkea-offcanvas .nav-auth .btn-acceder {
    color: var(--linkea-secondary);
    font-weight: 600;
    text-align: center;
    padding: .6rem 1rem;
}

.linkea-navbar .nav-link {
    color: #fff;
    font-size: 1rem;
    position: relative;
    padding: .5rem .85rem;
    white-space: nowrap;
    transition: color .15s ease;
}
.linkea-navbar .nav-link:hover { color: var(--linkea-secondary); }
.linkea-navbar .nav-link.active { color: var(--linkea-secondary); font-weight: 600; }
.linkea-navbar .nav-link.active::after {
    display: none; /* Sin barrita abajo, el color ya indica activo */
}

/* Grupo Acceder / Crear cuenta con separador */
.linkea-navbar .nav-auth { gap: 1.25rem; }

/* Separador vertical entre el menú y el bloque de auth */
.linkea-navbar .nav-auth-divider {
    width: 1px;
    height: 1.5rem;
    background: rgba(255, 255, 255, 0.25);
    margin-right: .25rem;
}

/* Acceder / Crear cuenta en color naranja-rojo */
.linkea-navbar .nav-auth a.btn-acceder {
    color: var(--linkea-secondary);
    font-weight: 600;
    font-size: .88rem;
    text-decoration: none;
    padding: .5rem .25rem;
    transition: color .15s ease;
}
.linkea-navbar .nav-auth a.btn-acceder:hover { color: var(--linkea-secondary-600); }

/* ─── Formularios ─────────────────────────────────────── */
.form-label { font-size: .85rem; color: var(--linkea-muted); font-weight: 600; }
.form-control, .form-select {
    background: rgba(0,0,0,.22);
    border: 1px solid var(--linkea-border-strong);
    color: var(--linkea-text);
    border-radius: 12px;
    padding: .6rem .85rem;
}
.form-control:focus, .form-select:focus {
    background: rgba(0,0,0,.28);
    border-color: var(--linkea-secondary);
    box-shadow: 0 0 0 .2rem rgba(255, 68, 0, .14);
    color: var(--linkea-text);
}
.form-control::placeholder { color: #6f80a8; }
/* Oculta las flechas nativas de los inputs numéricos (no van con el tema) */
.form-control[type="number"] { -moz-appearance: textfield; appearance: textfield; }
.form-control[type="number"]::-webkit-outer-spin-button,
.form-control[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.input-icon { position: relative; }
.input-icon .msi { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--linkea-muted); font-size: 20px; }
.input-icon .form-control { padding-left: 42px; }
/* Fix for eye icon inside toggle button */
.input-icon .toggle-password .msi { position: static; transform: none; display: inline-flex; }

/* ─── Combobox buscable (select con búsqueda, sin librerías) ─── */
.lk-combo { position: relative; }
.lk-combo-menu {
    position: absolute;
    z-index: 1050;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    max-height: 260px;
    overflow-y: auto;
    background: #0b1e4d;
    border: 1px solid var(--linkea-border-strong);
    border-radius: 12px;
    box-shadow: var(--linkea-shadow);
    padding: 4px;
    margin: 0;
    list-style: none;
}
.lk-combo-menu[hidden] { display: none; }
.lk-combo-option {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    padding: .5rem .65rem;
    border-radius: 8px;
    cursor: pointer;
    color: var(--linkea-text);
    font-size: .93rem;
}
.lk-combo-option small { color: var(--linkea-muted); white-space: nowrap; font-size: .78rem; }
.lk-combo-option:hover,
.lk-combo-option.is-active { background: rgba(255, 68, 0, .22); }
.lk-combo-option[aria-selected="true"] { color: #fff; font-weight: 700; }
.lk-combo-empty { padding: .6rem .65rem; color: var(--linkea-muted); font-size: .88rem; }
/* Campo derivado automáticamente (no editable por la persona) */
.form-control[readonly].lk-auto { background: rgba(255,255,255,.04); color: var(--linkea-muted); cursor: default; }

/* ─── Alerts ──────────────────────────────────────────── */
.alert { border-radius: 14px; border: 1px solid var(--linkea-border); }
.alert-success { background: rgba(52,211,153,.12); border-color: rgba(52,211,153,.3); color: #c9f7e5; }
.alert-danger { background: rgba(255,90,106,.12); border-color: rgba(255,90,106,.3); color: #ffd7dc; }
.alert-soft-warning { background: rgba(255,176,32,.12); border: 1px solid rgba(255,176,32,.3); color: #ffe9c2; }
.alert-soft-danger { background: rgba(239,68,68,.12); border: 1px solid rgba(239,68,68,.35); color: #ffd5d5; }
.alert-soft-info { background: rgba(0,102,255,.12); border: 1px solid rgba(0,102,255,.32); color: #cfe0ff; }

/* ─── Auth ────────────────────────────────────────────── */
.auth-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; position: relative; z-index: 10; }
.auth-card { width: 100%; max-width: 430px; padding: 38px 34px; position: relative; z-index: 2; }

/* Interactive Auth Background Elements */
.auth-bg-elements {
    position: fixed;
    inset: 0;
    overflow: hidden;
    z-index: 0;
    pointer-events: none;
}
.auth-bg-shape {
    position: absolute;
    border-radius: 50%;
    filter: blur(90px);
    opacity: 0.5;
    animation: authFloatShape 20s infinite ease-in-out alternate;
}
.shape-1 {
    width: 400px;
    height: 400px;
    background: var(--linkea-icon);
    top: -10%;
    left: -10%;
    animation-delay: 0s;
}
.shape-2 {
    width: 450px;
    height: 450px;
    background: var(--linkea-secondary);
    bottom: -15%;
    right: -10%;
    animation-delay: -5s;
    animation-duration: 25s;
}
.shape-3 {
    width: 350px;
    height: 350px;
    background: #6a3be8; /* Deep purple */
    top: 40%;
    left: 60%;
    animation-delay: -10s;
    animation-duration: 22s;
}

@keyframes authFloatShape {
    0% { transform: translate(0, 0) scale(1); }
    50% { transform: translate(40px, 60px) scale(1.1); }
    100% { transform: translate(-30px, -40px) scale(0.9); }
}

/* ─── Panel ───────────────────────────────────────────── */
.panel-shell { display: flex; min-height: 100vh; }

/* Sidebar - desktop siempre visible, móvil off-canvas */
.panel-sidebar {
    width: 260px; flex-shrink: 0;
    background: linear-gradient(180deg, rgba(4,18,58,.98), rgba(6,26,77,.98));
    border-right: 1px solid var(--linkea-border);
    padding: 22px 16px;
    position: sticky; top: 0; height: 100vh; overflow-y: auto;
    transition: transform .3s cubic-bezier(.4,0,.2,1);
    z-index: 1000;
}
.panel-main { flex: 1; padding: 26px 30px 100px; min-width: 0; }

/* Off-canvas en móvil */
@media (max-width: 991.98px) {
    .panel-shell { flex-direction: column; }
    .panel-sidebar {
        position: fixed; top: 0; left: 0; height: 100vh;
        transform: translateX(-100%);
        border-right: 1px solid var(--linkea-border-strong);
        box-shadow: 8px 0 32px rgba(0,0,0,.5);
        z-index: 1045;   /* por encima del topbar (1030) al abrirse en móvil */
    }
    .panel-sidebar.is-open { transform: translateX(0); }
    .panel-main { padding: 20px 16px 100px; }
}

/* Overlay oscuro al abrir sidebar */
.sidebar-overlay {
    display: none;
    position: fixed; inset: 0;
    background: rgba(0,0,0,.55);
    backdrop-filter: blur(3px);
    z-index: 1040;   /* sobre el topbar (1030), bajo el sidebar (1045) */
    opacity: 0;
    transition: opacity .3s ease;
}
.sidebar-overlay.is-visible { display: block; opacity: 1; }
body.sidebar-open { overflow: hidden; }

/* Botón hamburguesa */
.sidebar-toggle {
    width: 40px; height: 40px;
    border: 1px solid var(--linkea-border-strong);
    border-radius: 10px;
    background: rgba(255,255,255,.05);
    display: flex; flex-direction: column;
    align-items: center; justify-content: center; gap: 5px;
    cursor: pointer; padding: 0;
    transition: background .15s ease, border-color .15s ease;
}
.sidebar-toggle:hover { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.3); }
.sidebar-toggle-bar {
    display: block;
    width: 18px; height: 2px;
    background: var(--linkea-text);
    border-radius: 2px;
    transition: transform .25s ease, opacity .25s ease;
}
body.sidebar-open .sidebar-toggle-bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
body.sidebar-open .sidebar-toggle-bar:nth-child(2) { opacity: 0; }
body.sidebar-open .sidebar-toggle-bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.panel-sidebar .side-label { color: #5f73a6; font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; padding: 0 12px; margin: 18px 0 8px; }
.panel-sidebar .nav-link {
    display: flex; align-items: center; gap: 12px;
    color: var(--linkea-muted); border-radius: 12px; padding: 11px 12px; font-weight: 500;
    transition: all .2s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
}
.panel-sidebar .nav-link .msi { font-size: 22px; transition: transform .2s ease; }
.panel-sidebar .nav-link:hover { 
    background: rgba(255,255,255,.08); 
    color: #fff; 
    box-shadow: 0 4px 12px rgba(0,0,0,.15);
}
.panel-sidebar .nav-link:hover .msi { transform: scale(1.1); }
.panel-sidebar .nav-link:active { transform: scale(0.97); }
.panel-sidebar .nav-link.active { 
    background: linear-gradient(135deg, var(--linkea-secondary), #ff6a00); 
    color: #fff; 
    box-shadow: 0 6px 16px rgba(255, 68, 0, 0.35); 
}
.panel-sidebar .nav-link.disabled { opacity: .55; }
.soon { font-size: .62rem; letter-spacing: .06em; text-transform: uppercase; background: rgba(255,255,255,.08); color: #aab8dd; padding: 2px 7px; border-radius: 999px; margin-left: auto; }

/* Sidebar collapsed state (desktop only) */
@media (min-width: 992px) {
    body.sidebar-collapsed .panel-sidebar { width: 84px; padding-left: 12px; padding-right: 12px; overflow: visible; }
    body.sidebar-collapsed .sidebar-logo-full { display: none !important; }
    body.sidebar-collapsed .sidebar-logo-icon { display: block !important; }
    body.sidebar-collapsed .panel-sidebar .nav-link { justify-content: center; padding: 12px 0; margin-bottom: 4px; }
    body.sidebar-collapsed .panel-sidebar .nav-link .nav-text,
    body.sidebar-collapsed .panel-sidebar .nav-link .soon { display: none !important; }
    body.sidebar-collapsed .panel-sidebar .side-label { display: none !important; }
    
    body.sidebar-collapsed .panel-sidebar .nav-link::after {
        content: attr(data-title);
        position: absolute;
        left: 100%;
        top: 50%;
        margin-left: 14px;
        background: var(--linkea-ink);
        border: 1px solid var(--linkea-border-strong);
        color: white;
        padding: 6px 14px;
        border-radius: 8px;
        font-size: 0.8rem;
        font-weight: 600;
        white-space: nowrap;
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.2s, transform 0.2s;
        box-shadow: var(--linkea-shadow-sm);
        z-index: 1050;
        transform: translate(10px, -50%);
    }
    body.sidebar-collapsed .panel-sidebar .nav-link::before {
        content: '';
        position: absolute;
        left: 100%;
        top: 50%;
        margin-left: 6px;
        border-width: 6px 8px 6px 0;
        border-style: solid;
        border-color: transparent var(--linkea-border-strong) transparent transparent;
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.2s, transform 0.2s;
        z-index: 1051;
        transform: translate(10px, -50%);
    }
    body.sidebar-collapsed .panel-sidebar .nav-link:hover::after,
    body.sidebar-collapsed .panel-sidebar .nav-link:hover::before {
        opacity: 1;
        transform: translate(0, -50%);
    }
}

.topbar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; }
.avatar {
    width: 40px; height: 40px; border-radius: 12px; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    background: rgba(0,102,255,.18); border: 1px solid rgba(0,102,255,.3); color: #cfe0ff; font-weight: 700;
}
.role-chip { background: rgba(255,255,255,.08); border: 1px solid var(--linkea-border); border-radius: 999px; padding: 3px 12px; font-size: .76rem; color: #cdd8f5; }

.stat-value { font-size: 1.45rem; font-weight: 700; }
.page-title { font-weight: 700; letter-spacing: .2px; }

/* Hero icon rotado en dashboard */
.hero-icon-wrapper:hover { transform: rotate(0deg) !important; }
.hero-icon-wrapper .msi.hero { color: #fff; filter: drop-shadow(0 4px 12px rgba(0,0,0,.35)); transform: rotate(-10deg); display: block; }

/* Scrollbar sutil */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: rgba(255,255,255,.12); border-radius: 8px; }
::-webkit-scrollbar-track { background: transparent; }

/* ─── Catálogos (panel admin) ─────────────────────────────── */
.page-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.5rem; }
.page-header h1 { font-weight: 800; margin: 0; display: flex; align-items: center; gap: .6rem; }

.linkea-table { width: 100%; border-collapse: separate; border-spacing: 0; color: var(--linkea-text); }
.linkea-table thead th {
    text-align: left; font-size: .72rem; letter-spacing: .06em; text-transform: uppercase;
    color: var(--linkea-muted); font-weight: 700; padding: .65rem .9rem; border-bottom: 1px solid var(--linkea-border);
}
.linkea-table tbody td { padding: .7rem .9rem; border-bottom: 1px solid var(--linkea-border); vertical-align: middle; }
.linkea-table tbody tr:hover { background: rgba(255,255,255,.03); }
.linkea-table tbody tr:last-child td { border-bottom: 0; }
.linkea-table .child-row td:first-child { padding-left: 2.2rem; }
.linkea-table .child-row .tree-mark { color: var(--linkea-muted); margin-right: .35rem; }

.status-badge { display: inline-flex; align-items: center; gap: .35rem; padding: .2rem .6rem; border-radius: 999px; font-size: .75rem; font-weight: 600; }
.status-badge.is-active { background: rgba(52, 211, 153, .15); color: var(--linkea-success); }
.status-badge.is-inactive { background: rgba(255, 90, 106, .14); color: var(--linkea-danger); }
.type-pill { display: inline-flex; padding: .15rem .55rem; border-radius: 8px; font-size: .73rem; font-weight: 600; background: rgba(0,102,255,.14); color: var(--linkea-icon); }

.catalog-icon-img { width: 22px; height: 22px; object-fit: contain; vertical-align: middle; border-radius: 4px; }

/* Zona de subida del ícono PNG en el modal de catálogo */
.catalog-upload-drop { min-height: 132px; }
.catalog-upload-drop .upload-current-img { object-fit: contain; padding: 14px; background: rgba(9,39,110,.35); }
.catalog-upload-drop.is-filled .upload-cta { background: rgba(6,16,40,.72); backdrop-filter: blur(2px); border-radius: 13px; opacity: 0; }
.catalog-upload-drop.is-filled:hover .upload-cta { opacity: 1; }
.catalog-img-remove { color: var(--linkea-secondary); text-decoration: none; font-weight: 600; }
.catalog-img-remove:hover { color: var(--linkea-secondary); text-decoration: underline; }

.row-actions { display: inline-flex; gap: .4rem; }
.btn-icon { width: 34px; height: 34px; padding: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 6px; }
.btn-icon.danger { color: var(--linkea-danger); border-color: rgba(255,90,106,.35); }
.btn-icon.danger:hover { background: rgba(255,90,106,.14); color: #fff; }

/* Chevron de DataTables Responsive: por defecto es negro (rgba(0,0,0,.5)) y no
   se distingue sobre el fondo oscuro. Recolorear con el azul de iconos.
   Prefijo .linkea-card = más específico que el plugin, gana sin !important
   aunque el CSS de Responsive se cargue después. */
.linkea-card table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control:before,
.linkea-card table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control:before {
    border-left-color: var(--linkea-icon, #0066FF);
}
.linkea-card table.dataTable.dtr-inline.collapsed > tbody > tr.dtr-expanded > td.dtr-control:before,
.linkea-card table.dataTable.dtr-inline.collapsed > tbody > tr.dtr-expanded > th.dtr-control:before {
    border-top-color: var(--linkea-icon, #0066FF);
}

.empty-state { text-align: center; padding: 3rem 1rem; color: var(--linkea-muted); }
.empty-state .msi { font-size: 3rem; opacity: .5; }

.form-control, .form-select { background: rgba(255,255,255,.04); border: 1px solid var(--linkea-border-strong); color: var(--linkea-text); }
.form-control:focus, .form-select:focus { background: rgba(255,255,255,.06); color: var(--linkea-text); border-color: var(--linkea-secondary); box-shadow: 0 0 0 .2rem rgba(255,68,0,.15); }

/* Select dropdowns dark theme */
.form-select option {
    background: var(--linkea-primary-900);
    color: var(--linkea-text);
    padding: .4rem .6rem;
}
.form-select option:checked,
.form-select option:hover {
    background: rgba(255, 68, 0, .35);
    color: #fff;
}
.form-select optgroup {
    background: var(--linkea-ink);
    color: var(--linkea-secondary);
    font-weight: 700;
    font-style: normal;
    font-size: .82rem;
    letter-spacing: .02em;
}

/* Bootstrap btn-check (radio/checkbox buttons) - dark theme */
.btn-check + .btn-outline-linkea {
    border: 1px solid var(--linkea-border-strong);
    color: var(--linkea-muted);
    background: rgba(255,255,255,.03);
}
.btn-check:hover + .btn-outline-linkea {
    background: rgba(255,255,255,.08);
    color: #fff;
}
.btn-check:checked + .btn-outline-linkea,
.btn-check:active + .btn-outline-linkea {
    background: rgba(255, 68, 0, .16) !important;
    border-color: var(--linkea-secondary) !important;
    color: #fff !important;
    box-shadow: 0 0 0 3px rgba(255,68,0,.12);
}
.btn-check:focus + .btn-outline-linkea {
    box-shadow: 0 0 0 .25rem rgba(255,68,0,.18);
}

/* File inputs dark theme */
input[type="file"].form-control {
    color: var(--linkea-muted);
    padding: .45rem .75rem;
}
input[type="file"].form-control::file-selector-button {
    background: rgba(255,255,255,.08);
    border: 1px solid var(--linkea-border-strong);
    color: var(--linkea-text);
    border-radius: 6px;
    padding: .35rem .75rem;
    margin-right: .75rem;
    font-weight: 600;
    font-family: inherit;
    transition: background .15s ease;
    cursor: pointer;
}
input[type="file"].form-control::file-selector-button:hover {
    background: rgba(255,255,255,.15);
}

/* Time / date inputs dark theme */
input[type="time"].form-control::-webkit-calendar-picker-indicator,
input[type="date"].form-control::-webkit-calendar-picker-indicator {
    filter: invert(.7);
    cursor: pointer;
}

/* Accent color global for checkboxes/radios */
input[type="checkbox"],
input[type="radio"] {
    accent-color: var(--linkea-secondary);
}

.form-text { color: var(--linkea-muted); }

[x-cloak] { display: none !important; }

/* ─── Modal (panel admin) ─────────────────────────────────── */
.linkea-modal { background: var(--linkea-primary-800); border: 1px solid var(--linkea-border-strong); border-radius: var(--linkea-radius); color: var(--linkea-text); }
.linkea-modal .modal-header, .linkea-modal .modal-footer { border-color: var(--linkea-border); }
.linkea-modal .modal-title { color: #fff; font-weight: 700; }

/* ─── DataTables (tema oscuro + paginación moderna) ──────── */
.dt-container { color: var(--linkea-text); }

/* Barra superior: buscador y selector de longitud */
.dt-container .dt-search,
.dt-container .dt-length { display: flex; align-items: center; gap: .5rem; }

.dt-container .dt-search input,
.dt-container .dt-length select,
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select {
    background: rgba(255,255,255,.05);
    border: 1px solid var(--linkea-border-strong);
    color: var(--linkea-text);
    border-radius: 10px;
    padding: .4rem .8rem;
    font-family: 'Exo 2', sans-serif;
    font-size: .875rem;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.dt-container .dt-search input:focus,
.dt-container .dt-length select:focus,
.dataTables_wrapper .dataTables_filter input:focus,
.dataTables_wrapper .dataTables_length select:focus {
    border-color: var(--linkea-secondary);
    box-shadow: 0 0 0 3px rgba(255,68,0,.12);
    outline: none;
}
.dt-container label,
.dataTables_wrapper .dataTables_filter label,
.dataTables_wrapper .dataTables_length label { color: var(--linkea-muted); font-size: .82rem; }
.dt-container .dt-info,
.dataTables_wrapper .dataTables_info { color: var(--linkea-muted); font-size: .82rem; padding-top: .5rem; }
.dt-container .dt-length select option,
.dataTables_wrapper .dataTables_length select option { background: var(--linkea-primary-900); }

/* ─── Paginación moderna ─── */
.dt-container .dt-paging,
.dataTables_wrapper .dataTables_paginate {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding-top: .5rem;
}

/* Resetear Bootstrap pagination base */
.dt-container .pagination,
.dataTables_wrapper .dataTables_paginate .pagination {
    display: flex;
    align-items: center;
    gap: .3rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* Cada botón */
.dt-container .pagination .page-item .page-link,
.dataTables_wrapper .dataTables_paginate .pagination .page-item .page-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: 0 .6rem;
    border-radius: 10px;
    border: 1px solid var(--linkea-border);
    background: rgba(255,255,255,.04);
    color: var(--linkea-muted);
    font-size: .83rem;
    font-weight: 600;
    font-family: 'Exo 2', sans-serif;
    line-height: 1;
    transition: background .15s ease, border-color .15s ease, color .15s ease, transform .1s ease, box-shadow .15s ease;
    text-decoration: none;
    user-select: none;
}

/* Hover */
.dt-container .pagination .page-item:not(.active):not(.disabled) .page-link:hover,
.dataTables_wrapper .dataTables_paginate .pagination .page-item:not(.active):not(.disabled) .page-link:hover {
    background: rgba(255,255,255,.1);
    border-color: var(--linkea-border-strong);
    color: #fff;
    transform: translateY(-1px);
}

/* Página activa — gradiente naranja */
.dt-container .pagination .page-item.active .page-link,
.dataTables_wrapper .dataTables_paginate .pagination .page-item.active .page-link {
    background: linear-gradient(180deg, #ff5a1f, var(--linkea-secondary));
    border-color: var(--linkea-secondary);
    color: #fff;
    box-shadow: 0 6px 18px -8px rgba(255,68,0,.7);
    cursor: default;
    pointer-events: none;
}

/* Deshabilitado */
.dt-container .pagination .page-item.disabled .page-link,
.dataTables_wrapper .dataTables_paginate .pagination .page-item.disabled .page-link {
    background: transparent;
    border-color: var(--linkea-border);
    color: rgba(255,255,255,.2);
    cursor: not-allowed;
    pointer-events: none;
}

/* Flechas de primera/última: íconos compactos */
.dt-container .pagination .page-item:first-child .page-link,
.dt-container .pagination .page-item:last-child .page-link,
.dataTables_wrapper .dataTables_paginate .pagination .page-item:first-child .page-link,
.dataTables_wrapper .dataTables_paginate .pagination .page-item:last-child .page-link {
    font-size: .75rem;
    letter-spacing: -.5px;
}

/* Ordenamiento columnas */
table.dataTable thead th.dt-orderable-asc:hover,
table.dataTable thead th.dt-orderable-desc:hover { color: #fff; }
table.dataTable > thead .dt-column-order::before,
table.dataTable > thead .dt-column-order::after { color: var(--linkea-muted); }

/* ─── Estados de ficha (listing) ──────────────────────────── */
.status-badge.is-draft { background: rgba(147,164,204,.16); color: var(--linkea-muted); }
.status-badge.is-pending { background: rgba(255,176,32,.16); color: #ffb020; }
.status-badge.is-approved { background: rgba(52,211,153,.15); color: var(--linkea-success); }
.status-badge.is-rejected { background: rgba(255,90,106,.16); color: var(--linkea-danger); }

/* ─── Wizard multipaso ────────────────────────────────────── */
/* ─── Wizard steps bar ─────────────────────────────────── */
.wizard-steps { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1.5rem; }
.wizard-steps .wstep {
    display: flex; align-items: center; gap: .45rem; padding: .45rem .85rem; border-radius: 999px;
    background: rgba(255,255,255,.04); border: 1px solid var(--linkea-border); color: var(--linkea-muted);
    font-size: .82rem; font-weight: 600; cursor: pointer;
    transition: background .18s ease, border-color .18s ease, color .18s ease, transform .12s ease;
    user-select: none;
}
.wizard-steps .wstep:hover { background: rgba(255,255,255,.08); color: #fff; }
.wizard-steps .wstep .num {
    width: 22px; height: 22px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    background: rgba(255,255,255,.10); font-size: .72rem; font-weight: 700;
    transition: background .18s ease, color .18s ease;
    flex-shrink: 0;
}
.wizard-steps .wstep.active {
    border-color: var(--linkea-secondary);
    color: #fff;
    background: rgba(255,68,0,.14);
    box-shadow: 0 0 0 3px rgba(255,68,0,.12);
    transform: translateY(-1px);
}
.wizard-steps .wstep.active .num { background: var(--linkea-secondary); color: #fff; }
.wizard-steps .wstep.done { color: var(--linkea-success); border-color: rgba(52,211,153,.3); background: rgba(52,211,153,.06); }
.wizard-steps .wstep.done .num { background: var(--linkea-success); color: #04123a; }

/* Ocultar label en pasos pequeños en móvil */
@media (max-width: 575.98px) {
    .wizard-steps .wstep .wstep-label { display: none; }
    .wizard-steps .wstep { padding: .45rem .6rem; }
}

.day-row { display: grid; grid-template-columns: 140px 1fr; gap: .75rem; align-items: center; padding: .4rem 0; border-bottom: 1px solid var(--linkea-border); }
.day-toggle.is-open { border-color: var(--linkea-secondary); background: rgba(255,255,255,.06); }
.day-times { display: grid; grid-template-columns: 1fr auto 1fr; gap: .6rem; align-items: center; }
.day-sep { color: var(--linkea-muted); font-size: .82rem; text-align: center; }
.day-closed { color: var(--linkea-muted); font-size: .85rem; font-style: italic; padding-left: .25rem; }

/* ─── Selector de hora tipo spinner (wizard · horarios) ─── */
.lk-tp { position: relative; min-width: 0; }
.lk-tp-icon {
    position: absolute; left: .65rem; top: 50%; transform: translateY(-50%);
    color: var(--linkea-icon); font-size: 18px; cursor: pointer; z-index: 2;
}
.lk-tp-input {
    padding-left: 2.2rem; padding-right: 2.3rem;
    cursor: pointer; caret-color: transparent;
}
.lk-tp-input::placeholder { color: var(--linkea-muted); }
.lk-tp-toggle {
    position: absolute; right: .3rem; top: 50%; transform: translateY(-50%);
    display: grid; place-items: center;
    width: 30px; height: 30px; padding: 0;
    border: 0; border-radius: 8px;
    background: transparent; color: var(--linkea-muted);
    cursor: pointer; z-index: 2;
    transition: color .12s ease, background .12s ease, transform .15s ease;
}
.lk-tp-toggle:hover { color: var(--linkea-secondary); background: rgba(255,68,0,.1); }
.lk-tp-toggle.is-open { transform: translateY(-50%) rotate(180deg); color: var(--linkea-secondary); }
.lk-tp-toggle .msi { font-size: 20px; }

.lk-tp-pop {
    position: absolute; top: calc(100% + 6px); left: 0; z-index: 60;
    display: flex; align-items: center; gap: .35rem;
    padding: .55rem .65rem;
    background: var(--linkea-primary-900);
    border: 1px solid var(--linkea-border-strong);
    border-radius: 14px;
    box-shadow: 0 22px 48px -16px rgba(0,0,0,.7);
}
.lk-tp-col { display: flex; flex-direction: column; align-items: center; gap: .1rem; }
.lk-tp-arrow {
    display: grid; place-items: center;
    width: 34px; height: 26px; padding: 0;
    border: 0; border-radius: 8px;
    background: transparent; color: var(--linkea-secondary);
    cursor: pointer; transition: background .12s ease;
}
.lk-tp-arrow:hover { background: rgba(255,68,0,.16); }
.lk-tp-arrow .msi { font-size: 22px; }
.lk-tp-num {
    min-width: 38px; padding: .15rem 0;
    text-align: center; font-weight: 700; font-size: .98rem;
    color: var(--linkea-text);
    font-variant-numeric: tabular-nums;
}
.lk-tp-colon { color: var(--linkea-muted); font-weight: 700; padding: 0 .1rem; }
@media (max-width: 575.98px) {
    .day-row { grid-template-columns: 1fr; gap: .5rem; }
}
.check-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .5rem; }
.check-chip { display: flex; align-items: center; gap: .5rem; padding: .5rem .75rem; border-radius: 12px; background: rgba(255,255,255,.03); border: 1px solid var(--linkea-border); cursor: pointer; }
.check-chip input { accent-color: var(--linkea-secondary); }
.check-chip.is-principal { opacity: .6; cursor: not-allowed; border-color: var(--linkea-secondary); background: rgba(255,68,0,.08); }
.media-prev { width: 100%; height: 140px; object-fit: cover; border-radius: 12px; border: 1px solid var(--linkea-border); }
.gallery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px,1fr)); gap: .75rem; }
.gallery-item { position: relative; }
.gallery-item img { width: 100%; height: 110px; object-fit: cover; border-radius: 10px; }

/* ─── Subida de imágenes (wizard · paso 5) ─── */
.upload-zone {
    background: rgba(255,255,255,.025);
    border: 1px solid var(--linkea-border);
    border-radius: 16px;
    padding: 1rem;
    height: 100%;
}
.upload-head { display: flex; align-items: center; gap: .65rem; margin-bottom: .85rem; }
.upload-head-ic {
    flex: 0 0 auto;
    display: grid; place-items: center;
    width: 38px; height: 38px; border-radius: 11px;
    background: rgba(255,68,0,.12);
    color: var(--linkea-secondary);
    border: 1px solid rgba(255,68,0,.25);
}
.upload-head-ic .msi { font-size: 20px; }
.upload-head-title { display: block; color: var(--linkea-text); font-weight: 700; font-size: .95rem; line-height: 1.1; }
.upload-head-sub { display: block; color: var(--linkea-muted); font-size: .76rem; }

.upload-input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); border: 0; }

.upload-drop {
    position: relative;
    display: flex; align-items: center; justify-content: center;
    width: 100%;
    border: 1.5px dashed var(--linkea-border-strong);
    border-radius: 13px;
    background: rgba(9,39,110,.18);
    cursor: pointer;
    overflow: hidden;
    transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
.upload-drop:hover,
.upload-drop:focus-within { border-color: var(--linkea-secondary); background: rgba(255,68,0,.06); }
.upload-drop.is-drag {
    border-color: var(--linkea-secondary);
    background: rgba(255,68,0,.12);
    box-shadow: 0 0 0 4px rgba(255,68,0,.12) inset;
}
.upload-zone[data-shape="square"] .upload-drop { aspect-ratio: 1/1; }
.upload-zone[data-shape="wide"]   .upload-drop { aspect-ratio: 16/6; min-height: 150px; }
.upload-drop-multi { min-height: 130px; }

.upload-cta {
    position: relative; z-index: 1;
    display: flex; flex-direction: column; align-items: center; gap: .25rem;
    text-align: center; padding: 1rem;
    color: var(--linkea-muted);
    pointer-events: none;
}
.upload-cta-ic {
    display: grid; place-items: center;
    width: 46px; height: 46px; border-radius: 50%;
    background: rgba(255,255,255,.05);
    border: 1px solid var(--linkea-border);
    margin-bottom: .15rem;
    transition: transform .15s ease, color .15s ease, background .15s ease;
}
.upload-cta-ic .msi { font-size: 24px; }
.upload-drop:hover .upload-cta-ic { transform: translateY(-2px); color: var(--linkea-secondary); background: rgba(255,68,0,.1); }
.upload-cta-text { font-size: .85rem; color: var(--linkea-text); }
.upload-cta-text strong { color: var(--linkea-secondary); font-weight: 700; }
.upload-cta-hint { font-size: .72rem; }

/* Imagen actual / preview ocupa el dropzone; el CTA se atenúa encima */
.upload-current-img {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    z-index: 0;
}
.upload-drop[data-has-current] .upload-cta,
.upload-drop.is-filled .upload-cta {
    background: rgba(6,16,40,.66);
    backdrop-filter: blur(2px);
    border-radius: 13px;
    opacity: 0;
    transition: opacity .15s ease;
}
.upload-drop[data-has-current]:hover .upload-cta,
.upload-drop.is-filled:hover .upload-cta { opacity: 1; }

/* Miniaturas de galería recién seleccionadas */
.upload-thumbs { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin-top: .85rem; }
.upload-thumbs:empty { display: none; }
.upload-thumb {
    width: 86px; height: 86px; border-radius: 11px;
    background-size: cover; background-position: center;
    border: 1px solid var(--linkea-border-strong);
    box-shadow: 0 6px 16px -10px rgba(0,0,0,.6);
}
.upload-thumb-count {
    font-size: .78rem; color: var(--linkea-muted);
    display: inline-flex; align-items: center;
    padding: .35rem .7rem; border-radius: 999px;
    background: rgba(255,255,255,.04); border: 1px solid var(--linkea-border);
}
.upload-error {
    display: none;
    margin: .6rem 0 0;
    font-size: .78rem;
    color: #ffb4a0;
    background: rgba(255,68,0,.1);
    border: 1px solid rgba(255,68,0,.35);
    border-radius: 9px;
    padding: .45rem .65rem;
}
.upload-error.is-shown { display: block; }

.upload-existing { margin-top: 1.1rem; padding-top: 1rem; border-top: 1px solid var(--linkea-border); }
.upload-existing-label {
    display: inline-flex; align-items: center; gap: .4rem;
    font-size: .78rem; color: var(--linkea-muted); margin-bottom: .65rem;
}

/* Zona de documentos (PDF: CV, portafolio) */
.upload-drop-file { min-height: 96px; }
.upload-file-name {
    display: none;
    align-items: center; gap: .55rem;
    margin-top: .7rem; padding: .5rem .7rem;
    border-radius: 10px;
    background: rgba(255,68,0,.08);
    border: 1px solid rgba(255,68,0,.28);
    color: var(--linkea-text);
    font-size: .8rem;
    word-break: break-all;
}
.upload-file-name.is-shown { display: flex; }
.upload-file-name .msi { color: var(--linkea-secondary); flex: 0 0 auto; }
.upload-file-current {
    display: flex; align-items: center; gap: .5rem;
    margin: .7rem 0 0; padding: .5rem .7rem;
    border-radius: 10px;
    background: rgba(255,255,255,.04);
    border: 1px solid var(--linkea-border);
    font-size: .8rem;
}
.upload-file-current .msi { color: var(--linkea-muted); flex: 0 0 auto; }
.upload-file-current .listing-link { word-break: break-all; }

/* ─── Selector de ubicación (Leaflet) ─── */
.location-map { height: 340px; width: 100%; border-radius: 12px; border: 1px solid var(--linkea-border); overflow: hidden; z-index: 0; }
.location-map .leaflet-control-attribution { font-size: .65rem; }
.location-map-status { font-size: .8rem; color: var(--linkea-muted); align-self: center; }

/* ─── Ghost button (para Cancelar/Anterior del footer) ─── */
.btn-ghost-linkea {
    background: rgba(255,255,255,.05);
    border: 1px solid var(--linkea-border-strong);
    color: var(--linkea-muted);
    border-radius: 6px;
    font-weight: 600;
    transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.btn-ghost-linkea:hover { background: rgba(255,255,255,.10); color: var(--linkea-text); border-color: rgba(255,255,255,.25); }

/* ─── Fixed footer bar full-viewport-width ───────────────── */
.wizard-footer-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 200;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 1rem;
    padding: .9rem 2rem;
    background: rgba(4, 18, 58, 0.97);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-top: 1px solid var(--linkea-border-strong);
    box-shadow: 0 -6px 28px -8px rgba(0,0,0,.75);
    transition: left .2s ease;
}

/* En desktop, dejar espacio al sidebar (260px → 84px colapsado) */
@media (min-width: 992px) {
    .wizard-footer-bar { left: 260px; }
    body.sidebar-collapsed .wizard-footer-bar { left: 84px; }
}

/* Izquierda: botón Cancelar / Anterior */
.wfb-left {
    display: flex;
    align-items: center;
    justify-content: flex-start;
}

/* Centro: pills de progreso + label */
.wfb-center {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .35rem;
}
.wfb-step-pills {
    display: flex;
    gap: .35rem;
    align-items: center;
}
.wfb-pip {
    width: 28px; height: 5px;
    border-radius: 999px;
    background: rgba(255,255,255,.12);
    cursor: pointer;
    transition: background .2s ease, width .2s ease, transform .15s ease;
}
.wfb-pip:hover { background: rgba(255,255,255,.28); transform: scaleY(1.3); }
.wfb-pip.active { background: var(--linkea-secondary); width: 36px; box-shadow: 0 2px 10px -2px rgba(255,68,0,.7); }
.wfb-pip.done { background: var(--linkea-success); }
.wfb-label {
    font-size: .77rem;
    font-weight: 600;
    color: var(--linkea-muted);
    letter-spacing: .03em;
}

/* Derecha: botones de acción */
.wfb-right {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .6rem;
}

/* Responsive */
@media (max-width: 991.98px) {
    .wizard-footer-bar { left: 0; }
}
@media (max-width: 767.98px) {
    .wizard-footer-bar {
        grid-template-columns: auto 1fr auto;
        padding: .75rem 1rem;
        gap: .5rem;
    }
    .wfb-label { display: none; }
    .wfb-pip { width: 22px; }
    .wfb-pip.active { width: 28px; }
}
@media (max-width: 575.98px) {
    /* Footer en una sola fila: secundarios solo icono, primario con texto */
    .wizard-footer-bar {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: .6rem .75rem;
        gap: .4rem;
    }
    .wfb-center { display: none; }
    .wfb-left,
    .wfb-right { gap: .35rem; flex: 0 0 auto; }
    .wizard-footer-bar .btn {
        padding-left: .7rem;
        padding-right: .7rem;
        font-size: .85rem;
    }
    /* Ocultar el texto de las acciones secundarias (deja solo el icono) */
    .wfb-btn-text { display: none; }
}

/* ═══════════════════════════════════════════════════════════
   FICHA PÚBLICA (detalle de negocio / profesional) — .lk-det
═══════════════════════════════════════════════════════════ */
.lk-det { padding-bottom: 4rem; }

/* ── Cabecera: portada como tarjeta contenida, perfil encima ── */
.lk-det-top { margin-top: 1.75rem; }
.lk-det-hero {
    position: relative;
    border-radius: var(--linkea-radius);
    overflow: hidden;
    border: 1px solid var(--linkea-border);
    box-shadow: var(--linkea-shadow);
    background-size: cover;
    background-position: center;
    background-color: var(--linkea-primary-900);
    min-height: 300px;
    display: flex;
}
.lk-det-hero--empty {
    background: linear-gradient(135deg, var(--linkea-primary-700), var(--linkea-primary-900));
}
/* Difuminado: oscurece la izquierda (legibilidad del texto) y desvanece hacia abajo. */
.lk-det-hero__overlay {
    position: absolute; inset: 0;
    background:
        linear-gradient(180deg, rgba(4,18,58,.05) 0%, rgba(4,18,58,.45) 55%, rgba(4,18,58,.96) 100%),
        linear-gradient(90deg, rgba(4,18,58,.88) 0%, rgba(4,18,58,.5) 45%, rgba(4,18,58,0) 80%);
}
.lk-det-hero__content {
    position: relative;
    z-index: 2;
    width: 100%;
    display: flex;
    gap: 1.5rem;
    align-items: center;
    flex-wrap: wrap;
    padding: 1.75rem 2rem;
}

.lk-det-profile__logo {
    width: 116px; height: 116px;
    border-radius: 50%;
    border: 3px solid rgba(255,255,255,.85);
    background: var(--linkea-primary-900);
    box-shadow: var(--linkea-shadow);
    overflow: hidden;
    flex-shrink: 0;
    align-self: flex-start;
    display: flex; align-items: center; justify-content: center;
}
.lk-det-profile__logo img { width: 100%; height: 100%; object-fit: cover; }
.lk-det-profile__logo--empty .msi { font-size: 52px; color: var(--linkea-icon); }

.lk-det-profile__info { flex: 1 1 300px; min-width: 0; }
.lk-det-profile__titlerow { display: flex; align-items: center; flex-wrap: wrap; gap: .6rem; margin-bottom: .35rem; }
.lk-det-profile__name { font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 800; color: #fff; margin: 0; line-height: 1.1; }

.lk-det-chip-icon { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; }
.lk-det-chip-icon--verified { background: rgba(0,102,255,.18); color: var(--linkea-icon); }
.lk-det-chip-icon .msi { font-size: 20px; }

.lk-det-badge-featured {
    display: inline-flex; align-items: center; gap: .25rem;
    background: rgba(255,68,0,.16); color: var(--linkea-secondary);
    border: 1px solid rgba(255,68,0,.35);
    padding: .2rem .6rem; border-radius: 999px; font-size: .78rem; font-weight: 600;
}
.lk-det-badge-featured .msi { font-size: 16px; }

.lk-det-profile__tagline { color: var(--linkea-text); font-size: 1rem; margin: 0 0 .5rem; }
.lk-det-profile__meta { display: flex; flex-wrap: wrap; gap: 1rem; color: var(--linkea-muted); font-size: .9rem; margin-bottom: .75rem; }
.lk-det-profile__meta span { display: inline-flex; align-items: center; gap: .3rem; }
.lk-det-profile__meta .msi { font-size: 18px; color: var(--linkea-icon); }
.lk-det-profile__desc { color: var(--linkea-muted); font-size: .92rem; line-height: 1.6; max-width: 640px; margin: 0; }

.lk-det-profile__actions { display: flex; flex-direction: row; flex-wrap: wrap; gap: .6rem; flex-shrink: 0; align-self: flex-end; margin-left: auto; }

/* ── Botones ── */
.lk-det-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
    padding: .6rem 1.1rem; border-radius: 12px;
    font-size: .9rem; font-weight: 600; white-space: nowrap;
    border: 1px solid var(--linkea-border-strong);
    background: rgba(255,255,255,.04); color: var(--linkea-text);
    cursor: pointer; transition: all .15s ease;
}
.lk-det-btn .msi { font-size: 19px; }
.lk-det-btn:hover { color: #fff; border-color: var(--linkea-border-strong); background: rgba(255,255,255,.08); }
.lk-det-btn--primary { background: linear-gradient(180deg,#ff5a1f,var(--linkea-secondary)); border-color: var(--linkea-secondary); color: #fff; }
.lk-det-btn--primary:hover { background: var(--linkea-secondary-600); color: #fff; box-shadow: 0 12px 24px -12px rgba(255,68,0,.8); }
.lk-det-btn--accent { background: linear-gradient(180deg,#2480ff,var(--linkea-icon)); border-color: var(--linkea-icon); color: #fff; }
.lk-det-btn--accent:hover { background: #0058dd; color: #fff; }
.lk-det-btn--block { display: flex; width: 100%; padding: .8rem; font-size: .95rem; }

/* ── Cuerpo / tarjetas ── */
.lk-det-body { margin-top: 1.5rem; }
.lk-det-card {
    background: rgba(255,255,255,.025);
    border: 1px solid var(--linkea-border);
    border-radius: var(--linkea-radius);
    box-shadow: var(--linkea-shadow-sm);
    padding: 1.4rem;
    margin-bottom: 1.5rem;
}
.lk-det-card__title { display: flex; align-items: center; gap: .5rem; font-size: 1rem; font-weight: 700; color: #fff; margin: 0 0 1rem; }
.lk-det-card__title .msi { font-size: 20px; color: var(--linkea-icon); }
.lk-det-card__head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.lk-det-link { display: inline-flex; align-items: center; gap: .25rem; color: var(--linkea-icon); font-size: .85rem; font-weight: 600; cursor: pointer; }
.lk-det-link:hover { color: var(--linkea-secondary); }
.lk-det-link .msi { font-size: 17px; }
.lk-det-prose { color: var(--linkea-muted); line-height: 1.7; white-space: pre-line; margin: 0; }

/* Datos del perfil profesional */
.lk-det-facts { display: flex; flex-wrap: wrap; gap: 1.25rem 2rem; }
.lk-det-facts > div { display: flex; flex-direction: column; gap: .15rem; }
.lk-det-facts span { color: var(--linkea-muted); font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; }
.lk-det-facts strong { color: #fff; font-weight: 600; font-size: .95rem; }
.lk-det-cred { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .5rem; color: var(--linkea-muted); font-size: .9rem; }
.lk-det-cred strong { color: #fff; }

/* Galería */
.lk-det-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px,1fr)); gap: .6rem; }
.lk-det-gallery__item { display: block; border-radius: 12px; overflow: hidden; }
.lk-det-gallery__item img { width: 100%; height: 100px; object-fit: cover; transition: transform .25s ease; }
.lk-det-gallery__item:hover img { transform: scale(1.07); }

/* Productos / servicios */
.lk-det-offers { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px,1fr)); gap: 1rem; }
.lk-det-offer { display: flex; gap: .85rem; padding: .75rem; border: 1px solid var(--linkea-border); border-radius: 14px; background: rgba(255,255,255,.02); }
.lk-det-offer__img { width: 64px; height: 64px; border-radius: 10px; flex-shrink: 0; background-size: cover; background-position: center; background-color: var(--linkea-primary-900); display: flex; align-items: center; justify-content: center; }
.lk-det-offer__img--empty .msi { color: var(--linkea-icon); font-size: 26px; }
.lk-det-offer__body { min-width: 0; }
.lk-det-offer__name { font-size: .95rem; font-weight: 700; color: #fff; margin: 0 0 .2rem; }
.lk-det-offer__desc { font-size: .82rem; color: var(--linkea-muted); line-height: 1.4; margin: 0 0 .35rem; }
.lk-det-offer__price { font-size: .85rem; font-weight: 700; color: var(--linkea-secondary); }

/* Mapa (Leaflet + tiles oscuros) */
.lk-det-map { position: relative; border-radius: 14px; overflow: hidden; border: 1px solid var(--linkea-border); height: 300px; background: var(--linkea-primary-900); z-index: 0; }
.lk-det-map iframe { display: block; width: 100%; height: 100%; border: 0; }
/* Marcador con color de marca */
.lk-map-pin { color: var(--linkea-secondary); display: flex; align-items: center; justify-content: center; background: none; border: 0; }
.lk-map-pin .msi { font-size: 40px; filter: drop-shadow(0 3px 4px rgba(0,0,0,.6)); }
/* Controles de Leaflet en tono oscuro */
.lk-det-map .leaflet-control-zoom a {
    background: var(--linkea-night); color: var(--linkea-text);
    border-color: var(--linkea-border);
}
.lk-det-map .leaflet-control-zoom a:hover { background: var(--linkea-primary-800); color: #fff; }
.lk-det-map .leaflet-bar { border: 1px solid var(--linkea-border); }
.lk-det-map .leaflet-control-attribution {
    background: rgba(4,18,58,.7); color: var(--linkea-muted);
}
.lk-det-map .leaflet-control-attribution a { color: var(--linkea-icon); }

/* Reseñas */
.lk-det-reviews { display: flex; gap: 1.5rem; flex-wrap: wrap; }
.lk-det-reviews__score { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 1rem 1.5rem; border: 1px solid var(--linkea-border); border-radius: 14px; background: rgba(255,255,255,.02); flex-shrink: 0; min-width: 140px; }
.lk-det-reviews__avg { font-size: 2.6rem; font-weight: 800; color: #fff; line-height: 1; }
.lk-det-reviews__count { color: var(--linkea-muted); font-size: .8rem; margin-top: .35rem; }
.lk-det-reviews__list { flex: 1 1 320px; display: flex; flex-direction: column; gap: 1rem; }
.lk-det-stars .msi { font-size: 18px; color: rgba(255,255,255,.2); }
.lk-det-stars .msi.is-on { color: #ffb400; }
.lk-det-stars--sm .msi { font-size: 15px; }
.lk-det-review { border-bottom: 1px solid var(--linkea-border); padding-bottom: 1rem; }
.lk-det-review:last-child { border-bottom: 0; padding-bottom: 0; }
.lk-det-review__top { display: flex; align-items: center; gap: .6rem; margin-bottom: .4rem; }
.lk-det-review__avatar { width: 36px; height: 36px; border-radius: 50%; background: linear-gradient(135deg,var(--linkea-icon),var(--linkea-primary)); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; flex-shrink: 0; }
.lk-det-review__name { display: block; color: #fff; font-size: .9rem; }
.lk-det-review__when { display: block; color: var(--linkea-muted); font-size: .75rem; }
.lk-det-review__text { color: var(--linkea-muted); font-size: .88rem; line-height: 1.55; margin: 0; }
.lk-det-review__reason { color: #ffb4a0; font-size: .8rem; margin: .35rem 0 0; }

/* Subcriterios del promedio (Calidad / Atención / Precio) */
.lk-det-subscores { display: flex; flex-direction: column; gap: .45rem; margin-top: .85rem; width: 100%; }
.lk-det-subscore { display: grid; grid-template-columns: 80px 1fr 34px; align-items: center; gap: .5rem; font-size: .78rem; color: var(--linkea-muted); }
.lk-det-subscore__bar { height: 6px; border-radius: 999px; background: rgba(255,255,255,.1); overflow: hidden; }
.lk-det-subscore__fill { height: 100%; border-radius: 999px; background: #ffb400; }
.lk-det-subscore__val { color: #fff; font-weight: 700; text-align: right; }

/* Bloque para dejar reseña */
.lk-det-reviewbox { margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--linkea-border); }
.lk-det-reviewbox__title { color: #fff; font-size: 1rem; font-weight: 700; margin: 0 0 .25rem; }
.lk-det-reviewbox__hint { color: var(--linkea-muted); font-size: .82rem; margin: 0 0 1rem; }
.lk-det-rate { display: flex; flex-direction: column; gap: .65rem; margin-bottom: 1rem; }
.lk-det-rate__row { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.lk-det-rate__label { min-width: 130px; color: var(--linkea-text); font-size: .85rem; font-weight: 600; }
.lk-det-rate__label small { display: block; color: var(--linkea-muted); font-weight: 400; font-size: .72rem; }
/* Selector de estrellas (input). Recorre en reversa para el hover con CSS puro como respaldo. */
.lk-stars-input { display: inline-flex; flex-direction: row-reverse; gap: .15rem; }
.lk-stars-input input { position: absolute; opacity: 0; pointer-events: none; }
.lk-stars-input label { cursor: pointer; color: rgba(255,255,255,.2); line-height: 1; transition: color .1s ease; }
.lk-stars-input label .msi { font-size: 26px; }
.lk-stars-input label:hover, .lk-stars-input label:hover ~ label,
.lk-stars-input input:checked ~ label { color: #ffb400; }
.lk-det-reviewbox textarea { width: 100%; background: rgba(255,255,255,.04); border: 1px solid var(--linkea-border-strong); border-radius: 12px; color: var(--linkea-text); padding: .75rem .9rem; font-size: .9rem; resize: vertical; min-height: 96px; }
.lk-det-reviewbox textarea:focus { outline: none; border-color: var(--linkea-icon); box-shadow: 0 0 0 .2rem rgba(0,102,255,.2); }
.lk-det-reviewbox__note { display: flex; align-items: center; gap: .5rem; color: var(--linkea-muted); font-size: .85rem; background: rgba(255,255,255,.03); border: 1px dashed var(--linkea-border-strong); border-radius: 12px; padding: .85rem 1rem; }
.lk-det-reviewbox__note .msi { color: var(--linkea-icon); }

/* Negocios relacionados */
.lk-det-related { display: flex; flex-direction: column; gap: .75rem; }
.lk-det-related__item { display: flex; gap: .85rem; align-items: center; padding: .65rem; border: 1px solid var(--linkea-border); border-radius: 14px; background: rgba(255,255,255,.02); transition: all .15s ease; }
.lk-det-related__item:hover { border-color: var(--linkea-border-strong); background: rgba(255,255,255,.05); transform: translateX(3px); }
.lk-det-related__logo { width: 52px; height: 52px; border-radius: 12px; overflow: hidden; flex-shrink: 0; background: var(--linkea-primary-900); display: flex; align-items: center; justify-content: center; }
.lk-det-related__logo img { width: 100%; height: 100%; object-fit: cover; }
.lk-det-related__logo--empty .msi { color: var(--linkea-icon); }
.lk-det-related__body { min-width: 0; }
.lk-det-related__name { display: flex; align-items: center; gap: .3rem; color: #fff; font-weight: 700; font-size: .92rem; }
.lk-det-related__verified { font-size: 15px; color: var(--linkea-icon); }
.lk-det-related__sub, .lk-det-related__meta { display: block; color: var(--linkea-muted); font-size: .78rem; }
.lk-det-related__meta { margin-top: .15rem; }
.lk-det-related__meta .msi { font-size: 14px; vertical-align: -2px; }

/* Sidebar — contacto */
.lk-det-contact { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .7rem; }
.lk-det-contact li { display: flex; align-items: center; gap: .65rem; font-size: .9rem; }
.lk-det-contact .msi { font-size: 19px; color: var(--linkea-icon); flex-shrink: 0; }
.lk-det-contact .lk-brand-ic { width: 19px; height: 19px; color: var(--linkea-icon); flex-shrink: 0; }
.lk-det-contact a { color: var(--linkea-text); word-break: break-word; }
.lk-det-contact a:hover { color: var(--linkea-secondary); }

.lk-det-social { margin-top: 1.1rem; padding-top: 1rem; border-top: 1px solid var(--linkea-border); }
.lk-det-social__label { display: block; color: var(--linkea-muted); font-size: .82rem; margin-bottom: .55rem; }
.lk-det-social__row { display: flex; flex-wrap: wrap; gap: .5rem; }
.lk-det-social__btn { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(0,102,255,.14); color: var(--linkea-icon); transition: all .15s ease; }
.lk-det-social__btn:hover { background: var(--linkea-secondary); color: #fff; transform: translateY(-2px); }
.lk-det-social__btn .msi { font-size: 19px; }
.lk-det-social__btn .lk-brand-ic { width: 19px; height: 19px; }

/* Sidebar — horario */
.lk-det-hours { list-style: none; padding: 0; margin: 0; }
.lk-det-hours li { display: flex; justify-content: space-between; padding: .45rem .6rem; border-radius: 8px; font-size: .88rem; }
.lk-det-hours__day { color: var(--linkea-text); }
.lk-det-hours__time { color: var(--linkea-muted); }
.lk-det-hours__time--closed { color: var(--linkea-muted); opacity: .6; }
.lk-det-hours li.is-today { background: rgba(0,102,255,.12); }
.lk-det-hours li.is-today .lk-det-hours__day { color: var(--linkea-icon); font-weight: 700; }
.lk-det-hours li.is-today .lk-det-hours__time { color: #fff; font-weight: 600; }

/* Sidebar — tags / precios / modalidad */
.lk-det-tags { display: flex; flex-wrap: wrap; gap: .45rem; }
.lk-det-tag { background: rgba(0,102,255,.12); color: var(--linkea-icon); border: 1px solid rgba(0,102,255,.25); padding: .25rem .7rem; border-radius: 999px; font-size: .8rem; font-weight: 500; }
.lk-det-price { display: flex; align-items: baseline; gap: .5rem; margin: 0; }
.lk-det-price strong { font-size: 1.4rem; color: var(--linkea-success); }
.lk-det-price span { color: var(--linkea-text); }

/* ── Responsive ── */
@media (max-width: 991.98px) {
    .lk-det-hero__content { flex-direction: column; align-items: stretch; }
    .lk-det-profile__actions { margin-left: 0; align-self: stretch; }
    .lk-det-profile__actions .lk-det-btn { flex: 1 1 auto; }
    /* En móvil el difuminado cubre todo para legibilidad sobre la imagen. */
    .lk-det-hero__overlay {
        background: linear-gradient(180deg, rgba(4,18,58,.45) 0%, rgba(4,18,58,.75) 60%, rgba(4,18,58,.97) 100%);
    }
}
@media (max-width: 767.98px) {
    .lk-det-hero__content { padding: 1.25rem; }
    .lk-det-profile__logo { width: 96px; height: 96px; }
    .lk-det-reviews__score { width: 100%; flex-direction: row; gap: 1rem; justify-content: flex-start; }
}

/* ═══════════════════════════════════════════════════════════
   LINKEA MARKET — listado público de negocios
═══════════════════════════════════════════════════════════ */
.lk-market-list { padding: 2rem 0 4rem; }

/* Breadcrumb */
.lk-breadcrumb {
    display: flex;
    align-items: center;
    gap: .35rem;
    font-size: .9rem;
    color: var(--linkea-muted);
    margin-bottom: 1rem;
}
.lk-breadcrumb a { color: var(--linkea-icon); }
.lk-breadcrumb a:hover { color: #fff; }
.lk-breadcrumb .msi { font-size: 1.05rem; }
.lk-breadcrumb__current { color: var(--linkea-text); }

.lk-market-list__title {
    font-weight: 800;
    font-size: clamp(1.9rem, 4vw, 2.8rem);
    margin: 0 0 .35rem;
    position: relative;
    display: inline-block;
}
.lk-market-list__title::after {
    content: "";
    position: absolute;
    left: 0; bottom: -6px;
    width: 56px; height: 3px;
    background: var(--linkea-secondary);
    border-radius: 3px;
}
.lk-market-list__desc { color: var(--linkea-muted); margin: .6rem 0 1.5rem; max-width: 640px; }

/* Barra de resultados + acciones */
.lk-results-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1.75rem;
}
.lk-results-count {
    display: flex;
    align-items: center;
    gap: .5rem;
    color: var(--linkea-muted);
    font-size: .95rem;
}
.lk-results-count .msi {
    color: var(--linkea-icon);
    background: rgba(0, 102, 255, 0.12);
    border-radius: 8px;
    padding: .3rem;
    font-size: 1.1rem;
}
.lk-results-count strong { color: var(--linkea-text); }
.lk-results-count__sep { opacity: .5; }
.lk-results-actions { display: flex; align-items: center; gap: .75rem; }

.lk-btn-filter {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    position: relative;
    background: var(--linkea-icon);
    color: #fff;
    border: 1px solid transparent;
    border-radius: 6px;
    padding: .35rem 1.1rem;
    font-weight: 600;
    cursor: pointer;
    transition: filter .15s ease;
}
/* El color se repite en los estados porque, cuando el botón es un <a>, la regla
   global `a:hover` es más específica que `.lk-btn-filter` y borraría el blanco. */
.lk-btn-filter:hover,
.lk-btn-filter:focus,
.lk-btn-filter:active { color: #fff; }
.lk-btn-filter:hover { filter: brightness(1.1); }
.lk-btn-filter__dot {
    width: 9px; height: 9px;
    border-radius: 50%;
    background: var(--linkea-secondary);
    position: absolute;
    top: -3px; right: -3px;
    border: 2px solid var(--linkea-primary-900);
}

/* Botón "Mapa": acento naranja de marca para destacar sobre el azul de "Filtros". */
.lk-btn-map {
    background: linear-gradient(135deg, #ff5a1f 0%, var(--linkea-secondary) 100%);
    color: #fff;
    text-decoration: none;
    box-shadow: 0 4px 14px rgba(255, 68, 0, 0.32);
    transition: filter .15s ease, transform .15s ease, box-shadow .15s ease;
}
.lk-btn-map:hover,
.lk-btn-map:focus,
.lk-btn-map:active,
.lk-btn-map:visited { color: #fff; text-decoration: none; }
.lk-btn-map:hover {
    filter: brightness(1.05);
    transform: translateY(-1px);
    box-shadow: 0 6px 20px rgba(255, 68, 0, 0.45);
}
.lk-btn-map:active { transform: translateY(0); }
.lk-btn-map .msi { font-size: 1.15rem; }

.lk-sort {
    display: flex;
    align-items: center;
    gap: .5rem;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--linkea-border);
    border-radius: 6px;
    padding: .35rem .8rem;
}
.lk-sort label { color: var(--linkea-muted); font-size: .9rem; margin: 0; }
.lk-sort select {
    background: transparent;
    border: none;
    color: var(--linkea-text);
    font-weight: 600;
    cursor: pointer;
    outline: none;
}
.lk-sort select option { color: #1a1a1a; }

/* Tarjeta de negocio */
.lk-biz-card {
    background: linear-gradient(180deg, rgba(13, 40, 110, 0.55), rgba(6, 26, 77, 0.65));
    border: 1px solid var(--linkea-border);
    border-radius: var(--linkea-radius);
    overflow: hidden;
    height: 100%;
    display: flex;
    flex-direction: column;
    box-shadow: var(--linkea-shadow-sm);
    transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.lk-biz-card:hover {
    transform: translateY(-4px);
    border-color: var(--linkea-border-strong);
    box-shadow: var(--linkea-shadow);
}

.lk-biz-card__cover {
    position: relative;
    height: 150px;
    background-size: cover;
    background-position: center;
}
.lk-biz-card__cover--empty {
    background: linear-gradient(135deg, var(--linkea-primary-700), var(--linkea-primary-900));
}
.lk-biz-card__cover::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(4, 18, 58, 0) 40%, rgba(4, 18, 58, 0.85) 100%);
}

.lk-biz-card__top {
    position: absolute;
    top: .65rem; left: .65rem;
    display: flex;
    gap: .4rem;
    z-index: 2;
}
.lk-biz-badge {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    font-size: .72rem;
    font-weight: 700;
    padding: .25rem .55rem;
    border-radius: 999px;
    backdrop-filter: blur(4px);
}
.lk-biz-badge .msi { font-size: .9rem; }
.lk-biz-badge--featured { background: #fff; color: var(--linkea-primary-900); }
.lk-biz-badge--featured .msi { color: var(--linkea-icon); }
.lk-biz-badge--price {
    background: #fff;
    color: var(--linkea-success);
    border: none;
}

.lk-biz-fav {
    position: absolute;
    top: .65rem; right: .65rem;
    z-index: 2;
    color: #fff;
    background: transparent;
    border: 0;
    padding: 0;
    line-height: 0;
    cursor: pointer;
    transition: transform .15s ease, color .15s ease;
}
.lk-biz-fav:hover { color: var(--linkea-secondary); transform: scale(1.1); }
.lk-biz-fav .msi { font-size: 1.4rem; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5)); }
.lk-biz-fav.is-saved { color: var(--linkea-secondary); }

/* Botón "Guardar" de la ficha de detalle cuando ya está guardada. */
.lk-det-btn.is-saved,
.lk-det-btn.is-saved .msi { color: var(--linkea-secondary); }

.lk-biz-card__logo {
    position: absolute;
    bottom: -26px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 3;
    width: 70px; height: 70px;
    border-radius: 50%;
    overflow: hidden;
    display: grid;
    place-items: center;
    background: #fff;
    border: 2px solid #fff;
    box-shadow: 0 6px 16px -6px rgba(0, 0, 0, 0.6);
}
.lk-biz-card__logo img { width: 100%; height: 100%; object-fit: cover; }
.lk-biz-card__logo--empty { background: var(--linkea-primary-800); }
.lk-biz-card__logo--empty .msi { color: var(--linkea-icon); font-size: 1.8rem; }

.lk-biz-card__body {
    padding: 2.2rem 1.1rem 1.1rem;
    text-align: left;
    display: flex;
    flex-direction: column;
    flex: 1;
}
.lk-biz-card__name {
    font-size: 1.1rem;
    font-weight: 700;
    margin: 0 0 .15rem;
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: .3rem;
}
.lk-biz-card__verified { color: var(--linkea-secondary); font-size: 1.05rem; }
.lk-biz-card__tagline {
    color: var(--linkea-muted);
    font-size: .85rem;
    margin: 0 0 .8rem;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.lk-biz-card__meta {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: .3rem 1rem;
    align-items: center;
    margin-bottom: .9rem;
}
.lk-biz-card__meta-item {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-size: .82rem;
    color: var(--linkea-text);
}
.lk-biz-card__meta-item .msi { color: var(--linkea-icon); font-size: 1rem; }

.lk-biz-card__foot {
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    padding-top: .85rem;
    border-top: 1px solid var(--linkea-border);
}
.lk-biz-card__chips { display: flex; gap: .35rem; flex-wrap: wrap; }
.lk-biz-chip {
    font-size: .72rem;
    color: var(--linkea-icon);
    background: rgba(0, 102, 255, 0.12);
    border: 1px solid rgba(0, 102, 255, 0.25);
    border-radius: 8px;
    padding: .2rem .5rem;
}
.lk-biz-chip--more {
    color: var(--linkea-muted);
    background: rgba(255, 255, 255, 0.06);
    border-color: var(--linkea-border);
}

.lk-biz-card__cta {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    flex-shrink: 0;
    font-size: .82rem;
    font-weight: 600;
    color: var(--linkea-icon);
    border: 1px solid rgba(0, 102, 255, 0.35);
    border-radius: 10px;
    padding: .4rem .7rem;
    transition: background .15s ease, color .15s ease;
}
.lk-biz-card__cta:hover { background: var(--linkea-icon); color: #fff; }
.lk-biz-card__cta .msi { font-size: 1rem; }

/* Estado vacío */
.lk-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 460px;
    margin: 2rem auto;
    padding: 3.5rem 2rem;
    color: var(--linkea-muted);
}
.lk-empty__icon {
    display: grid;
    place-items: center;
    width: 92px;
    height: 92px;
    margin-bottom: 1.5rem;
    border-radius: 50%;
    background: rgba(0, 102, 255, 0.10);
    border: 1px solid rgba(0, 102, 255, 0.22);
    box-shadow: 0 0 0 10px rgba(0, 102, 255, 0.05);
    animation: lk-empty-pulse 2.8s ease-in-out infinite;
}
.lk-empty__icon .msi {
    font-size: 2.75rem;
    color: var(--linkea-icon);
}
.lk-empty__title {
    margin: 0 0 .6rem;
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--linkea-text);
    line-height: 1.25;
}
.lk-empty__text {
    margin: 0 0 1.75rem;
    font-size: .95rem;
    line-height: 1.55;
    max-width: 34ch;
}
.lk-empty__btn {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding: .6rem 1.4rem;
    border-radius: 999px;
    font-weight: 600;
    color: var(--linkea-text);
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--linkea-border-strong);
    transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.lk-empty__btn:hover {
    color: var(--linkea-text);
    background: rgba(0, 102, 255, 0.12);
    border-color: var(--linkea-icon);
}
.lk-empty__btn .msi { font-size: 1.15rem; }

@keyframes lk-empty-pulse {
    0%, 100% { box-shadow: 0 0 0 10px rgba(0, 102, 255, 0.05); }
    50%      { box-shadow: 0 0 0 16px rgba(0, 102, 255, 0.02); }
}
@media (prefers-reduced-motion: reduce) {
    .lk-empty__icon { animation: none; }
}

/* Cargar más */
.lk-loadmore-wrap { text-align: center; margin-top: 2.5rem; }
.lk-loadmore {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid var(--linkea-border-strong);
    color: var(--linkea-text);
    border-radius: 12px;
    padding: .7rem 1.8rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s ease;
}
.lk-loadmore:hover { background: rgba(255, 255, 255, 0.12); }
.lk-loadmore:disabled { opacity: .7; cursor: wait; }
.lk-loadmore__spin { animation: lk-spin 1s linear infinite; }
@keyframes lk-spin { to { transform: rotate(360deg); } }

/* Panel de filtros (offcanvas) */
.lk-filters {
    background: linear-gradient(180deg, var(--linkea-primary-900), var(--linkea-ink));
    color: var(--linkea-text);
    border-left: 1px solid var(--linkea-border);
    width: 360px;
}
.lk-filters .offcanvas-header { border-bottom: 1px solid var(--linkea-border); }
.lk-filters .offcanvas-title { display: inline-flex; align-items: center; gap: .4rem; }
.lk-filters .offcanvas-title .msi { color: var(--linkea-icon); }
.lk-filters__form { display: flex; flex-direction: column; gap: 1.1rem; }

.lk-field { display: flex; flex-direction: column; gap: .4rem; }
.lk-field__label { font-size: .85rem; font-weight: 600; color: var(--linkea-muted); }
.lk-field input[type="text"],
.lk-field select {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--linkea-border);
    border-radius: 10px;
    color: var(--linkea-text);
    padding: .6rem .8rem;
    outline: none;
}
.lk-field input:focus,
.lk-field select:focus { border-color: var(--linkea-icon); }
/* Menú desplegable en la paleta de marca (Chromium respeta bg/color de <option>). */
.lk-field select { color-scheme: dark; }
.lk-field select option { background: var(--linkea-primary-900); color: var(--linkea-text); padding: .4rem .6rem; }
.lk-field select option:checked,
.lk-field select option:hover { background: var(--linkea-icon); color: #fff; }

.lk-radios { display: flex; flex-wrap: wrap; gap: .5rem .9rem; }
.lk-radio,
.lk-check {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    font-size: .9rem;
    cursor: pointer;
}
.lk-check { margin-top: .25rem; }

/* Pie de acciones: pegado al fondo del panel mientras la lista de filtros se desplaza. */
.lk-filters__actions {
    position: sticky;
    bottom: 0;
    z-index: 2;
    display: flex;
    gap: .6rem;
    /* Compensa el padding del offcanvas-body para ocupar todo el ancho. */
    margin: 1rem -1rem -1rem;
    padding: 1rem;
    background: var(--linkea-ink);
    border-top: 1px solid var(--linkea-border);
    box-shadow: 0 -12px 22px -16px rgba(0, 0, 0, 0.85);
}
.lk-filters__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    padding: .7rem 1rem;
    border-radius: 10px;
    font-weight: 700;
    line-height: 1;
    text-align: center;
    cursor: pointer;
    transition: transform .12s ease, background .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.lk-filters__btn:active { transform: translateY(1px); }
.lk-filters__btn .msi { font-size: 1.15rem; }
/* "Aplicar" es la acción primaria y ocupa el espacio disponible; "Limpiar" al contenido. */
.lk-filters__btn--apply { flex: 1; }
.lk-filters__btn--clear { flex: 0 1 auto; padding-left: 1.1rem; padding-right: 1.1rem; }

/* ── Cercanía: ubicación + slider de radio ── */
.lk-geo__input {
    display: flex;
    align-items: center;
    gap: .5rem;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--linkea-border);
    border-radius: 10px;
    padding: .25rem .35rem .25rem .5rem;
}
.lk-geo__input input[type="text"] {
    flex: 1;
    min-width: 0;
    background: transparent;
    border: none;
    color: var(--linkea-text);
    padding: .35rem .15rem;
    outline: none;
}
.lk-geo__input input::placeholder { color: var(--linkea-muted); }
.lk-geo__locate,
.lk-geo__clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 auto;
    border: none;
    border-radius: 8px;
    background: transparent;
    color: var(--linkea-icon);
    cursor: pointer;
    transition: background .15s ease;
}
.lk-geo__locate:hover { background: rgba(0, 102, 255, 0.14); }
.lk-geo__clear { color: var(--linkea-muted); }
.lk-geo__clear:hover { background: rgba(255, 255, 255, 0.08); color: var(--linkea-text); }
.lk-geo__status {
    display: block;
    font-size: .8rem;
    color: var(--linkea-muted);
    min-height: 1rem;
    margin-top: .3rem;
}
.lk-geo__radius { margin-top: .7rem; }
.lk-geo__radius-label {
    display: block;
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .03em;
    color: var(--linkea-text);
    margin-bottom: .4rem;
}
.lk-geo__radius input[type="range"] {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    height: 6px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    outline: none;
    cursor: pointer;
}
.lk-geo__radius input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--linkea-icon);
    border: 3px solid #fff;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);
}
.lk-geo__radius input[type="range"]::-moz-range-thumb {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--linkea-icon);
    border: 3px solid #fff;
}

/* ── Características (amenidades): cuadrícula de 2 columnas ── */
.lk-amenities {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .4rem .9rem;
}
.lk-amenities .lk-check { margin-top: 0; align-items: flex-start; }

/* Distancia en la tarjeta */
.lk-biz-card__meta-item--distance .msi { color: var(--linkea-icon); }

@media (max-width: 575.98px) {
    .lk-results-bar { flex-direction: column; align-items: flex-start; }
    .lk-results-actions { width: 100%; justify-content: space-between; }
    .lk-filters { width: 100%; }
}

/* ═══════════════════════════════════════════════════════════════════════
   Visores públicos: lightbox de imágenes y visor de documentos (PDF)
   ═══════════════════════════════════════════════════════════════════════ */
.lk-no-scroll { overflow: hidden; }

/* ── Lightbox de imágenes ── */
.lk-lb {
    position: fixed;
    inset: 0;
    z-index: 1080;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity .2s ease, visibility .2s ease;
}
.lk-lb.is-open { opacity: 1; visibility: visible; }
.lk-lb__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(2, 7, 24, 0.92);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}
.lk-lb__stage {
    position: relative;
    z-index: 1;
    margin: 0;
    max-width: 92vw;
    max-height: 88vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .75rem;
}
.lk-lb__img {
    max-width: 92vw;
    max-height: 82vh;
    border-radius: 12px;
    box-shadow: 0 24px 60px -20px rgba(0, 0, 0, 0.8);
    user-select: none;
    -webkit-user-drag: none;
    opacity: 0;
    transform: scale(.98);
    transition: opacity .25s ease, transform .25s ease;
}
.lk-lb__img.is-in { opacity: 1; transform: scale(1); }
.lk-lb__cap {
    color: var(--linkea-text);
    font-size: .9rem;
    text-align: center;
    max-width: 80vw;
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.6);
}
.lk-lb__btn {
    position: absolute;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    cursor: pointer;
    color: #fff;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 999px;
    transition: background .15s ease, transform .15s ease;
}
.lk-lb__btn:hover { background: rgba(255, 255, 255, 0.22); }
.lk-lb__btn:active { transform: scale(.94); }
.lk-lb__btn .msi { font-size: 1.7rem; }
.lk-lb__close { top: 1.1rem; right: 1.1rem; width: 46px; height: 46px; }
.lk-lb__nav {
    top: 50%;
    transform: translateY(-50%);
    width: 54px;
    height: 54px;
}
.lk-lb__nav:active { transform: translateY(-50%) scale(.94); }
.lk-lb__prev { left: 1.2rem; }
.lk-lb__next { right: 1.2rem; }
.lk-lb__counter {
    position: absolute;
    z-index: 2;
    bottom: 1.1rem;
    left: 50%;
    transform: translateX(-50%);
    color: var(--linkea-text);
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 999px;
    padding: .25rem .8rem;
    font-size: .85rem;
    letter-spacing: .03em;
}

/* La galería ahora abre el lightbox: cursor de acercamiento */
.lk-det-gallery__item { cursor: zoom-in; position: relative; }
/* Indicador "+N" sobre la última miniatura cuando hay más fotos ocultas */
.lk-det-gallery__item--more::after {
    content: attr(data-more);
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(4, 18, 58, 0.62);
    color: #fff;
    font-weight: 700;
    font-size: 1.25rem;
    letter-spacing: .02em;
}

@media (max-width: 575.98px) {
    .lk-lb__nav { width: 44px; height: 44px; }
    .lk-lb__prev { left: .5rem; }
    .lk-lb__next { right: .5rem; }
    .lk-lb__btn .msi { font-size: 1.4rem; }
}

/* ── Visor de documentos (PDF de solo lectura) ── */
.lk-doc {
    position: fixed;
    inset: 0;
    z-index: 1085;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: clamp(.5rem, 2vw, 2rem);
    opacity: 0;
    visibility: hidden;
    transition: opacity .2s ease, visibility .2s ease;
}
.lk-doc.is-open { opacity: 1; visibility: visible; }
.lk-doc__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(2, 7, 24, 0.9);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
}
.lk-doc__panel {
    position: relative;
    z-index: 1;
    width: min(960px, 100%);
    height: min(90vh, 100%);
    display: flex;
    flex-direction: column;
    background: var(--linkea-night);
    border: 1px solid var(--linkea-border-strong);
    border-radius: var(--linkea-radius);
    box-shadow: var(--linkea-shadow);
    overflow: hidden;
}
.lk-doc__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .75rem 1rem;
    border-bottom: 1px solid var(--linkea-border);
    background: var(--linkea-primary-900);
}
.lk-doc__title {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    color: var(--linkea-text);
    font-weight: 600;
    min-width: 0;
}
.lk-doc__title .msi { color: var(--linkea-secondary); }
.lk-doc__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lk-doc__close {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border: 0;
    border-radius: 10px;
    cursor: pointer;
    color: var(--linkea-text);
    background: rgba(255, 255, 255, 0.08);
    transition: background .15s ease;
}
.lk-doc__close:hover { background: rgba(255, 255, 255, 0.18); }
.lk-doc__stage {
    position: relative;
    flex: 1 1 auto;
    background: #525659;
    overflow: hidden;
}
/* Contenedor desplazable con las páginas renderizadas como <canvas>. */
.lk-doc__pages {
    position: absolute;
    inset: 0;
    z-index: 1;
    overflow: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    padding: 16px;
    -webkit-overflow-scrolling: touch;
}
.lk-doc__pages.is-loading { justify-content: center; }
.lk-doc__page {
    max-width: 100%;
    background: #fff;
    box-shadow: 0 6px 20px -8px rgba(0, 0, 0, 0.6);
    border-radius: 2px;
    user-select: none;
    -webkit-user-drag: none;
}
.lk-doc__msg {
    margin: auto;
    display: inline-flex;
    align-items: center;
    gap: .6rem;
    color: var(--linkea-text);
    font-size: .95rem;
}
.lk-doc__msg--err .msi { color: var(--linkea-danger); }
.lk-doc__spin {
    width: 20px;
    height: 20px;
    border: 2px solid rgba(255, 255, 255, 0.25);
    border-top-color: #fff;
    border-radius: 50%;
    animation: lk-doc-spin .7s linear infinite;
}
@keyframes lk-doc-spin { to { transform: rotate(360deg); } }
/* Marca de agua en mosaico diagonal sobre el documento. El texto va en color
   de marca (visible sobre la hoja blanca del PDF) y se repite con un patrón
   SVG para cubrir toda la superficie de forma uniforme, incluso al desplazar. */
.lk-doc__wm {
    position: absolute;
    inset: 0;
    z-index: 3;
    pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='180'%3E%3Ctext x='150' y='95' fill='%2309276E' fill-opacity='0.16' font-family='Arial,Helvetica,sans-serif' font-size='19' font-weight='700' letter-spacing='1.5' text-anchor='middle' transform='rotate(-30 150 95)'%3EOPAMSS %C2%B7 Linkea%3C/text%3E%3C/svg%3E");
    background-repeat: repeat;
}

@media (max-width: 575.98px) {
    .lk-doc__panel { height: 100%; width: 100%; border-radius: 0; }
}

/* ═══════════════════════════════════════════════════════════
   FOOTER PÚBLICO
   ═══════════════════════════════════════════════════════════ */
.lk-footer {
    background: transparent;
    color: rgba(255, 255, 255, 0.65);
    padding: 3.5rem 0 2.5rem;
}

/* ── Texto legal ── */
.lk-footer__legal {
    font-size: 0.82rem;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.55);
    text-align: center;
    max-width: 820px;
    margin: 0 auto 2.5rem;
    letter-spacing: 0.01em;
}

/* ── Fila inferior: logos + redes ── */
.lk-footer__bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    padding-top: 2rem;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

/* Imagen con los logos de instituciones */
.lk-footer__logos {
    height: 36px;
    width: auto;
    max-width: 420px;
    object-fit: contain;
    opacity: 0.85;
    transition: opacity 0.3s ease;
}
.lk-footer__logos:hover {
    opacity: 1;
}

/* ── Íconos de redes sociales ── */
.lk-footer__social {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    align-items: center;
    gap: 0.6rem;
}
.lk-footer__social li {
    display: flex;
}
.lk-footer__social a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    color: var(--linkea-secondary, #FF4400);
    background: rgba(255, 68, 0, 0.08);
    border: 1px solid rgba(255, 68, 0, 0.15);
    transition: transform 0.22s ease,
                background 0.22s ease,
                color 0.22s ease,
                box-shadow 0.22s ease;
}
.lk-footer__social a:hover {
    background: var(--linkea-secondary, #FF4400);
    color: #fff;
    transform: translateY(-3px);
    box-shadow: 0 8px 20px -8px rgba(255, 68, 0, 0.5);
}
.lk-footer__social a svg {
    flex-shrink: 0;
}

/* ── Responsive ── */
@media (max-width: 767.98px) {
    .lk-footer {
        padding: 2.5rem 0 2rem;
    }
    .lk-footer__legal {
        font-size: 0.78rem;
        margin-bottom: 2rem;
    }
    .lk-footer__bottom {
        flex-direction: column;
        align-items: center;
        gap: 1.5rem;
        text-align: center;
    }
    .lk-footer__logos {
        height: 30px;
        max-width: 320px;
    }
    .lk-footer__social {
        justify-content: center;
    }
}
@media (max-width: 575.98px) {
    .lk-footer__logos {
        height: 26px;
        max-width: 280px;
    }
    .lk-footer__social a {
        width: 34px;
        height: 34px;
    }
    .lk-footer__social a svg {
        width: 18px;
        height: 18px;
    }
}

/* ═══════════════════════════════════════════════════════════
   ANIMACIONES DE ENTRADA · reveal on scroll
   Sutiles y livianas: solo opacity + transform (compositor GPU).
   Un IntersectionObserver añade .is-visible al entrar en pantalla.
   Se desactivan por completo con prefers-reduced-motion.
═══════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: no-preference) {
    [data-reveal] {
        opacity: 0;
        transform: translate3d(0, 26px, 0);
        transition:
            opacity 0.7s cubic-bezier(0.22, 0.61, 0.36, 1),
            transform 0.7s cubic-bezier(0.22, 0.61, 0.36, 1);
        transition-delay: var(--lk-delay, 0s);
        will-change: opacity, transform;
    }
    /* Variantes de dirección (el valor del atributo elige el movimiento) */
    [data-reveal="fade"]  { transform: none; }
    [data-reveal="left"]  { transform: translate3d(-28px, 0, 0); }
    [data-reveal="right"] { transform: translate3d(28px, 0, 0); }
    [data-reveal="zoom"]  { transform: scale(0.96); }

    [data-reveal].is-visible {
        opacity: 1;
        transform: none;
    }
}
