/* ============================================================
   Reports / Lost & Found — diseño elevated, motion premium.

   Lenguaje:
   - Brand: ea580c (orange) · f59e0b (amber) · ec4899 (pink)
   - Easing: cubic-bezier(.22,1,.36,1) — ease-out smooth (Apple-like)
   - Motion: durations ≥ 2000ms para drama, micro-interactions ≤ 320ms
   - Layers: cada superficie tiene "depth" via shadow + blur
   - Type: Inter (en heredados del nav)
   - Glass morphism: backdrop-filter en sticky/elevadas

   Accesibilidad:
   - prefers-reduced-motion: reduce → todas las animaciones se pausan
   - Focus visible reforzado con anillo del brand
   ============================================================ */

:root {
    --lf-orange:  #ea580c;
    --lf-amber:   #f59e0b;
    --lf-pink:    #ec4899;
    --lf-red:     #dc2626;
    --lf-green:   #16a34a;
    --lf-cyan:    #0ea5e9;

    --lf-ink:     #1d1d1f;
    --lf-ink-2:   #2d2d30;
    --lf-muted:   #6e6e73;
    --lf-muted-2: #86868b;
    --lf-line:    #e6e6eb;
    --lf-line-2:  #f0f0f3;
    --lf-bg:      #fafafa;
    --lf-card:    #ffffff;

    --lf-ease:    cubic-bezier(.22,1,.36,1);   /* ease-out smooth */
    --lf-spring:  cubic-bezier(.34,1.56,.64,1); /* spring overshoot */

    --lf-shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
    --lf-shadow-md: 0 4px 16px -4px rgba(0,0,0,0.08), 0 2px 6px rgba(0,0,0,0.04);
    --lf-shadow-lg: 0 24px 48px -16px rgba(0,0,0,0.16), 0 8px 16px -8px rgba(0,0,0,0.08);
    --lf-shadow-xl: 0 32px 64px -20px rgba(0,0,0,0.20), 0 12px 24px -12px rgba(0,0,0,0.10);
}

/* ============================================================
   HERO — cinematográfico con orbs y huellas decorativas
   ============================================================ */
.lf-hero {
    position: relative;
    padding: 120px 24px 96px;
    text-align: center;
    background:
        radial-gradient(ellipse 80% 60% at 50% 0%, rgba(234,88,12,0.08) 0%, transparent 70%),
        radial-gradient(ellipse 60% 40% at 80% 100%, rgba(236,72,153,0.06) 0%, transparent 70%),
        linear-gradient(180deg, #ffffff 0%, #fafafa 100%);
    overflow: hidden;
    isolation: isolate;
}

/* Orbs ambientales — drift suave 24s, blur fuerte */
.lf-hero-amb {
    position: absolute; inset: 0;
    pointer-events: none;
    z-index: 0;
}
.lf-orb {
    position: absolute;
    border-radius: 50%;
    filter: blur(90px);
    opacity: 0.55;
    will-change: transform, opacity;
    animation: lf-orb-drift 24000ms ease-in-out infinite alternate;
}
.lf-orb-1 {
    width: 480px; height: 480px;
    top: -160px; left: -8%;
    background: radial-gradient(circle, rgba(234,88,12,0.35) 0%, transparent 70%);
}
.lf-orb-2 {
    width: 420px; height: 420px;
    top: 30%; right: -6%;
    background: radial-gradient(circle, rgba(236,72,153,0.30) 0%, transparent 70%);
    animation-delay: -8000ms;
}
.lf-orb-3 {
    width: 360px; height: 360px;
    bottom: -120px; left: 30%;
    background: radial-gradient(circle, rgba(245,158,11,0.28) 0%, transparent 70%);
    animation-delay: -16000ms;
}
@keyframes lf-orb-drift {
    0%   { transform: translate3d(0,0,0)       scale(1.00); opacity: 0.45; }
    50%  { transform: translate3d(40px,-30px,0) scale(1.12); opacity: 0.70; }
    100% { transform: translate3d(-30px,20px,0) scale(0.95); opacity: 0.50; }
}

/* Huellas decorativas — fade-in lento al cargar la página, después drift sutil */
.lf-hero-paws {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    pointer-events: none;
    z-index: 0;
    opacity: 0;
    animation: lf-paws-appear 2400ms var(--lf-ease) 400ms forwards,
               lf-paws-float 12000ms ease-in-out 2800ms infinite alternate;
}
@keyframes lf-paws-appear {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes lf-paws-float {
    from { transform: translateY(0) scale(1); }
    to   { transform: translateY(-12px) scale(1.02); }
}

.lf-hero-inner {
    position: relative; z-index: 2;
    max-width: 760px;
    margin: 0 auto;
    /* Entrance animation — slow + dramatic */
    animation: lf-hero-entrance 2200ms var(--lf-ease) both;
}
@keyframes lf-hero-entrance {
    from { opacity: 0; transform: translateY(28px); filter: blur(8px); }
    to   { opacity: 1; transform: translateY(0);    filter: blur(0); }
}

.lf-tag {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 7px 16px; margin-bottom: 24px;
    background: linear-gradient(135deg, rgba(234,88,12,0.10), rgba(236,72,153,0.10));
    border: 1px solid rgba(234,88,12,0.22);
    border-radius: 999px;
    color: var(--lf-orange);
    font-size: 11.5px; font-weight: 700;
    letter-spacing: 0.18em; text-transform: uppercase;
    box-shadow: 0 8px 20px -12px rgba(234,88,12,0.30);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}
.lf-tag svg { color: var(--lf-pink); }

.lf-hero-title {
    margin: 0 0 18px;
    font-size: clamp(36px, 6vw, 64px);
    font-weight: 700;
    color: var(--lf-ink);
    letter-spacing: -0.028em;
    line-height: 1.04;
}
.lf-grad {
    background: linear-gradient(135deg, var(--lf-orange) 0%, var(--lf-amber) 50%, var(--lf-pink) 100%);
    background-size: 200% 200%;
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: lf-grad-flow 8000ms ease-in-out infinite;
    /* Slight drop shadow del gradient via filter */
    filter: drop-shadow(0 4px 16px rgba(234,88,12,0.18));
}
@keyframes lf-grad-flow {
    0%, 100% { background-position: 0% 50%; }
    50%      { background-position: 100% 50%; }
}

.lf-hero-lead {
    color: var(--lf-muted);
    font-size: clamp(15px, 1.5vw, 17.5px);
    line-height: 1.6;
    max-width: 580px;
    margin: 0 auto 12px;
    font-weight: 400;
}
.lf-hero-note {
    display: inline-flex; align-items: center; gap: 6px;
    margin: 0 0 28px;
    padding: 6px 12px;
    color: var(--lf-orange);
    font-size: 13px; font-weight: 500;
    background: rgba(234,88,12,0.06);
    border: 1px solid rgba(234,88,12,0.18);
    border-radius: 999px;
}

.lf-hero-cta {
    display: flex; gap: 14px; justify-content: center; flex-wrap: wrap;
    margin-top: 8px;
}

/* ============================================================
   BUTTONS — premium con shine sweep
   ============================================================ */
.lf-btn {
    position: relative;
    display: inline-flex; align-items: center; gap: 9px;
    padding: 16px 28px;
    border-radius: 999px;
    font-size: 14.5px; font-weight: 600;
    text-decoration: none;
    color: #fff !important;
    overflow: hidden;
    isolation: isolate;
    transition:
        transform 320ms var(--lf-spring),
        box-shadow 320ms var(--lf-ease);
    will-change: transform;
}
.lf-btn:hover {
    transform: translateY(-2px) scale(1.02);
}
.lf-btn:active {
    transform: translateY(0) scale(0.99);
    transition: transform 120ms var(--lf-ease);
}
/* Shine sweep — dramatic 2400ms cycle */
.lf-btn-shine {
    position: absolute; inset: 0;
    background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,0.55) 50%, transparent 70%);
    transform: translateX(-100%);
    pointer-events: none;
    z-index: 1;
}
.lf-btn:hover .lf-btn-shine {
    animation: lf-btn-sweep 1200ms var(--lf-ease);
}
@keyframes lf-btn-sweep {
    to { transform: translateX(100%); }
}

.lf-btn-lost {
    background: linear-gradient(135deg, #dc2626 0%, #ea580c 60%, #f59e0b 100%);
    box-shadow:
        0 12px 32px -8px rgba(220,38,38,0.45),
        0 6px 16px -4px rgba(234,88,12,0.30),
        inset 0 1px 0 rgba(255,255,255,0.18);
}
.lf-btn-lost:hover {
    box-shadow:
        0 18px 40px -10px rgba(220,38,38,0.55),
        0 10px 24px -6px rgba(234,88,12,0.40),
        inset 0 1px 0 rgba(255,255,255,0.25);
}
.lf-btn-found {
    background: linear-gradient(135deg, #0ea5e9 0%, #16a34a 100%);
    box-shadow:
        0 12px 32px -8px rgba(22,163,74,0.45),
        0 6px 16px -4px rgba(14,165,233,0.30),
        inset 0 1px 0 rgba(255,255,255,0.18);
}
.lf-btn-found:hover {
    box-shadow:
        0 18px 40px -10px rgba(22,163,74,0.55),
        0 10px 24px -6px rgba(14,165,233,0.40),
        inset 0 1px 0 rgba(255,255,255,0.25);
}

/* ============================================================
   FILTER BAR — premium glass design con motion sofisticado
   ============================================================ */
.lf-filterbar {
    position: sticky; top: 64px;
    z-index: 50;
    background:
        linear-gradient(180deg, rgba(255,255,255,0.92) 0%, rgba(255,255,255,0.82) 100%);
    backdrop-filter: saturate(200%) blur(24px);
    -webkit-backdrop-filter: saturate(200%) blur(24px);
    border-bottom: 1px solid rgba(0,0,0,0.06);
    box-shadow:
        0 1px 0 rgba(0,0,0,0.02),
        0 12px 24px -16px rgba(0,0,0,0.10);
    isolation: isolate;
    overflow: hidden;
}

/* Glow ambient — orb que pulsa de color del brand bajo el filterbar */
.lf-fb-glow {
    position: absolute;
    width: 280px; height: 280px;
    top: -180px; left: 50%; transform: translateX(-50%);
    background: radial-gradient(circle, rgba(234,88,12,0.16) 0%, rgba(236,72,153,0.10) 40%, transparent 70%);
    filter: blur(40px);
    pointer-events: none;
    z-index: 0;
    animation: lf-fb-glow-pulse 6000ms var(--lf-ease) infinite alternate;
}
@keyframes lf-fb-glow-pulse {
    0%   { opacity: 0.55; transform: translateX(-50%) scale(1); }
    100% { opacity: 0.95; transform: translateX(-30%) scale(1.15); }
}

.lf-filterbar-inner {
    position: relative; z-index: 1;
    display: flex;
    gap: 12px;
    align-items: center;
    max-width: 1240px;
    margin: 0 auto;
    padding: 14px 24px;
}

/* ============================================================
   SEGMENTED CONTROL — Apple iOS premium, con icons + sliding feel
   ============================================================ */
.lf-segmented {
    display: inline-flex;
    background:
        linear-gradient(180deg, rgba(0,0,0,0.04), rgba(0,0,0,0.07));
    border: 1px solid rgba(0,0,0,0.04);
    border-radius: 14px;
    padding: 5px;
    flex-shrink: 0;
    gap: 2px;
    box-shadow: inset 0 1px 2px rgba(0,0,0,0.03);
    position: relative;
}
.lf-seg {
    position: relative;
    display: inline-flex; align-items: center; gap: 8px;
    padding: 10px 18px;
    border-radius: 10px;
    font-size: 13.5px; font-weight: 600;
    color: var(--lf-muted);
    text-decoration: none;
    white-space: nowrap;
    letter-spacing: -0.01em;
    transition:
        color 320ms var(--lf-ease),
        transform 320ms var(--lf-spring);
    z-index: 1;
}
.lf-seg::before {
    content: '';
    position: absolute; inset: 0;
    border-radius: 10px;
    background:
        linear-gradient(180deg, #fff 0%, rgba(255,255,255,0.92) 100%);
    box-shadow:
        0 4px 16px -6px rgba(0,0,0,0.18),
        0 2px 6px -2px rgba(0,0,0,0.10),
        inset 0 1px 0 rgba(255,255,255,0.95),
        inset 0 -1px 0 rgba(0,0,0,0.04);
    opacity: 0;
    transform: scale(0.92);
    transition:
        opacity 380ms var(--lf-ease),
        transform 380ms var(--lf-spring);
    z-index: -1;
}
.lf-seg:hover { color: var(--lf-ink); }
.lf-seg:hover:not(.is-active) { transform: translateY(-1px); }
.lf-seg.is-active {
    color: var(--lf-ink);
    cursor: default;
}
.lf-seg.is-active::before {
    opacity: 1;
    transform: scale(1);
}
/* Color codificado por tab activo */
.lf-seg-lost.is-active  { color: var(--lf-red); }
.lf-seg-found.is-active { color: var(--lf-green); }

/* Icono SVG en cada seg */
.lf-seg-icon {
    flex-shrink: 0;
    color: currentColor;
    opacity: 0.72;
    transition:
        opacity 320ms var(--lf-ease),
        transform 480ms var(--lf-spring);
}
.lf-seg.is-active .lf-seg-icon { opacity: 1; }
.lf-seg:hover .lf-seg-icon { transform: rotate(-12deg) scale(1.08); }
.lf-seg-found:hover .lf-seg-icon { transform: rotate(0) scale(1.12); }
/* "Todas" → ícono sun rota lentamente cuando está activo */
.lf-seg.is-active:first-child .lf-seg-icon {
    animation: lf-seg-sun-spin 24000ms linear infinite;
}
@keyframes lf-seg-sun-spin {
    to { transform: rotate(360deg); }
}

/* Pulse del tab Perdidas — onda concéntrica + dot center */
.lf-seg-pulse {
    position: relative;
    width: 14px; height: 14px;
    flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
}
.lf-seg-pulse-dot {
    position: absolute;
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--lf-red);
    box-shadow: 0 0 12px rgba(220,38,38,0.65);
    z-index: 1;
}
.lf-seg-pulse-ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid var(--lf-red);
    opacity: 0;
    animation: lf-pulse-ring 2200ms var(--lf-ease) infinite;
}
@keyframes lf-pulse-ring {
    0%   { transform: scale(0.4); opacity: 0.85; }
    100% { transform: scale(2.2); opacity: 0; }
}
.lf-seg-found.is-active::before,
.lf-seg-lost.is-active::before { /* preserve same shadow */ }

/* ============================================================
   SEARCHBOX — Spotlight style, glow ring al focus
   ============================================================ */
.lf-searchbox {
    position: relative;
    flex: 1; min-width: 0;
    display: flex; align-items: center;
    background: linear-gradient(180deg, #fff 0%, #fafafa 100%);
    border: 1px solid var(--lf-line);
    border-radius: 14px;
    padding: 0 14px;
    transition:
        border-color 280ms var(--lf-ease),
        box-shadow 280ms var(--lf-ease),
        transform 280ms var(--lf-ease),
        background 280ms var(--lf-ease);
    box-shadow: 0 1px 2px rgba(0,0,0,0.03);
}
.lf-searchbox::before {
    content: '';
    position: absolute; inset: -1px;
    border-radius: 14px;
    padding: 1.5px;
    background: linear-gradient(135deg, var(--lf-orange), var(--lf-amber), var(--lf-pink));
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
            mask-composite: exclude;
    opacity: 0;
    transition: opacity 320ms var(--lf-ease);
    pointer-events: none;
}
.lf-searchbox:focus-within {
    background: #fff;
    border-color: transparent;
    box-shadow:
        0 0 0 4px rgba(234,88,12,0.10),
        0 8px 24px -8px rgba(234,88,12,0.30);
    transform: translateY(-1px);
}
.lf-searchbox:focus-within::before { opacity: 1; }

.lf-search-icon {
    flex-shrink: 0;
    margin-right: 10px;
    color: var(--lf-muted-2);
    display: inline-flex;
    transition: color 280ms var(--lf-ease), transform 480ms var(--lf-spring);
}
.lf-searchbox:focus-within .lf-search-icon {
    color: var(--lf-orange);
    transform: scale(1.08) rotate(-8deg);
}

.lf-search-input {
    flex: 1; min-width: 0;
    border: none; background: transparent;
    padding: 13px 0;
    font-family: inherit;
    font-size: 14.5px;
    color: var(--lf-ink);
    outline: none;
    letter-spacing: -0.005em;
    font-weight: 500;
}
.lf-search-input::placeholder {
    color: var(--lf-muted-2);
    font-weight: 400;
    letter-spacing: -0.005em;
}

.lf-search-clear {
    flex-shrink: 0;
    width: 24px; height: 24px;
    margin-left: 8px;
    border-radius: 50%;
    background: rgba(0,0,0,0.06);
    color: var(--lf-muted);
    text-decoration: none;
    display: inline-flex; align-items: center; justify-content: center;
    transition:
        background 240ms var(--lf-ease),
        color 240ms var(--lf-ease),
        transform 320ms var(--lf-spring);
}
.lf-search-clear:hover {
    background: rgba(220,38,38,0.15);
    color: var(--lf-red);
    transform: rotate(90deg) scale(1.08);
}

.lf-search-hint {
    flex-shrink: 0;
    margin-left: 8px;
    padding: 3px 8px;
    background: rgba(0,0,0,0.04);
    border: 1px solid rgba(0,0,0,0.06);
    border-radius: 6px;
    font-size: 11px;
    font-weight: 600;
    color: var(--lf-muted);
    font-family: inherit;
    line-height: 1;
    transition: all 240ms var(--lf-ease);
}
.lf-searchbox:focus-within .lf-search-hint {
    background: rgba(234,88,12,0.10);
    border-color: rgba(234,88,12,0.20);
    color: var(--lf-orange);
}

/* ============================================================
   BOTÓN FILTROS — premium con icono custom + badge animado
   ============================================================ */
.lf-filterbtn {
    position: relative;
    display: inline-flex; align-items: center; gap: 8px;
    padding: 12px 18px;
    background: linear-gradient(180deg, #fff 0%, #fafafa 100%);
    border: 1px solid var(--lf-line);
    border-radius: 14px;
    font-size: 14px; font-weight: 600;
    color: var(--lf-ink);
    cursor: pointer;
    transition:
        all 280ms var(--lf-ease),
        transform 280ms var(--lf-spring);
    letter-spacing: -0.005em;
    flex-shrink: 0;
    font-family: inherit;
    box-shadow: 0 1px 2px rgba(0,0,0,0.04);
    overflow: hidden;
    isolation: isolate;
}
.lf-filterbtn::before {
    content: '';
    position: absolute; inset: 0;
    background: linear-gradient(135deg, var(--lf-orange) 0%, var(--lf-amber) 50%, var(--lf-pink) 100%);
    background-size: 200% 200%;
    opacity: 0;
    transition: opacity 320ms var(--lf-ease);
    z-index: -1;
}
.lf-filterbtn:hover {
    border-color: rgba(234,88,12,0.30);
    color: var(--lf-orange);
    box-shadow: 0 8px 18px -8px rgba(234,88,12,0.40);
    transform: translateY(-1px);
}
.lf-filterbtn[aria-expanded="true"] {
    border-color: transparent;
    color: #fff;
    box-shadow: 0 12px 24px -8px rgba(234,88,12,0.55);
}
.lf-filterbtn[aria-expanded="true"]::before {
    opacity: 1;
    animation: lf-grad-flow 5000ms ease-in-out infinite;
}

.lf-filterbtn-icon {
    flex-shrink: 0;
    transition: transform 480ms var(--lf-spring);
}
.lf-filterbtn:hover .lf-filterbtn-icon { transform: rotate(180deg); }
.lf-filterbtn[aria-expanded="true"] .lf-filterbtn-icon { transform: rotate(180deg); }

.lf-filterbtn-dot {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 20px; height: 20px;
    padding: 0 7px;
    background: var(--lf-orange);
    color: #fff;
    border-radius: 999px;
    font-size: 11px; font-weight: 800;
    margin-left: 2px;
    box-shadow: 0 4px 10px -2px rgba(234,88,12,0.45);
    animation: lf-badge-bounce 2400ms var(--lf-spring) infinite;
}
@keyframes lf-badge-bounce {
    0%, 100% { transform: scale(1); }
    50%      { transform: scale(1.12); }
}
.lf-filterbtn[aria-expanded="true"] .lf-filterbtn-dot {
    background: rgba(255,255,255,0.30);
    box-shadow: inset 0 0 0 1.5px rgba(255,255,255,0.40);
}

/* ============================================================
   DRAWER DE FILTROS AVANZADOS — entrada con stagger
   ============================================================ */
.lf-advfilters {
    max-height: 0;
    overflow: hidden;
    background:
        linear-gradient(180deg, rgba(255,255,255,0.96) 0%, rgba(250,250,250,0.94) 100%);
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    border-top: 1px solid transparent;
    transition:
        max-height 540ms var(--lf-ease),
        border-color 540ms var(--lf-ease);
    position: relative;
}
.lf-advfilters.is-open {
    max-height: 700px;
    border-top-color: rgba(0,0,0,0.06);
}
/* Decoración: línea gradient sutil al tope cuando está abierto */
.lf-advfilters.is-open::before {
    content: '';
    position: absolute; top: 0; left: 0; right: 0;
    height: 2px;
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(234,88,12,0.50) 30%,
        rgba(236,72,153,0.50) 70%,
        transparent 100%);
    animation: lf-adv-line 2400ms var(--lf-ease);
}
@keyframes lf-adv-line {
    from { transform: scaleX(0); transform-origin: center; }
    to   { transform: scaleX(1); }
}

.lf-advgrid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 18px;
    max-width: 1240px;
    margin: 0 auto;
    padding: 26px 24px 8px;
}
/* Cada label del drawer entra con stagger cuando se abre */
.lf-advfilters.is-open .lf-flabel {
    animation: lf-adv-label-in 600ms var(--lf-ease) both;
}
.lf-advfilters.is-open .lf-flabel:nth-child(1) { animation-delay: 60ms; }
.lf-advfilters.is-open .lf-flabel:nth-child(2) { animation-delay: 110ms; }
.lf-advfilters.is-open .lf-flabel:nth-child(3) { animation-delay: 160ms; }
.lf-advfilters.is-open .lf-flabel:nth-child(4) { animation-delay: 210ms; }
.lf-advfilters.is-open .lf-flabel:nth-child(5) { animation-delay: 260ms; }
.lf-advfilters.is-open .lf-flabel:nth-child(6) { animation-delay: 310ms; }
.lf-advfilters.is-open .lf-flabel:nth-child(7) { animation-delay: 360ms; }
@keyframes lf-adv-label-in {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.lf-advactions {
    max-width: 1240px;
    margin: 0 auto;
    padding: 4px 24px 26px;
    display: flex; gap: 14px; align-items: center;
    flex-wrap: wrap;
}

/* ============================================================
   LAYOUT (full-width sin sidebar)
   ============================================================ */
.lf-layout {
    max-width: 1240px;
    margin: 0 auto;
    padding: 32px 24px 96px;
}
.lf-flabel {
    display: block;
    margin-bottom: 16px;
    font-size: 12.5px; font-weight: 600;
    color: var(--lf-ink);
    letter-spacing: -0.005em;
}
.lf-flabel small {
    font-weight: 400;
    color: var(--lf-muted-2);
}
.lf-finput {
    display: block; width: 100%;
    margin-top: 6px; padding: 11px 13px;
    border: 1px solid var(--lf-line);
    border-radius: 12px;
    background: #fff;
    font-size: 14px;
    color: var(--lf-ink);
    font-family: inherit;
    transition:
        border-color 240ms var(--lf-ease),
        box-shadow 240ms var(--lf-ease),
        background 240ms var(--lf-ease);
}
.lf-finput:hover:not(:focus) { background: #fafafa; }
.lf-finput:focus {
    outline: none;
    border-color: var(--lf-orange);
    box-shadow: 0 0 0 4px rgba(234,88,12,0.10);
}
.lf-frow { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }

.lf-fbtn {
    display: inline-flex; align-items: center; justify-content: center;
    padding: 12px 22px;
    background: linear-gradient(135deg, var(--lf-orange) 0%, var(--lf-amber) 50%, var(--lf-pink) 100%);
    background-size: 200% 200%;
    color: #fff;
    border: none; border-radius: 12px;
    font-size: 14px; font-weight: 600;
    cursor: pointer;
    box-shadow: 0 8px 20px -8px rgba(234,88,12,0.55);
    transition:
        transform 320ms var(--lf-spring),
        box-shadow 320ms var(--lf-ease);
    animation: lf-grad-flow 6000ms ease-in-out infinite;
    text-decoration: none;
    letter-spacing: -0.005em;
    font-family: inherit;
}
.lf-fbtn:hover { transform: translateY(-1px); box-shadow: 0 12px 26px -10px rgba(234,88,12,0.65); }
.lf-fbtn:active { transform: translateY(0); }
.lf-fbtn-apply { padding: 12px 28px; }

.lf-fclear {
    display: inline-block; margin-top: 12px;
    color: var(--lf-muted); font-size: 13px;
    text-decoration: none;
    transition: color 200ms var(--lf-ease);
}
.lf-fclear:hover { color: var(--lf-orange); }

/* ============================================================
   GRID DE TARJETAS — entrada escalonada + hover elevation
   ============================================================ */
.lf-result-info {
    color: var(--lf-muted);
    font-size: 13.5px;
    margin-bottom: 18px;
    font-weight: 500;
}
.lf-result-info strong { color: var(--lf-ink); font-weight: 700; }

/* ============================================================
   GRID DE CARDS — premium con diferenciación lost/found dramática
   ============================================================ */
.lf-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 28px;
}
@media (min-width: 1100px) {
    .lf-grid { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
}

/* ============================================================
   BASE de la card
   ============================================================ */
.lf-card {
    position: relative;
    background: var(--lf-card);
    border-radius: 24px;
    overflow: hidden;
    box-shadow: var(--lf-shadow-sm);
    transition:
        transform 540ms var(--lf-ease),
        box-shadow 540ms var(--lf-ease);
    isolation: isolate;
    /* Entrada escalonada */
    opacity: 0;
    animation: lf-card-in 800ms var(--lf-ease) both;
}
.lf-card:nth-child(1)  { animation-delay:  60ms; }
.lf-card:nth-child(2)  { animation-delay: 120ms; }
.lf-card:nth-child(3)  { animation-delay: 180ms; }
.lf-card:nth-child(4)  { animation-delay: 240ms; }
.lf-card:nth-child(5)  { animation-delay: 300ms; }
.lf-card:nth-child(6)  { animation-delay: 360ms; }
.lf-card:nth-child(7)  { animation-delay: 420ms; }
.lf-card:nth-child(8)  { animation-delay: 480ms; }
.lf-card:nth-child(9)  { animation-delay: 540ms; }
.lf-card:nth-child(n+10) { animation-delay: 600ms; }
@keyframes lf-card-in {
    from { opacity: 0; transform: translateY(28px) scale(0.96); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

.lf-card-link {
    text-decoration: none;
    color: inherit;
    display: block;
    position: relative;
    isolation: isolate;
}

/* Border tinted que aparece en hover según tipo */
.lf-card::before {
    content: '';
    position: absolute; inset: 0;
    border-radius: 24px;
    padding: 1.5px;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
            mask-composite: exclude;
    opacity: 0;
    transition: opacity 540ms var(--lf-ease);
    pointer-events: none;
    z-index: 3;
}
.lf-card--lost::before {
    background: linear-gradient(135deg, #dc2626 0%, #ea580c 50%, #f59e0b 100%);
}
.lf-card--found::before {
    background: linear-gradient(135deg, #16a34a 0%, #0ea5e9 50%, #22d3ee 100%);
}
.lf-card:hover::before { opacity: 1; }
/* Border base (siempre visible, sutil) */
.lf-card { border: 1px solid var(--lf-line); }

/* AURA — glow que aparece detrás al hover (solo en mouse, no genera layout) */
.lf-card-aura {
    position: absolute; inset: -2px;
    border-radius: 26px;
    pointer-events: none;
    z-index: -1;
    opacity: 0;
    filter: blur(24px);
    transition: opacity 540ms var(--lf-ease);
}
.lf-card--lost  .lf-card-aura { background: radial-gradient(ellipse, rgba(220,38,38,0.40) 0%, rgba(234,88,12,0.20) 50%, transparent 80%); }
.lf-card--found .lf-card-aura { background: radial-gradient(ellipse, rgba(22,163,74,0.35) 0%, rgba(14,165,233,0.20) 50%, transparent 80%); }
.lf-card:hover .lf-card-aura { opacity: 1; }

.lf-card:hover {
    transform: translateY(-8px);
    box-shadow: var(--lf-shadow-xl);
}

/* ============================================================
   MEDIA — foto + decoraciones
   ============================================================ */
.lf-card-media {
    position: relative;
    aspect-ratio: 4 / 3;
    background: #f1f1f4;
    overflow: hidden;
    isolation: isolate;
}

/* Fallback cuando la imagen falla en cargar (404, permisos, formato).
   Se aplica via onerror handler que agrega `.is-img-fallback`. */
.lf-card-media.is-img-fallback,
.lf-v-photo-frame.is-img-fallback {
    background:
        linear-gradient(135deg, rgba(234,88,12,0.10) 0%, rgba(245,158,11,0.10) 50%, rgba(236,72,153,0.10) 100%),
        repeating-linear-gradient(45deg, rgba(0,0,0,0.02) 0 8px, transparent 8px 16px),
        #fafafa;
}
.lf-card--found .lf-card-media.is-img-fallback,
.lf-v--found .lf-v-photo-frame.is-img-fallback {
    background:
        linear-gradient(135deg, rgba(22,163,74,0.10) 0%, rgba(14,165,233,0.10) 100%),
        repeating-linear-gradient(45deg, rgba(0,0,0,0.02) 0 8px, transparent 8px 16px),
        #fafafa;
}
.lf-card-media.is-img-fallback::before,
.lf-v-photo-frame.is-img-fallback::before {
    content: '';
    position: absolute; inset: 0;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' fill='%23ea580c' opacity='0.35'><ellipse cx='32' cy='42' rx='11' ry='9'/><ellipse cx='18' cy='28' rx='4.5' ry='6'/><ellipse cx='46' cy='28' rx='4.5' ry='6'/><ellipse cx='25' cy='18' rx='3.8' ry='5.5'/><ellipse cx='39' cy='18' rx='3.8' ry='5.5'/></svg>");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 40% auto;
    pointer-events: none;
}
.lf-card-media.is-img-fallback::after,
.lf-v-photo-frame.is-img-fallback::after {
    content: 'Imagen no disponible';
    position: absolute; bottom: 14px; left: 0; right: 0;
    text-align: center;
    color: var(--lf-muted);
    font-size: 12px; font-weight: 600;
    letter-spacing: -0.005em;
    opacity: 0.85;
}
.lf-card-photo {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
    transition:
        transform 1600ms var(--lf-ease),
        filter 800ms var(--lf-ease);
    will-change: transform;
}
.lf-card:hover .lf-card-photo {
    transform: scale(1.08);
    filter: saturate(1.15) brightness(1.03);
}
/* Tinted filter sutil en lost (warmer) y found (cooler) */
.lf-card--lost  .lf-card-photo { filter: saturate(1.05) contrast(1.02); }
.lf-card--found .lf-card-photo { filter: saturate(1.05) contrast(1.02); }

/* Veil gradient — para legibilidad de pills */
.lf-card-veil {
    position: absolute; inset: 0;
    pointer-events: none;
    z-index: 1;
    background:
        linear-gradient(180deg, rgba(0,0,0,0.35) 0%, transparent 30%, transparent 65%, rgba(0,0,0,0.25) 100%);
}

/* ============================================================
   RADAR ANIMATION — solo en LOST (3 ondas concéntricas pulsando)
   ============================================================ */
.lf-card-radar {
    position: absolute;
    bottom: -20px; right: -20px;
    width: 140px; height: 140px;
    z-index: 1;
    color: rgba(255,255,255,0.50);
    pointer-events: none;
    mix-blend-mode: overlay;
}
.lf-card-radar circle {
    transform-origin: 50% 50%;
    animation: lf-radar-wave 3000ms var(--lf-ease) infinite;
}
.lf-card-radar circle:nth-child(1) { animation-delay:    0ms; }
.lf-card-radar circle:nth-child(2) { animation-delay: 1000ms; }
.lf-card-radar circle:nth-child(3) { animation-delay: 2000ms; }
@keyframes lf-radar-wave {
    0%   { transform: scale(0.30); opacity: 0.85; }
    80%  { opacity: 0; }
    100% { transform: scale(2.40); opacity: 0; }
}

/* ============================================================
   SPARKLE ANIMATION — solo en FOUND (3 estrellas brillando)
   ============================================================ */
.lf-card-sparkle {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    z-index: 1;
    color: rgba(255,255,255,0.85);
    pointer-events: none;
    mix-blend-mode: overlay;
}
.lf-card-sparkle path {
    transform-origin: center;
    animation: lf-sparkle 3600ms var(--lf-ease) infinite;
}
.lf-spark-1 { animation-delay:    0ms; }
.lf-spark-2 { animation-delay:  900ms; }
.lf-spark-3 { animation-delay: 1800ms; }
@keyframes lf-sparkle {
    0%, 100%  { transform: scale(0) rotate(0deg);   opacity: 0; }
    20%       { transform: scale(1) rotate(40deg);  opacity: 1; }
    40%       { transform: scale(1.2) rotate(80deg); opacity: 0.7; }
    60%       { transform: scale(0.7) rotate(120deg); opacity: 0; }
}

/* ============================================================
   PILL — TYPE (Perdida / Encontrada) con dot pulsante en lost
   ============================================================ */
.lf-card-pill {
    position: absolute; top: 14px; left: 14px;
    z-index: 4;
    display: inline-flex; align-items: center; gap: 7px;
    padding: 7px 14px;
    border-radius: 999px;
    font-size: 11px; font-weight: 800;
    letter-spacing: 0.10em; text-transform: uppercase;
    color: #fff;
    box-shadow:
        0 8px 20px -4px rgba(0,0,0,0.35),
        inset 0 1px 0 rgba(255,255,255,0.20);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}
.lf-card-pill--lost {
    background: linear-gradient(135deg, rgba(220,38,38,0.96) 0%, rgba(234,88,12,0.96) 100%);
}
.lf-card-pill--found {
    background: linear-gradient(135deg, rgba(22,163,74,0.96) 0%, rgba(14,165,233,0.96) 100%);
}

/* Pulse del pill LOST — ring concéntrico que se expande del dot */
.lf-card-pill-pulse {
    position: relative;
    width: 8px; height: 8px;
    flex-shrink: 0;
}
.lf-card-pill-core {
    position: absolute; inset: 0;
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 0 8px rgba(255,255,255,0.85);
    z-index: 1;
}
.lf-card-pill-ring {
    position: absolute; inset: 0;
    border: 2px solid #fff;
    border-radius: 50%;
    opacity: 0;
    animation: lf-pill-ring 2200ms var(--lf-ease) infinite;
}
@keyframes lf-pill-ring {
    0%   { transform: scale(0.5); opacity: 0.85; }
    100% { transform: scale(2.6); opacity: 0; }
}

/* ============================================================
   VERIFIED BADGE
   ============================================================ */
.lf-card-verified {
    position: absolute; top: 14px; right: 14px;
    z-index: 4;
    display: inline-flex; align-items: center; gap: 4px;
    padding: 6px 11px;
    background: rgba(255,255,255,0.95);
    border-radius: 999px;
    font-size: 10.5px; font-weight: 800;
    color: var(--lf-green);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow:
        0 8px 20px -4px rgba(0,0,0,0.20),
        inset 0 0 0 1px rgba(22,163,74,0.20);
    transition: transform 320ms var(--lf-spring);
}
.lf-card:hover .lf-card-verified {
    transform: scale(1.06);
}
.lf-card-verified svg { color: var(--lf-green); }

/* ============================================================
   REWARD — destaca abajo-izq de la foto, gold/amber gradient
   ============================================================ */
.lf-card-reward {
    position: absolute; bottom: 14px; left: 14px;
    z-index: 4;
    display: inline-flex; align-items: center; gap: 5px;
    padding: 7px 13px;
    background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 50%, #ea580c 100%);
    background-size: 200% 200%;
    color: #fff;
    border-radius: 999px;
    font-size: 12.5px; font-weight: 800;
    letter-spacing: -0.005em;
    box-shadow:
        0 10px 24px -6px rgba(245,158,11,0.55),
        inset 0 1px 0 rgba(255,255,255,0.30);
    animation: lf-reward-shimmer 4000ms ease-in-out infinite;
}
@keyframes lf-reward-shimmer {
    0%, 100% { background-position: 0% 50%; }
    50%      { background-position: 100% 50%; }
}
.lf-card-reward svg { color: #fff; filter: drop-shadow(0 1px 2px rgba(0,0,0,0.20)); }

/* ============================================================
   BODY — title + chips + location + footer
   ============================================================ */
.lf-card-body {
    padding: 20px 22px 22px;
    position: relative;
}

.lf-card-title {
    margin: 0 0 10px;
    font-size: 19px; font-weight: 700;
    color: var(--lf-ink);
    letter-spacing: -0.018em;
    line-height: 1.20;
    -webkit-line-clamp: 1; -webkit-box-orient: vertical;
    display: -webkit-box;
    overflow: hidden;
    transition: color 320ms var(--lf-ease);
}
.lf-card--lost:hover  .lf-card-title { color: var(--lf-red); }
.lf-card--found:hover .lf-card-title { color: var(--lf-green); }

/* Chips de atributos — pills sutiles */
.lf-card-chips {
    display: flex; flex-wrap: wrap; gap: 5px;
    margin-bottom: 12px;
}
.lf-card-chip {
    display: inline-flex; align-items: center;
    padding: 3px 10px;
    background: rgba(0,0,0,0.04);
    border: 1px solid rgba(0,0,0,0.04);
    border-radius: 999px;
    font-size: 11.5px; font-weight: 600;
    color: var(--lf-muted);
    letter-spacing: -0.005em;
    transition: all 280ms var(--lf-ease);
}
.lf-card--lost:hover .lf-card-chip {
    background: rgba(220,38,38,0.08);
    color: var(--lf-red);
    border-color: rgba(220,38,38,0.14);
}
.lf-card--found:hover .lf-card-chip {
    background: rgba(22,163,74,0.08);
    color: var(--lf-green);
    border-color: rgba(22,163,74,0.14);
}

/* Location row */
.lf-card-loc {
    display: inline-flex; align-items: center; gap: 6px;
    margin-bottom: 14px;
    color: var(--lf-ink);
    font-size: 13.5px; font-weight: 600;
    letter-spacing: -0.005em;
}
.lf-card--lost  .lf-card-loc svg { color: var(--lf-red); }
.lf-card--found .lf-card-loc svg { color: var(--lf-green); }

/* Footer: date + arrow CTA */
.lf-card-foot {
    display: flex; align-items: center; justify-content: space-between;
    padding-top: 14px;
    border-top: 1px solid var(--lf-line-2);
    gap: 10px;
}
.lf-card-date {
    display: inline-flex; align-items: center; gap: 5px;
    color: var(--lf-muted-2);
    font-size: 12px; font-weight: 500;
    letter-spacing: -0.003em;
}
.lf-card-date svg { flex-shrink: 0; }

/* Arrow circular que desliza al hover */
.lf-card-arrow {
    flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px;
    border-radius: 50%;
    background: rgba(0,0,0,0.04);
    color: var(--lf-muted);
    transition:
        background 320ms var(--lf-ease),
        color 320ms var(--lf-ease),
        transform 480ms var(--lf-spring);
    overflow: hidden;
}
.lf-card-arrow svg {
    transition: transform 480ms var(--lf-spring);
}
.lf-card--lost:hover  .lf-card-arrow { background: linear-gradient(135deg, var(--lf-red), var(--lf-orange)); color: #fff; transform: scale(1.10); }
.lf-card--found:hover .lf-card-arrow { background: linear-gradient(135deg, var(--lf-green), var(--lf-cyan)); color: #fff; transform: scale(1.10); }
.lf-card:hover .lf-card-arrow svg { transform: translateX(2px); }

/* ============================================================
   EMPTY STATE — animado
   ============================================================ */
.lf-empty {
    text-align: center;
    padding: 80px 24px;
    background: linear-gradient(180deg, #fff 0%, #fafafa 100%);
    border: 2px dashed var(--lf-line);
    border-radius: 24px;
}
.lf-empty-icon {
    font-size: 64px;
    margin-bottom: 18px;
    display: inline-block;
    animation: lf-empty-bounce 2400ms var(--lf-ease) infinite;
}
@keyframes lf-empty-bounce {
    0%, 100% { transform: translateY(0)    rotate(0deg); }
    25%      { transform: translateY(-10px) rotate(-6deg); }
    50%      { transform: translateY(-4px)  rotate(0deg); }
    75%      { transform: translateY(-10px) rotate(6deg); }
}
.lf-empty h3 { margin: 0 0 8px; color: var(--lf-ink); font-size: 22px; letter-spacing: -0.015em; }
.lf-empty p  { margin: 0 0 28px; color: var(--lf-muted); font-size: 15px; line-height: 1.5; }
.lf-empty-cta { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

/* ============================================================
   PAGINATION
   ============================================================ */
.lf-pagination {
    display: flex; gap: 6px; justify-content: center;
    margin-top: 40px;
    flex-wrap: wrap;
}
.lf-page, .lf-page-sep {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 40px; height: 40px;
    padding: 0 12px;
    border-radius: 12px;
    font-size: 13.5px;
    font-weight: 600;
    color: var(--lf-ink);
    text-decoration: none;
    border: 1px solid var(--lf-line);
    background: #fff;
    transition:
        all 240ms var(--lf-ease),
        transform 240ms var(--lf-spring);
}
.lf-page:hover {
    border-color: var(--lf-orange);
    color: var(--lf-orange);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px -4px rgba(234,88,12,0.30);
}
.lf-page.is-current {
    background: linear-gradient(135deg, var(--lf-orange), var(--lf-pink));
    background-size: 200% 200%;
    border-color: transparent;
    color: #fff;
    box-shadow: 0 6px 16px -6px rgba(234,88,12,0.50);
    animation: lf-grad-flow 5000ms ease-in-out infinite;
}
.lf-page-sep { border: none; background: transparent; color: var(--lf-muted); }

/* ============================================================
   DETALLE — PREMIUM redesign con hero cinematográfico + sticky aside
   ============================================================ */
.lf-v {
    position: relative;
    max-width: 1240px;
    margin: 0 auto;
    padding: 24px 24px 96px;
    isolation: isolate;
}

/* Ambient orbs por tipo */
.lf-v-amb {
    position: fixed; inset: 0;
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
}
.lf-v-orb {
    position: absolute;
    border-radius: 50%;
    filter: blur(120px);
    opacity: 0.35;
    animation: lf-orb-drift 24000ms ease-in-out infinite alternate;
}
.lf-v--lost .lf-v-orb-1 {
    width: 520px; height: 520px;
    top: -180px; left: -10%;
    background: radial-gradient(circle, rgba(220,38,38,0.45) 0%, transparent 70%);
}
.lf-v--lost .lf-v-orb-2 {
    width: 480px; height: 480px;
    top: 40%; right: -8%;
    background: radial-gradient(circle, rgba(234,88,12,0.40) 0%, transparent 70%);
    animation-delay: -10000ms;
}
.lf-v--found .lf-v-orb-1 {
    width: 520px; height: 520px;
    top: -180px; left: -10%;
    background: radial-gradient(circle, rgba(22,163,74,0.40) 0%, transparent 70%);
}
.lf-v--found .lf-v-orb-2 {
    width: 480px; height: 480px;
    top: 40%; right: -8%;
    background: radial-gradient(circle, rgba(14,165,233,0.40) 0%, transparent 70%);
    animation-delay: -10000ms;
}

.lf-v-topbar {
    display: flex; align-items: center; justify-content: space-between;
    gap: 16px;
    margin-bottom: 22px;
    position: relative;
    z-index: 2;
}
.lf-back {
    display: inline-flex; align-items: center; gap: 8px;
    color: var(--lf-muted);
    text-decoration: none;
    font-size: 14px; font-weight: 500;
    padding: 9px 14px;
    border-radius: 12px;
    background: rgba(255,255,255,0.70);
    border: 1px solid rgba(0,0,0,0.05);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    transition:
        color 240ms var(--lf-ease),
        background 240ms var(--lf-ease),
        transform 320ms var(--lf-spring),
        box-shadow 320ms var(--lf-ease);
}
.lf-back:hover {
    color: var(--lf-orange);
    background: #fff;
    transform: translateX(-3px);
    box-shadow: 0 8px 20px -8px rgba(0,0,0,0.15);
}
.lf-back svg {
    transition: transform 320ms var(--lf-spring);
}
.lf-back:hover svg { transform: translateX(-2px); }

.lf-v-stats {
    display: inline-flex; align-items: center; gap: 8px;
}
.lf-v-stat {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 7px 12px;
    background: rgba(255,255,255,0.70);
    border: 1px solid rgba(0,0,0,0.05);
    border-radius: 999px;
    font-size: 12.5px; font-weight: 600;
    color: var(--lf-muted);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}
.lf-v-stat-id {
    font-family: 'SF Mono', Menlo, monospace;
    color: var(--lf-muted-2);
}

/* ============================================================
   OWNER BAR
   ============================================================ */
.lf-owner-bar {
    display: flex; align-items: center; gap: 14px;
    padding: 14px 20px; margin: 0 0 24px;
    background: linear-gradient(135deg, rgba(234,88,12,0.10), rgba(236,72,153,0.08));
    border: 1px solid rgba(234,88,12,0.25);
    border-radius: 16px;
    color: var(--lf-ink);
    font-size: 14px;
    flex-wrap: wrap;
    box-shadow: 0 8px 20px -8px rgba(234,88,12,0.20);
    position: relative; z-index: 2;
}
.lf-owner-bar strong { color: var(--lf-orange); }
.lf-owner-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 36px; height: 36px;
    background: linear-gradient(135deg, var(--lf-orange), var(--lf-pink));
    color: #fff;
    border-radius: 10px;
    flex-shrink: 0;
    box-shadow: 0 6px 14px -4px rgba(234,88,12,0.40);
}

/* ============================================================
   HERO — foto cinematográfica + título flotante
   ============================================================ */
.lf-v-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 48px;
    align-items: center;
    padding: 40px 0 56px;
    position: relative; z-index: 1;
    /* entrance dramatic */
    animation: lf-v-enter 1800ms var(--lf-ease) both;
}
@keyframes lf-v-enter {
    from { opacity: 0; transform: translateY(28px); filter: blur(8px); }
    to   { opacity: 1; transform: translateY(0);    filter: blur(0); }
}

.lf-v-photo-wrap { position: relative; }
.lf-v-photo-frame {
    position: relative;
    border-radius: 28px;
    overflow: hidden;
    background: #f1f1f4;
    box-shadow:
        0 40px 80px -20px rgba(0,0,0,0.30),
        0 16px 32px -16px rgba(0,0,0,0.15),
        inset 0 0 0 1px rgba(255,255,255,0.40);
    isolation: isolate;
    aspect-ratio: 4 / 3;
}
.lf-v--lost .lf-v-photo-frame {
    box-shadow:
        0 40px 80px -20px rgba(220,38,38,0.30),
        0 20px 40px -20px rgba(234,88,12,0.20),
        inset 0 0 0 1px rgba(255,255,255,0.40);
}
.lf-v--found .lf-v-photo-frame {
    box-shadow:
        0 40px 80px -20px rgba(22,163,74,0.30),
        0 20px 40px -20px rgba(14,165,233,0.20),
        inset 0 0 0 1px rgba(255,255,255,0.40);
}
.lf-v-photo {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 2000ms var(--lf-ease);
}
.lf-v-photo-frame:hover .lf-v-photo { transform: scale(1.03); }

.lf-v-pill {
    position: absolute; top: 18px; left: 18px;
    z-index: 4;
    display: inline-flex; align-items: center; gap: 8px;
    padding: 9px 16px;
    border-radius: 999px;
    font-size: 12px; font-weight: 800;
    letter-spacing: 0.10em; text-transform: uppercase;
    color: #fff;
    box-shadow:
        0 12px 28px -6px rgba(0,0,0,0.40),
        inset 0 1px 0 rgba(255,255,255,0.20);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}
.lf-v-pill--lost  { background: linear-gradient(135deg, rgba(220,38,38,0.96), rgba(234,88,12,0.96)); }
.lf-v-pill--found { background: linear-gradient(135deg, rgba(22,163,74,0.96), rgba(14,165,233,0.96)); }

.lf-v-reward-float {
    position: absolute; bottom: 18px; left: 18px;
    z-index: 4;
    display: inline-flex; align-items: center; gap: 6px;
    padding: 9px 16px;
    background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 50%, #ea580c 100%);
    background-size: 200% 200%;
    color: #fff;
    border-radius: 999px;
    font-size: 13.5px; font-weight: 800;
    box-shadow:
        0 14px 28px -6px rgba(245,158,11,0.55),
        inset 0 1px 0 rgba(255,255,255,0.25);
    animation: lf-grad-flow 4000ms ease-in-out infinite;
}

/* Decoration SVG sobre la foto del hero */
.lf-v-radar {
    position: absolute;
    width: 220px; height: 220px;
    bottom: -60px; right: -60px;
    z-index: 2;
    pointer-events: none;
    color: rgba(255,255,255,0.55);
    mix-blend-mode: overlay;
}
.lf-v-radar circle {
    transform-origin: 50% 50%;
    animation: lf-radar-wave 3000ms var(--lf-ease) infinite;
}
.lf-v-radar circle:nth-child(1) { animation-delay:    0ms; }
.lf-v-radar circle:nth-child(2) { animation-delay: 1000ms; }
.lf-v-radar circle:nth-child(3) { animation-delay: 2000ms; }

.lf-v-sparkle {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    z-index: 2;
    pointer-events: none;
    color: rgba(255,255,255,0.85);
    mix-blend-mode: overlay;
}
.lf-v-sparkle path {
    transform-origin: center;
    animation: lf-sparkle 3600ms var(--lf-ease) infinite;
}
.lf-v-sparkle path:nth-child(1) { animation-delay:    0ms; }
.lf-v-sparkle path:nth-child(2) { animation-delay:  900ms; }
.lf-v-sparkle path:nth-child(3) { animation-delay: 1800ms; }

/* HEADLINE side */
.lf-v-headline { min-width: 0; }
.lf-v-eyebrow {
    display: inline-flex; align-items: center; gap: 7px;
    padding: 6px 14px;
    background: rgba(255,255,255,0.85);
    border: 1px solid rgba(0,0,0,0.05);
    border-radius: 999px;
    font-size: 12.5px; font-weight: 600;
    color: var(--lf-muted);
    letter-spacing: -0.005em;
    margin: 0 0 18px;
    backdrop-filter: blur(8px);
}
.lf-v-eyebrow strong { color: var(--lf-ink); margin-left: 2px; }
.lf-v--lost  .lf-v-eyebrow svg { color: var(--lf-red); }
.lf-v--found .lf-v-eyebrow svg { color: var(--lf-green); }

.lf-v-title {
    margin: 0 0 14px;
    font-size: clamp(36px, 6vw, 64px);
    font-weight: 700;
    color: var(--lf-ink);
    letter-spacing: -0.030em;
    line-height: 1.02;
    background: linear-gradient(135deg, var(--lf-ink) 0%, var(--lf-ink-2) 100%);
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
}
.lf-v--lost .lf-v-title {
    background: linear-gradient(135deg, var(--lf-ink) 0%, var(--lf-red) 100%);
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
}
.lf-v--found .lf-v-title {
    background: linear-gradient(135deg, var(--lf-ink) 0%, var(--lf-green) 100%);
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
}

.lf-v-loc {
    display: inline-flex; align-items: center; gap: 7px;
    margin: 0 0 22px;
    font-size: 16px;
    font-weight: 600;
    color: var(--lf-ink);
    letter-spacing: -0.005em;
}
.lf-v--lost  .lf-v-loc svg { color: var(--lf-red); }
.lf-v--found .lf-v-loc svg { color: var(--lf-green); }

.lf-v-quickchips {
    display: flex; flex-wrap: wrap; gap: 6px;
}
.lf-v-chip {
    padding: 6px 12px;
    background: rgba(255,255,255,0.85);
    border: 1px solid rgba(0,0,0,0.06);
    border-radius: 999px;
    font-size: 12.5px; font-weight: 600;
    color: var(--lf-ink-2);
    letter-spacing: -0.005em;
    backdrop-filter: blur(8px);
    transition: transform 240ms var(--lf-spring);
}
.lf-v-chip:hover { transform: translateY(-1px) scale(1.02); }

/* ============================================================
   BODY: 2 columnas con sticky aside
   ============================================================ */
.lf-v-body {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 36px;
    position: relative;
    z-index: 1;
}
.lf-v-content { min-width: 0; display: flex; flex-direction: column; gap: 32px; }
.lf-v-side {
    position: sticky; top: 132px;
    align-self: start;
}

/* ============================================================
   SECTIONS — header con icon + content card
   ============================================================ */
.lf-v-section {
    background: rgba(255,255,255,0.85);
    border: 1px solid var(--lf-line);
    border-radius: 22px;
    padding: 28px 30px;
    box-shadow: var(--lf-shadow-md);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    transition: box-shadow 480ms var(--lf-ease);
}
.lf-v-section:hover { box-shadow: var(--lf-shadow-lg); }

.lf-v-h2 {
    display: flex; align-items: center; gap: 10px;
    margin: 0 0 18px;
    font-size: 20px; font-weight: 700;
    color: var(--lf-ink);
    letter-spacing: -0.020em;
}
.lf-v-h2-ico {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px;
    background: linear-gradient(135deg, var(--lf-orange), var(--lf-pink));
    color: #fff;
    border-radius: 10px;
    flex-shrink: 0;
    box-shadow: 0 6px 14px -4px rgba(234,88,12,0.40);
}
.lf-v--found .lf-v-h2-ico { background: linear-gradient(135deg, var(--lf-green), var(--lf-cyan)); box-shadow: 0 6px 14px -4px rgba(22,163,74,0.40); }

/* ============================================================
   ATTRS — grid de mini-cards individuales
   ============================================================ */
.lf-v-attrs {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px;
    margin: 0;
}
.lf-v-attr {
    background: linear-gradient(180deg, #fff 0%, #fafafa 100%);
    border: 1px solid var(--lf-line-2);
    border-radius: 14px;
    padding: 14px 16px;
    transition: all 320ms var(--lf-ease);
}
.lf-v-attr:hover {
    border-color: rgba(234,88,12,0.18);
    background: #fff;
    transform: translateY(-2px);
    box-shadow: 0 8px 20px -8px rgba(0,0,0,0.10);
}
.lf-v--found .lf-v-attr:hover { border-color: rgba(22,163,74,0.18); }
.lf-v-attr-wide { grid-column: span 2; }
.lf-v-attr dt {
    font-size: 11px; font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.10em;
    color: var(--lf-muted-2);
    margin-bottom: 6px;
}
.lf-v-attr dd {
    margin: 0;
    font-size: 15.5px; font-weight: 700;
    color: var(--lf-ink);
    letter-spacing: -0.010em;
    word-break: break-word;
}
.lf-v-code {
    display: inline-block;
    background: linear-gradient(135deg, var(--lf-ink), var(--lf-ink-2));
    color: #fff;
    padding: 5px 12px;
    border-radius: 8px;
    font-family: 'SF Mono', Menlo, monospace;
    font-size: 13.5px;
    letter-spacing: 0.04em;
    box-shadow: 0 4px 12px -4px rgba(0,0,0,0.30);
}

/* CALLOUT (señas particulares) */
.lf-v-callout {
    display: flex; gap: 14px;
    padding: 18px 22px;
    background: linear-gradient(135deg, rgba(245,158,11,0.10), rgba(234,88,12,0.06));
    border: 1px solid rgba(245,158,11,0.30);
    border-radius: 18px;
    color: var(--lf-ink);
    box-shadow: 0 8px 20px -10px rgba(245,158,11,0.30);
}
.lf-v-callout-ico {
    flex-shrink: 0;
    width: 36px; height: 36px;
    display: inline-flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #fbbf24, var(--lf-amber));
    color: #fff;
    border-radius: 10px;
    box-shadow: 0 6px 12px -4px rgba(245,158,11,0.50);
}
.lf-v-callout strong {
    display: block;
    font-size: 13px; font-weight: 800;
    text-transform: uppercase; letter-spacing: 0.06em;
    color: #b45309;
    margin-bottom: 4px;
}
.lf-v-callout p { margin: 0; font-size: 14.5px; line-height: 1.55; }
.lf-v-callout-closed {
    background: rgba(0,0,0,0.04);
    border-color: rgba(0,0,0,0.08);
    box-shadow: none;
}
.lf-v-callout-closed strong { color: var(--lf-muted); }

.lf-v-desc {
    margin: 0;
    color: var(--lf-ink-2);
    font-size: 16px;
    line-height: 1.70;
    letter-spacing: -0.005em;
}

.lf-v-mapnote {
    margin: 0 0 14px;
    color: var(--lf-muted);
    font-size: 13px;
    font-style: italic;
}
.lf-v-map {
    width: 100%; height: 380px;
    border-radius: 16px;
    overflow: hidden;
    background: #f1f1f4;
    border: 1px solid var(--lf-line);
    box-shadow: var(--lf-shadow-md);
}

.lf-v-meta {
    color: var(--lf-muted-2);
    font-size: 12.5px;
    text-align: center;
    padding: 14px 0 4px;
    letter-spacing: -0.003em;
}

/* ============================================================
   STICKY CONTACT CARD
   ============================================================ */
.lf-v-contact {
    background: linear-gradient(180deg, #fff 0%, #fafafa 100%);
    border: 1px solid var(--lf-line);
    border-radius: 24px;
    padding: 28px 26px;
    box-shadow:
        0 30px 60px -20px rgba(0,0,0,0.18),
        0 12px 24px -12px rgba(0,0,0,0.10);
    position: relative;
    overflow: hidden;
    isolation: isolate;
}
/* Border gradient sutil al hover según tipo */
.lf-v-contact::before {
    content: '';
    position: absolute; inset: 0;
    border-radius: 24px;
    padding: 1.5px;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
            mask-composite: exclude;
    pointer-events: none;
    opacity: 0.50;
}
.lf-v--lost  .lf-v-contact::before { background: linear-gradient(135deg, var(--lf-red), var(--lf-orange)); }
.lf-v--found .lf-v-contact::before { background: linear-gradient(135deg, var(--lf-green), var(--lf-cyan)); }

.lf-v-contact-head {
    text-align: center;
    margin-bottom: 22px;
}
.lf-v-contact-emoji {
    display: inline-block;
    font-size: 42px;
    margin-bottom: 10px;
    animation: lf-v-emoji-bounce 2400ms var(--lf-spring) infinite;
}
@keyframes lf-v-emoji-bounce {
    0%, 100% { transform: translateY(0) rotate(0); }
    25%      { transform: translateY(-6px) rotate(-8deg); }
    50%      { transform: translateY(0) rotate(0); }
    75%      { transform: translateY(-3px) rotate(8deg); }
}
.lf-v-contact-title {
    margin: 0 0 8px;
    font-size: 22px; font-weight: 800;
    letter-spacing: -0.020em;
    color: var(--lf-ink);
}
.lf-v--lost  .lf-v-contact-title { background: linear-gradient(135deg, var(--lf-red), var(--lf-orange)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.lf-v--found .lf-v-contact-title { background: linear-gradient(135deg, var(--lf-green), var(--lf-cyan));   -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.lf-v-contact-sub {
    margin: 0;
    color: var(--lf-muted);
    font-size: 13.5px;
    line-height: 1.5;
}

.lf-v-contact-card {
    padding: 14px;
    background: rgba(0,0,0,0.025);
    border: 1px solid rgba(0,0,0,0.04);
    border-radius: 14px;
    margin-bottom: 18px;
}
.lf-v-contact-name {
    display: flex; align-items: center; gap: 12px;
}
.lf-v-avatar {
    flex-shrink: 0;
    width: 44px; height: 44px;
    border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, var(--lf-orange), var(--lf-pink));
    color: #fff;
    font-size: 18px; font-weight: 700;
    box-shadow: 0 6px 14px -4px rgba(234,88,12,0.40);
}
.lf-v--found .lf-v-avatar {
    background: linear-gradient(135deg, var(--lf-green), var(--lf-cyan));
    box-shadow: 0 6px 14px -4px rgba(22,163,74,0.40);
}
.lf-v-contact-name-text {
    font-size: 15px; font-weight: 700;
    color: var(--lf-ink);
    margin-bottom: 2px;
}
.lf-v-verified {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: 11.5px; font-weight: 700;
    color: var(--lf-green);
    letter-spacing: -0.005em;
}

.lf-v-contact-actions {
    display: flex; flex-direction: column; gap: 8px;
    margin-bottom: 22px;
}
.lf-v-cta {
    display: inline-flex; align-items: center; justify-content: center; gap: 9px;
    padding: 14px 18px;
    border-radius: 14px;
    font-size: 14.5px; font-weight: 700;
    text-decoration: none;
    color: #fff !important;
    transition:
        transform 320ms var(--lf-spring),
        box-shadow 320ms var(--lf-ease);
    letter-spacing: -0.005em;
    border: none;
    cursor: pointer;
    font-family: inherit;
}
.lf-v-cta:hover { transform: translateY(-2px) scale(1.01); }
.lf-v-cta-wa {
    background: linear-gradient(135deg, #25d366 0%, #128c7e 100%);
    box-shadow: 0 12px 26px -8px rgba(37,211,102,0.50);
}
.lf-v-cta-wa:hover { box-shadow: 0 16px 32px -8px rgba(37,211,102,0.60); }
.lf-v-cta-tel {
    background: linear-gradient(135deg, var(--lf-orange), var(--lf-amber));
    box-shadow: 0 12px 26px -8px rgba(234,88,12,0.50);
}
.lf-v-cta-tel:hover { box-shadow: 0 16px 32px -8px rgba(234,88,12,0.60); }
.lf-v-cta-mail {
    background: linear-gradient(135deg, var(--lf-ink), var(--lf-ink-2));
    box-shadow: 0 12px 26px -8px rgba(0,0,0,0.40);
}
.lf-v-cta-mail:hover { box-shadow: 0 16px 32px -8px rgba(0,0,0,0.50); }

.lf-v-share-label {
    margin: 0 0 10px;
    font-size: 12px; font-weight: 700;
    color: var(--lf-muted);
    text-transform: uppercase;
    letter-spacing: 0.10em;
    text-align: center;
}
.lf-v-share {
    display: flex; gap: 8px; justify-content: center;
}
.lf-v-share-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 40px; height: 40px;
    border-radius: 12px;
    background: rgba(0,0,0,0.04);
    color: var(--lf-muted);
    text-decoration: none;
    border: 1px solid transparent;
    cursor: pointer;
    font-family: inherit;
    transition:
        all 280ms var(--lf-ease),
        transform 320ms var(--lf-spring);
}
.lf-v-share-btn:hover {
    background: var(--lf-ink);
    color: #fff;
    transform: translateY(-3px) scale(1.05);
    box-shadow: 0 12px 24px -8px rgba(0,0,0,0.30);
}
.lf-v-share-copy.is-copied {
    background: linear-gradient(135deg, var(--lf-green), var(--lf-cyan));
    color: #fff;
    transform: scale(1.10);
}
.lf-v-share-copy.is-copied svg { animation: lf-spin-once 600ms var(--lf-spring); }
@keyframes lf-spin-once {
    from { transform: rotate(0); }
    to   { transform: rotate(360deg); }
}

.lf-owner-bar {
    display: flex; align-items: center; gap: 14px;
    padding: 14px 20px; margin: 0 0 28px;
    background: linear-gradient(135deg, rgba(234,88,12,0.08), rgba(236,72,153,0.06));
    border: 1px solid rgba(234,88,12,0.22);
    border-radius: 14px;
    color: var(--lf-ink);
    font-size: 14px;
    flex-wrap: wrap;
    box-shadow: 0 4px 12px -4px rgba(234,88,12,0.18);
}
.lf-owner-bar strong { color: var(--lf-orange); }

.lf-detail-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
    gap: 40px;
    align-items: start;
}

.lf-detail-photo {
    position: relative;
    margin: 0;
    border-radius: 22px;
    overflow: hidden;
    background: #f1f1f4;
    box-shadow: var(--lf-shadow-xl);
    transform: translateZ(0);
}
.lf-detail-photo img {
    width: 100%; height: auto; display: block;
    transition: transform 1600ms var(--lf-ease);
}
.lf-detail-photo:hover img { transform: scale(1.02); }
.lf-detail-photo .lf-card-pill {
    top: 18px; left: 18px;
    font-size: 11.5px; padding: 7px 14px;
}

.lf-detail-info { min-width: 0; }
.lf-detail-title {
    margin: 0 0 6px;
    font-size: clamp(28px, 4vw, 40px);
    font-weight: 700;
    letter-spacing: -0.025em;
    color: var(--lf-ink);
    line-height: 1.05;
}
.lf-detail-sub {
    color: var(--lf-muted);
    font-size: 14.5px;
    margin-bottom: 28px;
    line-height: 1.5;
}
.lf-detail-sub strong { color: var(--lf-ink); font-weight: 600; }

.lf-attrs {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 16px;
    margin: 0 0 24px;
    padding: 22px;
    background: var(--lf-card);
    border: 1px solid var(--lf-line);
    border-radius: 18px;
    box-shadow: var(--lf-shadow-sm);
}
.lf-attrs > div { min-width: 0; }
.lf-attrs dt {
    font-size: 11px; text-transform: uppercase;
    letter-spacing: 0.10em;
    color: var(--lf-muted-2);
    margin-bottom: 4px;
    font-weight: 600;
}
.lf-attrs dd {
    margin: 0;
    font-size: 14.5px; font-weight: 600;
    color: var(--lf-ink);
    word-break: break-word;
    letter-spacing: -0.005em;
}
.lf-attrs code {
    background: #f5f5f7;
    padding: 3px 8px;
    border-radius: 6px;
    font-family: 'SF Mono', Menlo, monospace;
    font-size: 12.5px;
}

.lf-callout {
    padding: 16px 20px;
    background: rgba(245,158,11,0.08);
    border-left: 3px solid var(--lf-amber);
    border-radius: 12px;
    color: var(--lf-ink);
    margin: 0 0 24px;
    font-size: 14.5px;
    line-height: 1.55;
}
.lf-callout-closed {
    background: rgba(0,0,0,0.04);
    border-left-color: var(--lf-muted);
    color: var(--lf-muted);
}

.lf-section-title {
    margin: 32px 0 12px;
    font-size: 18.5px; font-weight: 700;
    color: var(--lf-ink);
    letter-spacing: -0.018em;
}
.lf-description {
    margin: 0 0 24px;
    color: var(--lf-ink-2);
    font-size: 15.5px; line-height: 1.7;
}
.lf-reward {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 12px 22px;
    margin: 16px 0;
    background: linear-gradient(135deg, var(--lf-amber), #fbbf24);
    color: #78350f;
    border-radius: 999px;
    font-size: 16px; font-weight: 700;
    box-shadow: 0 12px 28px -10px rgba(245,158,11,0.55);
}

/* Contacto */
.lf-contact {
    padding: 22px;
    background: var(--lf-card);
    border: 1px solid var(--lf-line);
    border-radius: 18px;
    margin-bottom: 24px;
    box-shadow: var(--lf-shadow-sm);
}
.lf-contact-name {
    display: flex; align-items: center; gap: 10px;
    font-weight: 700; color: var(--lf-ink);
    font-size: 16.5px;
    margin-bottom: 14px;
    letter-spacing: -0.01em;
}
.lf-contact-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.lf-cbtn {
    padding: 11px 20px;
    border-radius: 12px;
    text-decoration: none;
    font-size: 13.5px; font-weight: 600;
    color: #fff;
    border: none;
    cursor: pointer;
    transition: transform 280ms var(--lf-spring), box-shadow 280ms var(--lf-ease);
}
.lf-cbtn:hover { transform: translateY(-1px); box-shadow: 0 8px 20px -8px rgba(0,0,0,0.30); }
.lf-cbtn-mail { background: var(--lf-ink); }
.lf-cbtn-tel  { background: linear-gradient(135deg, var(--lf-orange), var(--lf-amber)); }
.lf-cbtn-wa   { background: #25d366; }

/* Mapa */
.lf-map-note { color: var(--lf-muted); font-size: 13px; margin: 0 0 14px; }
.lf-map {
    width: 100%; height: 360px;
    border-radius: 18px;
    overflow: hidden;
    background: #f1f1f4;
    border: 1px solid var(--lf-line);
    box-shadow: var(--lf-shadow-md);
}
.lf-detail-meta {
    margin-top: 32px;
    color: var(--lf-muted-2);
    font-size: 12.5px;
    border-top: 1px solid var(--lf-line);
    padding-top: 16px;
}

/* ============================================================
   FORMULARIO
   ============================================================ */
.lf-form-shell {
    max-width: 820px;
    margin: 0 auto;
    padding: 32px 24px 96px;
}
.lf-form-mode {
    display: flex; gap: 16px; align-items: center;
    padding: 22px 26px;
    border-radius: 20px;
    margin-bottom: 28px;
    color: #fff;
    box-shadow: var(--lf-shadow-lg);
    position: relative;
    overflow: hidden;
    isolation: isolate;
}
.lf-form-mode::before {
    content: '';
    position: absolute; inset: 0;
    background: radial-gradient(ellipse at 20% 0%, rgba(255,255,255,0.15) 0%, transparent 60%);
    z-index: 0;
}
.lf-form-mode > * { position: relative; z-index: 1; }
.lf-form-mode--lost  { background: linear-gradient(135deg, #dc2626 0%, var(--lf-orange) 100%); }
.lf-form-mode--found { background: linear-gradient(135deg, #0ea5e9 0%, var(--lf-green) 100%); }
.lf-mode-icon {
    flex-shrink: 0;
    width: 52px; height: 52px;
    background: rgba(255,255,255,0.20);
    border-radius: 14px;
    display: flex; align-items: center; justify-content: center;
    color: #fff;
    backdrop-filter: blur(8px);
}
.lf-mode-title { margin: 0 0 3px; font-size: 19px; font-weight: 700; letter-spacing: -0.015em; }
.lf-mode-sub   { margin: 0; font-size: 14px; opacity: 0.94; line-height: 1.4; }

.lf-form { display: flex; flex-direction: column; gap: 22px; }
.lf-fieldset {
    background: var(--lf-card);
    border: 1px solid var(--lf-line);
    border-radius: 20px;
    padding: 26px;
    margin: 0;
    box-shadow: var(--lf-shadow-sm);
    transition: box-shadow 320ms var(--lf-ease);
}
.lf-fieldset:hover { box-shadow: var(--lf-shadow-md); }
.lf-fieldset legend {
    padding: 0 10px;
    font-size: 12.5px; font-weight: 700;
    color: var(--lf-orange);
    letter-spacing: 0.10em; text-transform: uppercase;
}
.lf-flabel-photo input[type="file"] {
    padding: 16px;
    background: #f8f8fa;
    border-style: dashed;
    cursor: pointer;
    transition: background 240ms var(--lf-ease), border-color 240ms var(--lf-ease);
}
.lf-flabel-photo input[type="file"]:hover {
    background: rgba(234,88,12,0.04);
    border-color: var(--lf-orange);
}
.lf-flabel-check {
    display: flex; align-items: center; gap: 10px;
    align-self: end;
    padding: 14px 0;
}
.lf-flabel-check input { width: 20px; height: 20px; cursor: pointer; }
.lf-req { color: var(--lf-red); }

.lf-form-cta {
    display: flex; gap: 14px; align-items: center; justify-content: flex-end;
    margin-top: 8px;
}
.lf-fbtn-publish {
    width: auto;
    padding: 16px 36px;
    font-size: 15px;
    background-size: 200% 200%;
}
.lf-fbtn--lost  { background: linear-gradient(135deg, #dc2626 0%, var(--lf-orange) 100%) !important; animation: none !important; }
.lf-fbtn--found { background: linear-gradient(135deg, #0ea5e9 0%, var(--lf-green) 100%) !important; animation: none !important; }

/* ============================================================
   MULTI-UPLOAD DE FOTOS — drop zone + previews + drag&drop
   ============================================================ */
.lf-photo-up {
    margin-bottom: 14px;
}
.lf-flabel-text {
    display: block;
    font-size: 13px; font-weight: 600;
    color: var(--lf-ink);
    margin-bottom: 10px;
    letter-spacing: -0.005em;
}
.lf-flabel-text small {
    font-weight: 400;
    color: var(--lf-muted);
    margin-left: 6px;
}

.lf-photo-drop {
    position: relative;
    display: flex; align-items: center; gap: 14px;
    padding: 26px 22px;
    background:
        linear-gradient(135deg, rgba(234,88,12,0.04), rgba(236,72,153,0.04));
    border: 2px dashed rgba(234,88,12,0.28);
    border-radius: 18px;
    cursor: pointer;
    transition:
        background 280ms var(--lf-ease),
        border-color 280ms var(--lf-ease),
        transform 320ms var(--lf-ease);
}
.lf-photo-drop:hover,
.lf-photo-drop.is-dragover {
    background: linear-gradient(135deg, rgba(234,88,12,0.08), rgba(236,72,153,0.08));
    border-color: var(--lf-orange);
    transform: scale(1.005);
}
.lf-photo-drop.is-dragover {
    border-style: solid;
    box-shadow: 0 0 0 4px rgba(234,88,12,0.10), 0 12px 28px -10px rgba(234,88,12,0.30);
}
.lf-photo-drop.is-has-files {
    padding: 18px 20px;
    border-style: solid;
    border-color: rgba(0,0,0,0.08);
    background: #fafafa;
}

.lf-photo-drop-icon {
    flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    width: 56px; height: 56px;
    background: linear-gradient(135deg, var(--lf-orange), var(--lf-pink));
    color: #fff;
    border-radius: 14px;
    box-shadow: 0 8px 18px -6px rgba(234,88,12,0.45);
    transition: transform 480ms var(--lf-spring);
}
.lf-photo-drop:hover .lf-photo-drop-icon { transform: scale(1.08) rotate(-4deg); }
.lf-photo-drop.is-dragover .lf-photo-drop-icon {
    animation: lf-photo-bounce 600ms var(--lf-spring) infinite;
}
@keyframes lf-photo-bounce {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-6px); }
}

.lf-photo-drop-text {
    flex: 1;
    display: flex; flex-direction: column;
    gap: 2px;
}
.lf-photo-drop-text strong {
    font-size: 15px; color: var(--lf-ink);
    letter-spacing: -0.010em;
}
.lf-photo-drop-text small {
    color: var(--lf-muted);
    font-size: 12.5px;
}

/* Grid de previews (después de seleccionar) */
.lf-photo-previews {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
    gap: 10px;
    margin-top: 14px;
}
.lf-photo-previews:empty { display: none; }

.lf-pp-item {
    position: relative;
    aspect-ratio: 1 / 1;
    border-radius: 12px;
    overflow: hidden;
    background: #f1f1f4;
    box-shadow: 0 4px 12px -4px rgba(0,0,0,0.10);
    border: 2px solid transparent;
    transition: transform 320ms var(--lf-ease), border-color 320ms var(--lf-ease);
    animation: lf-pp-in 480ms var(--lf-ease) both;
}
@keyframes lf-pp-in {
    from { opacity: 0; transform: scale(0.85); }
    to   { opacity: 1; transform: scale(1); }
}
.lf-pp-item.is-primary {
    border-color: var(--lf-orange);
    box-shadow:
        0 8px 18px -6px rgba(234,88,12,0.40),
        0 0 0 2px var(--lf-orange);
}
.lf-pp-item:hover { transform: scale(1.02); }

.lf-pp-img {
    width: 100%; height: 100%;
    object-fit: cover; display: block;
}

.lf-pp-badge {
    position: absolute; top: 6px; left: 6px;
    padding: 3px 8px;
    background: rgba(0,0,0,0.65);
    color: #fff;
    border-radius: 999px;
    font-size: 10px; font-weight: 700;
    letter-spacing: 0.06em;
    backdrop-filter: blur(6px);
}
.lf-pp-item.is-primary .lf-pp-badge {
    background: linear-gradient(135deg, var(--lf-orange), var(--lf-pink));
    text-transform: uppercase;
}

.lf-pp-remove {
    position: absolute; top: 6px; right: 6px;
    width: 24px; height: 24px;
    border: none;
    background: rgba(0,0,0,0.65);
    color: #fff;
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
    transition: all 240ms var(--lf-ease);
    backdrop-filter: blur(6px);
    font-family: inherit;
}
.lf-pp-remove:hover {
    background: var(--lf-red);
    transform: rotate(90deg) scale(1.10);
}

.lf-pp-add {
    aspect-ratio: 1 / 1;
    border: 2px dashed rgba(0,0,0,0.15);
    border-radius: 12px;
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px;
    color: var(--lf-muted);
    font-size: 11px; font-weight: 600;
    cursor: pointer;
    transition: all 280ms var(--lf-ease);
    text-align: center;
}
.lf-pp-add:hover {
    border-color: var(--lf-orange);
    color: var(--lf-orange);
    background: rgba(234,88,12,0.04);
}

.lf-photo-error {
    margin: 10px 0 0;
    padding: 10px 14px;
    background: rgba(220,38,38,0.08);
    border: 1px solid rgba(220,38,38,0.30);
    border-radius: 10px;
    color: var(--lf-red);
    font-size: 13px;
    font-weight: 600;
    opacity: 0;
    transform: translateY(-4px);
    transition: opacity 320ms var(--lf-ease), transform 320ms var(--lf-ease);
    pointer-events: none;
}
.lf-photo-error.is-show {
    opacity: 1; transform: translateY(0);
    pointer-events: auto;
}

.lf-photo-hint {
    display: inline-flex; align-items: center; gap: 6px;
    margin: 12px 0 0;
    color: var(--lf-muted);
    font-size: 12px;
    line-height: 1.5;
}
.lf-photo-hint svg { color: var(--lf-orange); flex-shrink: 0; }

/* ============================================================
   GALERÍA del detalle — main photo + thumbs strip + nav
   ============================================================ */
.lf-v-gallery {
    position: relative;
}
/* La declaración base de .lf-v-photo-frame está más arriba (position/border-radius/aspect-ratio).
   Aquí solo extendemos el cursor para indicar que es clickeable (abre lightbox). */
.lf-v-photo-frame { cursor: zoom-in; }

.lf-v-photo-counter {
    position: absolute; top: 18px; right: 18px;
    z-index: 5;
    padding: 6px 12px;
    background: rgba(0,0,0,0.55);
    color: #fff;
    border-radius: 999px;
    font-size: 12px; font-weight: 700;
    letter-spacing: -0.005em;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: 0 4px 12px -4px rgba(0,0,0,0.30);
    pointer-events: none;
}

.lf-v-photo-nav {
    position: absolute; top: 50%;
    transform: translateY(-50%);
    z-index: 5;
    width: 44px; height: 44px;
    background: rgba(255,255,255,0.94);
    border: none;
    border-radius: 50%;
    color: var(--lf-ink);
    cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
    box-shadow: 0 8px 20px -6px rgba(0,0,0,0.30);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    opacity: 0;
    transition:
        opacity 320ms var(--lf-ease),
        transform 320ms var(--lf-spring),
        background 240ms var(--lf-ease);
    font-family: inherit;
}
/* Reveal al hover del frame, AL FOCUS por teclado (WCAG 2.4.7) y siempre en touch */
.lf-v-photo-frame:hover .lf-v-photo-nav,
.lf-v-photo-nav:focus-visible { opacity: 1; }
.lf-v-photo-nav:focus-visible {
    outline: 2px solid var(--lf-orange);
    outline-offset: 2px;
}
.lf-v-photo-prev { left: 14px; }
.lf-v-photo-next { right: 14px; }
.lf-v-photo-prev:hover { transform: translateY(-50%) translateX(-2px) scale(1.08); }
.lf-v-photo-next:hover { transform: translateY(-50%) translateX(2px) scale(1.08); }

.lf-v-photo-zoom {
    position: absolute; bottom: 18px; right: 18px;
    z-index: 5;
    width: 36px; height: 36px;
    background: rgba(0,0,0,0.55);
    border: none;
    border-radius: 10px;
    color: #fff;
    cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    transition: all 280ms var(--lf-ease);
    opacity: 0;
    font-family: inherit;
}
.lf-v-photo-frame:hover .lf-v-photo-zoom,
.lf-v-photo-zoom:focus-visible { opacity: 1; }
.lf-v-photo-zoom:focus-visible {
    outline: 2px solid var(--lf-orange);
    outline-offset: 2px;
}
.lf-v-photo-zoom:hover { background: var(--lf-ink); transform: scale(1.10); }

/* En mobile siempre visibles (no hay hover) */
@media (hover: none) {
    .lf-v-photo-nav,
    .lf-v-photo-zoom { opacity: 1; }
}

/* Thumbnails strip */
.lf-v-thumbs {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 1fr;
    gap: 10px;
    margin-top: 14px;
}
.lf-v-thumb {
    position: relative;
    aspect-ratio: 1 / 1;
    background: #f1f1f4;
    border: 2px solid transparent;
    border-radius: 12px;
    overflow: hidden;
    cursor: pointer;
    padding: 0;
    box-shadow: 0 2px 6px -2px rgba(0,0,0,0.10);
    transition:
        border-color 320ms var(--lf-ease),
        transform 320ms var(--lf-spring),
        box-shadow 320ms var(--lf-ease);
}
.lf-v-thumb img {
    width: 100%; height: 100%;
    object-fit: cover; display: block;
    transition: transform 600ms var(--lf-ease);
}
.lf-v-thumb:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 24px -8px rgba(0,0,0,0.20);
}
.lf-v-thumb:hover img { transform: scale(1.08); }
.lf-v-thumb.is-active {
    border-color: var(--lf-orange);
    box-shadow:
        0 8px 18px -6px rgba(234,88,12,0.45),
        0 0 0 2px var(--lf-orange);
}
.lf-v--found .lf-v-thumb.is-active {
    border-color: var(--lf-green);
    box-shadow:
        0 8px 18px -6px rgba(22,163,74,0.45),
        0 0 0 2px var(--lf-green);
}

/* Fallback img rota en thumbs */
.lf-v-thumb.is-img-fallback {
    background:
        linear-gradient(135deg, rgba(234,88,12,0.10), rgba(245,158,11,0.10)),
        repeating-linear-gradient(45deg, rgba(0,0,0,0.02) 0 6px, transparent 6px 12px),
        #fafafa;
}

/* ============================================================
   LIGHTBOX — modal fullscreen para fotos
   ============================================================ */
.lf-lightbox {
    position: fixed; inset: 0;
    z-index: 9999;
    background: rgba(0,0,0,0.92);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex; align-items: center; justify-content: center;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition:
        opacity 480ms var(--lf-ease),
        visibility 0s linear 480ms;
}
.lf-lightbox.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition:
        opacity 480ms var(--lf-ease),
        visibility 0s linear 0s;
}
.lf-lb-img {
    max-width: 92vw;
    max-height: 88vh;
    object-fit: contain;
    border-radius: 12px;
    box-shadow: 0 40px 80px -20px rgba(0,0,0,0.70);
    transition: opacity 320ms var(--lf-ease);
    user-select: none;
    -webkit-user-drag: none;
}
.lf-lightbox.is-open .lf-lb-img {
    animation: lf-lb-in 480ms var(--lf-ease);
}
@keyframes lf-lb-in {
    from { opacity: 0; transform: scale(0.92); }
    to   { opacity: 1; transform: scale(1); }
}

.lf-lb-close,
.lf-lb-nav {
    position: absolute;
    background: rgba(255,255,255,0.10);
    border: 1px solid rgba(255,255,255,0.20);
    color: #fff;
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    transition: all 280ms var(--lf-ease);
    font-family: inherit;
}
.lf-lb-close {
    top: 24px; right: 24px;
    width: 48px; height: 48px;
}
.lf-lb-nav {
    top: 50%; transform: translateY(-50%);
    width: 56px; height: 56px;
}
.lf-lb-prev { left: 24px; }
.lf-lb-next { right: 24px; }
.lf-lb-close:hover,
.lf-lb-nav:hover {
    background: rgba(255,255,255,0.20);
    border-color: rgba(255,255,255,0.40);
}
.lf-lb-prev:hover { transform: translateY(-50%) translateX(-3px) scale(1.05); }
.lf-lb-next:hover { transform: translateY(-50%) translateX(3px) scale(1.05); }
.lf-lb-close:hover { transform: rotate(90deg) scale(1.05); }

.lf-lb-counter {
    position: absolute; bottom: 24px; left: 50%;
    transform: translateX(-50%);
    padding: 8px 18px;
    background: rgba(255,255,255,0.10);
    border: 1px solid rgba(255,255,255,0.20);
    color: #fff;
    border-radius: 999px;
    font-size: 13px; font-weight: 700;
    letter-spacing: -0.005em;
    backdrop-filter: blur(10px);
}

/* Mobile: nav buttons más cerca del borde */
@media (max-width: 640px) {
    .lf-lb-close { top: 16px; right: 16px; width: 40px; height: 40px; }
    .lf-lb-nav { width: 44px; height: 44px; }
    .lf-lb-prev { left: 12px; }
    .lf-lb-next { right: 12px; }
    .lf-v-thumbs {
        grid-auto-columns: minmax(64px, 1fr);
        gap: 8px;
    }
}

/* ============================================================
   CARD ENRICHMENTS — NUEVO badge, chips icónicos, días buscando,
   ubicación con jerarquía, location_hint, color dot
   ============================================================
   Filosofía visual:
   - Información estratégica sin sobrecarga
   - Jerarquía Apple-style (negrita / regular / sutil)
   - Pulse animations en elementos urgentes (NEW, días > 7)
   - Stagger entrance al cargar
   - prefers-reduced-motion safe
*/

/* ---------- Badge "NUEVO" — top-right de la foto ---------- */
.lf-card-new {
    position: absolute;
    top: 14px; right: 14px;
    z-index: 5;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 11px 6px 9px;
    background:
        linear-gradient(135deg, #16a34a 0%, #10b981 100%);
    color: #fff;
    border-radius: 999px;
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: 0.10em;
    box-shadow:
        0 8px 18px -4px rgba(22,163,74,0.55),
        inset 0 0 0 1px rgba(255,255,255,0.30);
    overflow: hidden;
    isolation: isolate;
    animation: lf-card-new-bounce 600ms var(--lf-spring) 200ms both;
}
@keyframes lf-card-new-bounce {
    0%   { transform: translateY(-12px) scale(0.7); opacity: 0; }
    60%  { transform: translateY(2px)   scale(1.06); opacity: 1; }
    100% { transform: translateY(0)     scale(1); }
}

/* Pulse halo — onda concéntrica detrás del badge cada 2400ms */
.lf-card-new-pulse {
    position: absolute;
    inset: 0;
    border-radius: 999px;
    background: rgba(34,197,94,0.45);
    animation: lf-card-new-pulse-anim 2400ms cubic-bezier(.22,1,.36,1) infinite;
    z-index: -1;
    pointer-events: none;
}
@keyframes lf-card-new-pulse-anim {
    0%, 100% { transform: scale(1);    opacity: 0.40; }
    50%      { transform: scale(1.30); opacity: 0;    }
}

.lf-card-new-spark {
    display: inline-flex;
    animation: lf-card-new-spin 4200ms linear infinite;
}
@keyframes lf-card-new-spin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

.lf-card-new-text {
    text-shadow: 0 1px 1px rgba(0,0,0,0.18);
}

/* Si hay reward Y nuevo a la vez, separamos verticalmente */
.lf-card-reward + .lf-card-new {
    top: 56px;
}

/* ---------- Chip de color con dot visual ---------- */
.lf-card-chip--color {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}
.lf-card-chip-dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: linear-gradient(135deg, currentColor 0%, color-mix(in srgb, currentColor 50%, transparent) 100%);
    box-shadow:
        inset 0 0 0 1px rgba(255,255,255,0.35),
        0 1px 2px rgba(0,0,0,0.10);
    flex-shrink: 0;
}

/* ---------- Chip con icono (collar / chip) ---------- */
.lf-card-chip--icon {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: linear-gradient(135deg, rgba(234,88,12,0.06), rgba(236,72,153,0.06));
    color: var(--lf-orange, #ea580c);
    border-color: rgba(234,88,12,0.18);
}
.lf-card--found .lf-card-chip--icon {
    background: linear-gradient(135deg, rgba(22,163,74,0.06), rgba(14,165,233,0.06));
    color: var(--lf-green, #16a34a);
    border-color: rgba(22,163,74,0.18);
}
.lf-card-chip--icon svg {
    flex-shrink: 0;
}

/* ---------- Ubicación con jerarquía (comuna fuerte + region sutil) ---------- */
.lf-card-loc-text {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
    min-width: 0;
}
.lf-card-loc-text strong {
    font-weight: 600;
    color: var(--lf-ink, #1d1d1f);
    letter-spacing: -0.01em;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lf-card-loc-text small {
    font-size: 11.5px;
    color: var(--lf-muted, #6e6e73);
    margin-top: 1px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ---------- Location hint (pista textual sutil bajo location) ---------- */
.lf-card-hint {
    display: flex;
    align-items: flex-start;
    gap: 6px;
    margin-top: 8px;
    padding: 8px 10px;
    background: rgba(0,0,0,0.025);
    border-radius: 10px;
    font-size: 12px;
    line-height: 1.4;
    color: var(--lf-muted, #6e6e73);
    border-left: 2px solid rgba(234,88,12,0.30);
}
.lf-card--found .lf-card-hint {
    border-left-color: rgba(22,163,74,0.30);
}
.lf-card-hint svg {
    flex-shrink: 0;
    margin-top: 1px;
    opacity: 0.65;
}
.lf-card-hint span {
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

/* ---------- Footer enriquecido: días buscándolo / hace X ---------- */
.lf-card-days,
.lf-card-time {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    color: var(--lf-muted, #6e6e73);
    letter-spacing: -0.005em;
    transition: color 320ms var(--lf-ease);
}
.lf-card-days strong {
    font-weight: 700;
    font-size: 14px;
    color: var(--lf-ink, #1d1d1f);
    font-variant-numeric: tabular-nums;
    transition: color 320ms var(--lf-ease);
}

/* Urgencia: cuando hay > 7 días, el contador toma color cálido + pulse sutil */
.lf-card-days.is-urgent {
    color: #c2410c;
}
.lf-card-days.is-urgent strong {
    color: #dc2626;
    animation: lf-card-days-pulse 2200ms ease-in-out infinite;
}
@keyframes lf-card-days-pulse {
    0%, 100% { transform: scale(1); }
    50%      { transform: scale(1.06); }
}
.lf-card-days.is-urgent svg {
    color: #dc2626;
    animation: lf-card-days-tick 4400ms steps(1, end) infinite;
}
@keyframes lf-card-days-tick {
    0%, 49%   { opacity: 1; }
    50%, 99%  { opacity: 0.55; }
}

/* ---------- INDEX mini-cards ---------- */
.ix-rep-mini-photo { position: relative; }

.ix-rep-mini-new {
    position: absolute;
    top: 10px; right: 10px;
    z-index: 4;
    padding: 4px 9px;
    background: linear-gradient(135deg, #16a34a, #10b981);
    color: #fff;
    border-radius: 999px;
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 0.10em;
    box-shadow:
        0 6px 14px -4px rgba(22,163,74,0.50),
        inset 0 0 0 1px rgba(255,255,255,0.25);
    text-shadow: 0 1px 1px rgba(0,0,0,0.20);
    animation: lf-card-new-bounce 540ms var(--lf-spring, cubic-bezier(.34,1.56,.64,1)) 250ms both;
}
.ix-rep-mini-new::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: rgba(34,197,94,0.40);
    z-index: -1;
    animation: lf-card-new-pulse-anim 2400ms cubic-bezier(.22,1,.36,1) infinite;
}

.ix-rep-mini-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 4px;
    flex-wrap: wrap;
}
.ix-rep-mini-color {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 2px 8px;
    background: rgba(0,0,0,0.04);
    border-radius: 999px;
    font-size: 11px;
    color: var(--lf-ink, #1d1d1f);
    font-weight: 500;
}
.ix-rep-mini-color-dot {
    width: 7px; height: 7px;
    border-radius: 50%;
    background: linear-gradient(135deg, #d4d4d8, #a1a1aa);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.40);
}
.ix-rep-mini-time {
    font-size: 11px;
    color: var(--lf-muted, #6e6e73);
    font-variant-numeric: tabular-nums;
}
.ix-rep-mini-verified {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px; height: 14px;
    background: linear-gradient(135deg, #3b82f6, #2563eb);
    color: #fff;
    border-radius: 50%;
    margin-left: 4px;
    box-shadow: 0 2px 4px -1px rgba(37,99,235,0.40);
}

/* ---------- Mobile responsive ---------- */
@media (max-width: 640px) {
    .lf-card-new          { top: 10px; right: 10px; padding: 5px 9px 5px 7px; font-size: 10px; }
    .lf-card-new-spark svg{ width: 9px; height: 9px; }
    .lf-card-hint         { font-size: 11.5px; padding: 7px 9px; }
    .lf-card-days,
    .lf-card-time         { font-size: 12px; }
    .lf-card-days strong  { font-size: 13px; }
    .ix-rep-mini-meta     { gap: 6px; }
    .ix-rep-mini-color    { font-size: 10.5px; padding: 2px 7px; }
}

/* ---------- Reduced motion: matar pulses pero mantener visibilidad ---------- */
@media (prefers-reduced-motion: reduce) {
    .lf-card-new,
    .lf-card-new-pulse,
    .lf-card-new-spark,
    .lf-card-days.is-urgent strong,
    .lf-card-days.is-urgent svg,
    .ix-rep-mini-new,
    .ix-rep-mini-new::before {
        animation: none !important;
    }
    .lf-card-new          { opacity: 1; transform: none; }
    .ix-rep-mini-new      { opacity: 1; transform: none; }
}

/* ============================================================
   AD SLOTS — bloques publicitarios estratégicos, no invasivos
   ============================================================
   Filosofía visual:
   - Glass morphism sutil (backdrop blur + leve gradiente naranja/rosa)
   - Shimmer sweep cíclico 6000ms (low-key, no distrae)
   - Fade-in 1200ms al entrar al viewport (IntersectionObserver)
   - Misma paleta y radios que las cards para no romper el rhythm
   - "Publicidad" label visible siempre (transparencia)
*/
.lf-ad {
    position: relative;
    margin: 24px 0;
    background:
        linear-gradient(135deg, rgba(234,88,12,0.025), rgba(236,72,153,0.025)),
        rgba(255,255,255,0.96);
    border: 1px solid rgba(0,0,0,0.06);
    border-radius: 22px;
    overflow: hidden;
    box-shadow:
        0 4px 14px -4px rgba(0,0,0,0.06),
        0 1px 3px -1px rgba(0,0,0,0.04);
    -webkit-backdrop-filter: blur(20px) saturate(160%);
    backdrop-filter: blur(20px) saturate(160%);
    isolation: isolate;
    /* Entrada via IntersectionObserver — clase .is-visible la muestra */
    opacity: 0;
    transform: translateY(24px);
    transition:
        opacity 1200ms var(--lf-ease),
        transform 1200ms var(--lf-ease),
        box-shadow 480ms var(--lf-ease);
}
.lf-ad.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Shimmer sweep — pulso muy sutil que indica el slot sin distraer */
.lf-ad::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(
        120deg,
        transparent 0%,
        transparent 35%,
        rgba(234,88,12,0.07) 50%,
        transparent 65%,
        transparent 100%
    );
    transform: translateX(-110%);
    animation: lf-ad-shimmer 6000ms cubic-bezier(.45,.05,.55,.95) infinite;
    pointer-events: none;
    z-index: 0;
}
@keyframes lf-ad-shimmer {
    0%   { transform: translateX(-110%); }
    50%  { transform: translateX(110%); }
    100% { transform: translateX(110%); } /* hold off-screen 50% del ciclo */
}

.lf-ad:hover {
    box-shadow:
        0 14px 28px -8px rgba(0,0,0,0.10),
        0 4px 10px -2px rgba(0,0,0,0.06);
}

.lf-ad-label {
    position: absolute;
    top: 12px; right: 14px;
    z-index: 3;
    padding: 3px 9px;
    background: rgba(0,0,0,0.05);
    color: var(--lf-muted, #6e6e73);
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 700;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.lf-ad-content {
    position: relative;
    z-index: 1;
    padding: 20px 22px;
}

/* Placeholder default (cuando no hay anuncio configurado) */
.lf-ad-placeholder {
    display: flex;
    align-items: center;
    gap: 16px;
    color: var(--lf-ink, #1d1d1f);
    text-decoration: none;
    transition: gap 320ms var(--lf-ease);
}
.lf-ad-placeholder:hover { gap: 20px; }
.lf-ad-placeholder:focus-visible {
    outline: 2px solid var(--lf-orange, #ea580c);
    outline-offset: 4px;
    border-radius: 12px;
}

.lf-ad-icon {
    flex-shrink: 0;
    width: 52px; height: 52px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--lf-orange, #ea580c), var(--lf-pink, #ec4899));
    color: #fff;
    border-radius: 14px;
    box-shadow:
        0 8px 18px -6px rgba(234,88,12,0.45),
        inset 0 0 0 1px rgba(255,255,255,0.20);
    transition: transform 600ms var(--lf-spring);
}
.lf-ad-placeholder:hover .lf-ad-icon {
    transform: scale(1.06) rotate(-3deg);
}

.lf-ad-text {
    flex: 1;
    min-width: 0; /* allow truncation */
}
.lf-ad-text strong {
    display: block;
    font-size: 14.5px;
    color: var(--lf-ink, #1d1d1f);
    letter-spacing: -0.012em;
    margin-bottom: 3px;
    line-height: 1.3;
}
.lf-ad-text small {
    display: block;
    color: var(--lf-muted, #6e6e73);
    font-size: 12.5px;
    line-height: 1.4;
}

.lf-ad-arrow {
    flex-shrink: 0;
    color: var(--lf-orange, #ea580c);
    transition: transform 320ms var(--lf-spring);
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.lf-ad-placeholder:hover .lf-ad-arrow { transform: translateX(5px); }

/* CTA text — oculto por default, visible en variante feed (botón completo).
   En leaderboard/inline solo se ve la flecha SVG, manteniendo perfil bajo. */
.lf-ad-cta-label {
    display: none;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: -0.005em;
    white-space: nowrap;
}

/* ----- Variantes por contexto ----- */

/* FEED — encaja en el grid del listado como una card más */
.lf-ad--feed {
    margin: 0; /* el grid maneja gaps */
    aspect-ratio: 4 / 5;
    display: flex;
    align-items: stretch;
}
.lf-ad--feed .lf-ad-content {
    width: 100%;
    padding: 24px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 14px;
}
.lf-ad--feed .lf-ad-placeholder {
    flex-direction: column;
    text-align: center;
    align-items: center;
    gap: 14px;
}
.lf-ad--feed .lf-ad-placeholder:hover { gap: 16px; }
.lf-ad--feed .lf-ad-icon {
    width: 64px; height: 64px;
}
.lf-ad--feed .lf-ad-icon svg { width: 28px; height: 28px; }
.lf-ad--feed .lf-ad-text strong { font-size: 15px; }
.lf-ad--feed .lf-ad-text small  { font-size: 13px; }
.lf-ad--feed .lf-ad-arrow {
    margin-top: 4px;
    padding: 9px 18px;
    background: linear-gradient(135deg, var(--lf-orange, #ea580c), var(--lf-pink, #ec4899));
    color: #fff;
    border-radius: 999px;
    box-shadow:
        0 6px 14px -4px rgba(234,88,12,0.40),
        inset 0 0 0 1px rgba(255,255,255,0.20);
}
/* En la variante feed sí mostramos la etiqueta CTA dentro del botón */
.lf-ad--feed .lf-ad-cta-label { display: inline; }
.lf-ad--feed .lf-ad-arrow svg { width: 14px; height: 14px; }
.lf-ad--feed .lf-ad-placeholder:hover .lf-ad-arrow {
    transform: scale(1.04);
    box-shadow:
        0 10px 22px -6px rgba(234,88,12,0.50),
        inset 0 0 0 1px rgba(255,255,255,0.25);
}

/* LEADERBOARD — banner amplio, hero del detalle */
.lf-ad--leaderboard {
    margin: 28px 0 32px;
}
.lf-ad--leaderboard .lf-ad-content {
    padding: 22px 26px;
}

/* INLINE — entre secciones del detalle, baja altura */
.lf-ad--inline {
    margin: 20px 0;
}
.lf-ad--inline .lf-ad-content {
    padding: 16px 20px;
}
.lf-ad--inline .lf-ad-icon {
    width: 44px; height: 44px;
}
.lf-ad--inline .lf-ad-icon svg { width: 20px; height: 20px; }

/* Mobile */
@media (max-width: 640px) {
    .lf-ad-content { padding: 16px 18px; }
    .lf-ad-icon    { width: 44px; height: 44px; }
    .lf-ad-icon svg { width: 20px; height: 20px; }
    .lf-ad-text strong { font-size: 13.5px; }
    .lf-ad-text small  { font-size: 12px; }
    .lf-ad--feed { aspect-ratio: auto; min-height: 280px; }
}

/* prefers-reduced-motion — disables shimmer + fade-in */
@media (prefers-reduced-motion: reduce) {
    .lf-ad,
    .lf-ad::before,
    .lf-ad-icon,
    .lf-ad-arrow,
    .lf-ad-placeholder {
        animation: none !important;
        transition: none !important;
    }
    .lf-ad {
        opacity: 1;
        transform: none;
    }
}

/* ============================================================
   GEO BUTTON — "Usar mi ubicación" (5 estados visuales)
   ============================================================ */
.lf-geo-row {
    margin-bottom: 16px;
    padding: 18px 20px;
    background: linear-gradient(135deg, rgba(234,88,12,0.06), rgba(236,72,153,0.04));
    border: 1px dashed rgba(234,88,12,0.30);
    border-radius: 16px;
    display: flex; align-items: center; gap: 16px;
    flex-wrap: wrap;
    transition: border-color 320ms var(--lf-ease), background 320ms var(--lf-ease);
}
.lf-geo-row:has(.lf-geo-btn[data-state="success"]) {
    background: linear-gradient(135deg, rgba(22,163,74,0.08), rgba(14,165,233,0.06));
    border-color: rgba(22,163,74,0.35);
    border-style: solid;
}
.lf-geo-row:has(.lf-geo-btn[data-state="error"]) {
    background: rgba(220,38,38,0.05);
    border-color: rgba(220,38,38,0.30);
}

.lf-geo-btn {
    flex-shrink: 0;
    display: inline-flex; align-items: center; gap: 9px;
    padding: 12px 20px;
    background: linear-gradient(135deg, var(--lf-orange) 0%, var(--lf-amber) 50%, var(--lf-pink) 100%);
    background-size: 200% 200%;
    color: #fff;
    border: none;
    border-radius: 12px;
    font-family: inherit;
    font-size: 14px; font-weight: 700;
    letter-spacing: -0.005em;
    cursor: pointer;
    box-shadow:
        0 12px 24px -8px rgba(234,88,12,0.50),
        inset 0 1px 0 rgba(255,255,255,0.20);
    transition:
        transform 320ms var(--lf-spring),
        box-shadow 320ms var(--lf-ease),
        background 320ms var(--lf-ease);
    animation: lf-grad-flow 5000ms ease-in-out infinite;
}
.lf-geo-btn:hover:not(:disabled) {
    transform: translateY(-2px) scale(1.01);
    box-shadow: 0 16px 30px -10px rgba(234,88,12,0.60);
}
.lf-geo-btn:active:not(:disabled) { transform: translateY(0); }
.lf-geo-btn:disabled { cursor: progress; }

/* Estados del botón */
.lf-geo-btn[data-state="loading"] {
    background: linear-gradient(135deg, var(--lf-muted), var(--lf-muted-2)) !important;
    animation: none;
}
.lf-geo-btn[data-state="success"] {
    background: linear-gradient(135deg, var(--lf-green), var(--lf-cyan)) !important;
    box-shadow: 0 12px 24px -8px rgba(22,163,74,0.50);
    animation: none;
}
.lf-geo-btn[data-state="error"] {
    background: linear-gradient(135deg, var(--lf-red), #b91c1c) !important;
    animation: none;
}

/* Icono pin con spinner overlay */
.lf-geo-icon {
    position: relative;
    display: inline-flex; align-items: center; justify-content: center;
    width: 22px; height: 22px;
    flex-shrink: 0;
}
.lf-geo-svg-pin {
    transition: transform 480ms var(--lf-spring), opacity 240ms var(--lf-ease);
}
.lf-geo-btn[data-state="loading"] .lf-geo-svg-pin { opacity: 0; }
.lf-geo-btn[data-state="success"] .lf-geo-svg-pin {
    animation: lf-geo-pin-pop 600ms var(--lf-spring);
}
@keyframes lf-geo-pin-pop {
    0%   { transform: scale(0.5) rotate(-20deg); }
    60%  { transform: scale(1.25) rotate(8deg); }
    100% { transform: scale(1) rotate(0); }
}

/* Spinner durante loading */
.lf-geo-spinner {
    position: absolute;
    width: 18px; height: 18px;
    border: 2.2px solid rgba(255,255,255,0.30);
    border-top-color: #fff;
    border-radius: 50%;
    opacity: 0;
    transition: opacity 240ms var(--lf-ease);
}
.lf-geo-btn[data-state="loading"] .lf-geo-spinner {
    opacity: 1;
    animation: lf-geo-spin 800ms linear infinite;
}
@keyframes lf-geo-spin {
    to { transform: rotate(360deg); }
}

/* Status text */
.lf-geo-status {
    flex: 1; min-width: 220px;
    margin: 0;
    font-size: 13.5px;
    color: var(--lf-muted);
    line-height: 1.5;
    transition: color 320ms var(--lf-ease);
}
.lf-geo-status[data-state="loading"]  { color: var(--lf-orange); font-weight: 600; }
.lf-geo-status[data-state="success"]  { color: var(--lf-green); font-weight: 700; }
.lf-geo-status[data-state="partial"]  { color: var(--lf-amber); font-weight: 600; }
.lf-geo-status[data-state="error"]    { color: var(--lf-red); font-weight: 600; }

/* ============================================================
   FOCUS VISIBLE — accesibilidad
   ============================================================ */
:focus-visible {
    outline: 3px solid rgba(234,88,12,0.55);
    outline-offset: 2px;
    border-radius: 8px;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 980px) {
    .lf-detail-grid { grid-template-columns: 1fr; gap: 28px; }
    .lf-detail-title { font-size: clamp(26px, 5vw, 34px); }
    .lf-filterbar { top: 60px; }
    .lf-filterbar-inner { padding: 12px 18px; }
    .lf-segmented { padding: 3px; }
    .lf-seg { padding: 8px 14px; font-size: 13px; }
    /* Detalle premium */
    .lf-v-hero { grid-template-columns: 1fr; gap: 30px; padding: 24px 0 36px; }
    .lf-v-body { grid-template-columns: 1fr; gap: 24px; }
    .lf-v-side { position: static; }
}
@media (max-width: 760px) {
    .lf-filterbar-inner {
        flex-wrap: wrap;
        gap: 10px;
        padding: 12px 18px;
    }
    .lf-segmented { width: 100%; order: 1; }
    .lf-segmented .lf-seg { flex: 1; justify-content: center; padding: 9px 12px; }
    .lf-searchbox { order: 2; flex: 1 1 auto; min-width: 180px; }
    .lf-filterbtn { order: 3; flex-shrink: 0; }
    .lf-search-hint { display: none; }
    .lf-advgrid { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); padding: 22px 18px 6px; gap: 14px; }
    .lf-advactions { padding: 4px 18px 22px; }
    .lf-fb-glow { width: 200px; height: 200px; }
}
@media (max-width: 640px) {
    .lf-hero { padding: 72px 18px 56px; }
    .lf-hero-title { font-size: clamp(30px, 8vw, 38px); }
    .lf-hero-cta { flex-direction: column; gap: 10px; }
    .lf-btn { width: 100%; justify-content: center; padding: 15px 24px; }
    .lf-grid { grid-template-columns: 1fr; gap: 18px; }
    .lf-frow { grid-template-columns: 1fr; }
    .lf-form-cta { flex-direction: column-reverse; align-items: stretch; }
    .lf-fbtn-publish { width: 100%; }
    .lf-orb { filter: blur(60px); }
    .lf-layout { padding: 22px 18px 64px; }
    /* Detalle */
    .lf-v { padding: 18px 16px 64px; }
    .lf-v-section { padding: 22px 20px; border-radius: 18px; }
    .lf-v-h2 { font-size: 18px; }
    .lf-v-attrs { grid-template-columns: repeat(2, 1fr); gap: 10px; }
    .lf-v-attr { padding: 12px; }
    .lf-v-attr-wide { grid-column: span 2; }
    .lf-v-contact { padding: 22px 20px; border-radius: 20px; }
    .lf-v-contact-emoji { font-size: 36px; }
    .lf-v-contact-title { font-size: 19px; }
    .lf-v-orb { filter: blur(80px); }
    .lf-v-radar { width: 160px; height: 160px; }
}
@media (max-width: 480px) {
    .lf-segmented .lf-seg { padding: 8px 10px; font-size: 12.5px; gap: 5px; }
    .lf-filterbtn { padding: 10px 14px; font-size: 13.5px; }
    .lf-search-input { font-size: 14px; }
    .lf-tag { font-size: 10.5px; padding: 6px 13px; letter-spacing: 0.14em; }
    .lf-hero-lead { font-size: 14.5px; }
    .lf-card-body { padding: 16px 18px 18px; }
}

/* ============================================================
   REDUCED MOTION — pausa todo lo dramático (WCAG SC 2.3.3)
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
    .lf-orb,
    .lf-hero-paws,
    .lf-hero-inner,
    .lf-grad,
    .lf-card,
    .lf-empty-icon,
    .lf-fbtn,
    .lf-page.is-current,
    .lf-seg-pulse-ring,
    .lf-fb-glow,
    .lf-filterbtn-dot,
    .lf-filterbtn[aria-expanded="true"]::before,
    .lf-seg.is-active:first-child .lf-seg-icon,
    .lf-advfilters.is-open::before,
    .lf-advfilters.is-open .lf-flabel,
    .lf-card-radar circle,
    .lf-card-sparkle path,
    .lf-card-pill-ring,
    .lf-card-reward,
    .lf-v-orb,
    .lf-v-radar circle,
    .lf-v-sparkle path,
    .lf-v-reward-float,
    .lf-v-contact-emoji,
    .lf-v-hero,
    .lf-geo-btn,
    .lf-geo-spinner,
    .lf-geo-svg-pin,
    .lf-pp-item,
    .lf-photo-drop-icon,
    .lf-lightbox.is-open .lf-lb-img {
        animation: none !important;
    }

    /* CRÍTICO — elementos con `opacity: 0` base + animation que los reveala.
       Con animation: none, quedaban INVISIBLES en mobile con Low Power Mode
       (iOS), accesibilidad "reducir movimiento", o battery saver Android.
       Forzamos el estado FINAL de la animación (visible + sin transform). */
    .lf-card,
    .lf-hero-paws,
    .lf-hero-inner {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
    }
    .lf-card,
    .lf-card-photo,
    .lf-card-aura,
    .lf-card-arrow,
    .lf-card-arrow svg,
    .lf-card-verified,
    .lf-card-chip,
    .lf-card-title,
    .lf-card::before,
    .lf-btn,
    .lf-cbtn,
    .lf-detail-photo img,
    .lf-back,
    .lf-seg,
    .lf-seg-icon,
    .lf-filterbtn,
    .lf-filterbtn-icon,
    .lf-searchbox,
    .lf-search-icon,
    .lf-search-clear,
    .lf-photo-drop,
    .lf-pp-item,
    .lf-pp-remove,
    .lf-pp-add,
    .lf-photo-error,
    .lf-v-photo-nav,
    .lf-v-photo-zoom,
    .lf-v-thumb,
    .lf-v-thumb img,
    .lf-lightbox,
    .lf-lb-img,
    .lf-lb-close,
    .lf-lb-nav {
        transition: none !important;
    }
    .lf-card,
    .lf-advfilters.is-open .lf-flabel { opacity: 1; }
}

/* ============================================================
   HIGH CONTRAST MODE — refuerza bordes
   ============================================================ */
@media (prefers-contrast: more) {
    .lf-card, .lf-filters, .lf-fieldset, .lf-attrs, .lf-contact { border-width: 2px; }
    .lf-tab.is-active::after { height: 3px; }
}
