/* =============================================================
   LocaSpace Design System — master stylesheet
   Integrato dal prototipo Claude Design (locaspace/project)
   Font: Barlow Condensed (display) + Barlow (body)
   ============================================================= */

@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@400;500;600;700;800&family=Barlow:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap');

/* ============ Tokens ============ */
:root{
    /* Brand teal scale (nomi --ls-purple-* mantenuti per compat) */
    --ls-purple-50:#f0fdfa;  --ls-purple-100:#ccfbf1;
    --ls-purple-200:#99f6e4; --ls-purple-300:#5eead4;
    --ls-purple-400:#2dd4bf; --ls-purple-500:#14b8a6;
    --ls-purple-600:#0d9488; --ls-purple-700:#0f766e;
    --ls-purple-800:#115e59; --ls-purple-900:#134e4a;

    /* Grayscale */
    --ls-gray-50:#f9fafb;  --ls-gray-100:#f3f4f6;
    --ls-gray-200:#e5e7eb; --ls-gray-300:#d1d5db;
    --ls-gray-400:#9ca3af; --ls-gray-500:#6b7280;
    --ls-gray-600:#4b5563; --ls-gray-700:#374151;
    --ls-gray-800:#1f2937; --ls-gray-900:#111827;

    /* Semantic */
    --ls-success:#10b981; --ls-success-light:#d1fae5; --ls-success-dark:#065f46;
    --ls-error:#ef4444;   --ls-error-light:#fee2e2;   --ls-error-dark:#991b1b;
    --ls-warning:#f59e0b; --ls-warning-light:#fef3c7; --ls-warning-dark:#92400e;
    --ls-info:#3b82f6;    --ls-info-light:#dbeafe;

    /* Roles */
    --ls-primary:var(--ls-purple-600);
    --ls-primary-hover:var(--ls-purple-700);
    --ls-primary-subtle:var(--ls-purple-50);
    --ls-primary-light:var(--ls-purple-100);
    --ls-accent:var(--ls-purple-400);

    /* Alias compat per vecchi file */
    --purple:var(--ls-purple-600);
    --purple-dark:var(--ls-purple-800);
    --purple-light:var(--ls-purple-400);
    --cyan:var(--ls-purple-400);
    --dark:var(--ls-gray-900);
    --darker:#0a0820;
    --text:var(--ls-gray-800);
    --text-light:var(--ls-gray-500);
    --bg:#ffffff;
    --bg-alt:var(--ls-gray-50);

    /* Typography */
    --ls-font-display:'Barlow Condensed','Sora',system-ui,sans-serif;
    --ls-font-body:'Barlow','DM Sans',system-ui,sans-serif;

    /* Radii */
    --ls-r-sm:4px;  --ls-r-md:8px;
    --ls-r-lg:12px; --ls-r-xl:16px;
    --ls-r-2xl:24px; --ls-r-full:9999px;
    --radius:12px; --radius-lg:16px;

    /* Shadows */
    --ls-shadow-sm:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.04);
    --ls-shadow-md:0 4px 12px rgba(0,0,0,.08),0 2px 4px rgba(0,0,0,.04);
    --ls-shadow-lg:0 8px 32px rgba(0,0,0,.10),0 4px 8px rgba(0,0,0,.06);
    --ls-shadow-xl:0 16px 48px rgba(0,0,0,.12),0 8px 16px rgba(0,0,0,.06);
    --ls-shadow-purple:0 4px 24px rgba(13,148,136,.22);

    /* Layout */
    --ls-nav-h:64px;
    --ls-max:1200px;

    /* Transitions */
    --ls-trans-fast:150ms ease;
    --ls-trans:250ms ease;
}

/* ============ Base reset ============ */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
    font-family:var(--ls-font-body);
    color:var(--ls-gray-800);
    background:var(--ls-gray-50);
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
}

/* ============ Typography utilities ============ */
.ls-h1,.ls-h2,.ls-h3,.ls-h4,h1,h2,h3,h4{font-family:var(--ls-font-display);letter-spacing:-.02em;color:var(--ls-gray-800);line-height:1.2}
.ls-h1{font-size:3rem;font-weight:800}
.ls-h2{font-size:2.25rem;font-weight:700;line-height:1.25}
.ls-h3{font-size:1.5rem;font-weight:600;line-height:1.3}
.ls-h4{font-size:1.25rem;font-weight:600}
.ls-lead{font-size:1.125rem;color:var(--ls-gray-500);line-height:1.65}
.ls-body{font-size:1rem;color:var(--ls-gray-800);line-height:1.55}
.ls-small{font-size:.875rem;color:var(--ls-gray-500)}
.ls-label{font-family:var(--ls-font-body);font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ls-gray-500)}
.ls-tag-label{font-family:var(--ls-font-display);font-size:.875rem;font-weight:600;letter-spacing:.04em;color:var(--ls-primary)}

/* ============ Buttons ============ */
.ls-btn{
    display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
    font-family:var(--ls-font-body);font-weight:600;font-size:.92rem;
    padding:.65rem 1.4rem;border-radius:var(--ls-r-full);border:none;
    cursor:pointer;transition:all var(--ls-trans-fast);text-decoration:none;white-space:nowrap;
}
.ls-btn-primary{
    display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
    font-family:var(--ls-font-body);font-weight:600;font-size:.92rem;
    padding:.65rem 1.4rem;border-radius:var(--ls-r-full);border:none;
    cursor:pointer;transition:all var(--ls-trans-fast);text-decoration:none;white-space:nowrap;
    background:var(--ls-primary);color:#fff;
    box-shadow:var(--ls-shadow-purple);
}
.ls-btn-primary:hover{background:var(--ls-primary-hover);transform:translateY(-1px);box-shadow:0 6px 28px rgba(13,148,136,.35);color:#fff}
.ls-btn-primary:disabled{background:var(--ls-gray-300);box-shadow:none;cursor:not-allowed;color:#fff}
.ls-btn-primary:disabled:hover{transform:none;background:var(--ls-gray-300)}
.ls-btn-secondary{
    background:#fff;color:var(--ls-primary);
    border:2px solid var(--ls-primary);padding:.58rem 1.32rem;
}
.ls-btn-secondary:hover{background:var(--ls-primary-subtle)}
.ls-btn-ghost{
    background:transparent;color:var(--ls-gray-600);
    border:1.5px solid var(--ls-gray-200);padding:.55rem 1.1rem;
    font-weight:500;font-size:.85rem;
}
.ls-btn-ghost:hover{border-color:var(--ls-primary);color:var(--ls-primary);background:var(--ls-primary-subtle)}
.ls-btn-success{background:var(--ls-success);color:#fff}
.ls-btn-success:hover{background:#059669}
.ls-btn-lg{padding:.85rem 1.8rem;font-size:1rem}
.ls-btn-block{width:100%;display:flex}

/* ============ Form inputs ============ */
.ls-input,.ls-select,.ls-textarea{
    width:100%;padding:.65rem .85rem;
    border:1.5px solid var(--ls-gray-200);border-radius:var(--ls-r-md);
    font-family:var(--ls-font-body);font-size:.92rem;color:var(--ls-gray-800);
    background:#fff;outline:none;transition:border-color var(--ls-trans-fast),box-shadow var(--ls-trans-fast);
}
.ls-input:focus,.ls-select:focus,.ls-textarea:focus{
    border-color:var(--ls-primary);
    box-shadow:0 0 0 3px rgba(13,148,136,.12);
}
.ls-textarea{min-height:100px;resize:vertical}
.ls-field{margin-bottom:1rem}
.ls-field label,.ls-field .ls-label{display:block;margin-bottom:.35rem}

/* ============ Badges / chips ============ */
.ls-badge{
    display:inline-flex;align-items:center;gap:.25rem;
    font-family:var(--ls-font-body);font-size:.72rem;font-weight:600;
    padding:.2rem .65rem;border-radius:var(--ls-r-full);
    background:var(--ls-gray-100);color:var(--ls-gray-700);
}
.ls-badge-success{background:var(--ls-success-light);color:var(--ls-success-dark)}
.ls-badge-error{background:var(--ls-error-light);color:var(--ls-error-dark)}
.ls-badge-warning{background:var(--ls-warning-light);color:var(--ls-warning-dark)}
.ls-badge-purple{background:var(--ls-purple-100);color:var(--ls-purple-700)}
.ls-badge-purple-soft{background:var(--ls-purple-50);color:var(--ls-purple-700)}
.ls-badge-filled{background:var(--ls-primary);color:#fff}

/* ============ Cards ============ */
.ls-card{
    background:#fff;border-radius:var(--ls-r-lg);
    box-shadow:var(--ls-shadow-md);overflow:hidden;
    border:1px solid var(--ls-gray-100);
}
.ls-card-body{padding:1.5rem}

/* ============ Navbar ============ */
.ls-navbar{
    position:sticky;top:0;z-index:1000;
    background:rgba(255,255,255,.94);
    backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
    border-bottom:1px solid var(--ls-gray-200);
    box-shadow:0 1px 10px rgba(0,0,0,.04);transition:box-shadow .3s;
}
.ls-navbar.scrolled{box-shadow:0 4px 22px rgba(0,0,0,.08)}
.ls-navbar-inner{
    max-width:1400px;margin:0 auto;padding:0 1.5rem;
    display:flex;align-items:center;justify-content:space-between;
    height:var(--ls-nav-h);
}
.ls-logo{display:flex;align-items:center;gap:.55rem;text-decoration:none;flex-shrink:0}
.ls-logo-img{height:28px;width:auto;display:block}
.ls-logo-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center}
.ls-logo-text{
    font-family:var(--ls-font-display);font-size:1.4rem;font-weight:700;
    letter-spacing:-.02em;
}
.ls-logo-text .loca{color:var(--ls-primary)}
.ls-logo-text .space{color:var(--ls-gray-800)}

.ls-nav-right{display:flex;align-items:center;gap:.25rem}
.ls-nav-link{
    color:var(--ls-gray-500);text-decoration:none;
    font-family:var(--ls-font-body);font-weight:500;font-size:.9rem;
    padding:.5rem .75rem;border-radius:var(--ls-r-md);
    transition:all .2s;display:flex;align-items:center;gap:.35rem;position:relative;
}
.ls-nav-link:hover{background:var(--ls-primary-subtle);color:var(--ls-primary)}
.ls-nav-link.active{color:var(--ls-primary)}
.ls-nav-icon{padding:.5rem .55rem}
.ls-badge-count{
    position:absolute;top:2px;right:2px;
    background:var(--ls-error);color:#fff;
    font-size:.6rem;font-weight:800;min-width:16px;height:16px;
    border-radius:8px;display:flex;align-items:center;justify-content:center;line-height:1;
}

.ls-btn-publish{
    display:inline-flex;align-items:center;gap:.4rem;
    background:var(--ls-primary);color:#fff;
    padding:.55rem 1.1rem;border-radius:var(--ls-r-full);
    text-decoration:none;font-family:var(--ls-font-body);
    font-weight:600;font-size:.88rem;
    box-shadow:var(--ls-shadow-purple);transition:all .2s;white-space:nowrap;
}
.ls-btn-publish:hover{background:var(--ls-primary-hover);transform:translateY(-1px);box-shadow:0 6px 22px rgba(13,148,136,.32)}

.ls-lang-toggle{position:relative}
.ls-lang-btn{
    display:flex;align-items:center;gap:.3rem;
    background:transparent;border:1.5px solid var(--ls-gray-200);
    border-radius:var(--ls-r-md);padding:.35rem .55rem;
    cursor:pointer;font-size:.78rem;font-weight:700;color:var(--ls-gray-500);
    font-family:var(--ls-font-body);transition:all .2s;
}
.ls-lang-btn:hover{border-color:var(--ls-primary);color:var(--ls-primary)}
.ls-lang-dropdown{
    position:absolute;top:calc(100% + 6px);right:0;
    background:#fff;border:1px solid var(--ls-gray-200);
    border-radius:var(--ls-r-lg);box-shadow:var(--ls-shadow-lg);
    padding:.35rem;opacity:0;visibility:hidden;transform:translateY(-6px);
    transition:all .2s;min-width:140px;z-index:100;
}
.ls-lang-dropdown.show{opacity:1;visibility:visible;transform:translateY(0)}
.ls-lang-dropdown button{
    display:flex;align-items:center;gap:.5rem;width:100%;padding:.55rem .7rem;
    border:none;background:transparent;cursor:pointer;border-radius:var(--ls-r-sm);
    font-size:.88rem;font-weight:500;color:var(--ls-gray-700);
    font-family:var(--ls-font-body);transition:background .15s;
}
.ls-lang-dropdown button:hover{background:var(--ls-primary-subtle);color:var(--ls-primary)}

.ls-account-wrap{position:relative}
.ls-avatar-btn{
    display:flex;align-items:center;gap:.3rem;
    background:transparent;border:1.5px solid var(--ls-gray-200);
    border-radius:var(--ls-r-full);padding:.25rem .55rem .25rem .25rem;
    cursor:pointer;transition:all .2s;
}
.ls-avatar-btn:hover{border-color:var(--ls-primary);background:var(--ls-primary-subtle)}
.ls-avatar{
    width:32px;height:32px;border-radius:50%;
    background:linear-gradient(135deg,var(--ls-purple-400),var(--ls-purple-600));
    display:flex;align-items:center;justify-content:center;
    color:#fff;font-family:var(--ls-font-display);font-weight:700;font-size:.8rem;
    flex-shrink:0;
}
.ls-avatar-lg{width:56px;height:56px;font-size:1.2rem}
.ls-avatar-xl{width:72px;height:72px;font-size:1.5rem}
.ls-account-dropdown{
    position:absolute;top:calc(100% + 8px);right:0;
    background:#fff;border:1px solid var(--ls-gray-200);
    border-radius:var(--ls-r-xl);box-shadow:var(--ls-shadow-xl);
    padding:.5rem;opacity:0;visibility:hidden;transform:translateY(-8px);
    transition:all .2s;min-width:240px;z-index:100;
}
.ls-account-dropdown.show{opacity:1;visibility:visible;transform:translateY(0)}
.ls-account-header{display:flex;align-items:center;gap:.75rem;padding:.75rem .75rem .5rem}
.ls-acc-name{font-family:var(--ls-font-display);font-weight:700;font-size:.95rem;color:var(--ls-gray-800)}
.ls-acc-type{font-size:.72rem;color:var(--ls-primary);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.ls-acc-divider{height:1px;background:var(--ls-gray-100);margin:.35rem .5rem}
.ls-acc-item{
    display:flex;align-items:center;gap:.65rem;
    padding:.65rem .75rem;border-radius:var(--ls-r-md);
    text-decoration:none;color:var(--ls-gray-700);
    font-family:var(--ls-font-body);font-weight:500;font-size:.9rem;
    transition:all .15s;
}
.ls-acc-item:hover{background:var(--ls-primary-subtle);color:var(--ls-primary)}
.ls-acc-item svg{color:var(--ls-gray-400);transition:color .15s}
.ls-acc-item:hover svg{color:var(--ls-primary)}
.ls-acc-logout{color:var(--ls-error)}
.ls-acc-logout:hover{background:var(--ls-error-light);color:var(--ls-error)}
.ls-acc-logout:hover svg{color:var(--ls-error)}

.ls-btn-login{
    padding:.5rem 1rem;border-radius:var(--ls-r-full);text-decoration:none;
    font-family:var(--ls-font-body);font-weight:600;font-size:.88rem;
    color:var(--ls-gray-600);
    border:1.5px solid var(--ls-gray-200);transition:all .2s;
}
.ls-btn-login:hover{border-color:var(--ls-primary);color:var(--ls-primary);background:var(--ls-primary-subtle)}

.ls-hamburger{display:none;flex-direction:column;gap:4px;background:none;border:none;cursor:pointer;padding:.5rem}
.ls-hamburger span{display:block;width:22px;height:2.5px;background:var(--ls-gray-700);border-radius:2px;transition:all .3s}
@media(max-width:900px){
    .ls-nav-hide-mobile{display:none!important}
    .ls-hamburger{display:flex}
    .ls-btn-publish{padding:.45rem .8rem;font-size:.82rem}
    .ls-btn-publish svg{display:none}
}
@media(max-width:640px){
    .ls-btn-publish,.ls-nav-link:not(.ls-nav-icon){display:none!important}
    .ls-navbar-inner{padding:0 1rem}
}

/* ============ Hero pattern (HomePage) ============ */
.ls-hero{
    background:linear-gradient(135deg,var(--ls-gray-900) 0%,#0d3f3a 100%);
    color:#fff;padding:5rem 2rem 4rem;text-align:center;position:relative;overflow:hidden;
}
.ls-hero-tag{
    display:inline-block;font-family:var(--ls-font-display);
    font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
    color:var(--ls-purple-400);
    background:rgba(13,148,136,.18);padding:.4rem 1rem;border-radius:var(--ls-r-full);
    margin-bottom:1.5rem;
}
.ls-hero-title{
    font-family:var(--ls-font-display);font-size:clamp(2rem,5vw,3rem);
    font-weight:800;line-height:1.1;letter-spacing:-.01em;color:#fff;
    max-width:650px;margin:0 auto 1.5rem;
}
.ls-hero-desc{
    font-family:var(--ls-font-body);font-size:1.05rem;color:rgba(255,255,255,.72);
    line-height:1.65;max-width:540px;margin:0 auto 2.25rem;
}
.ls-hero-ctas{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap;margin-bottom:3rem}
.ls-hero-btn-primary{
    background:var(--ls-primary);color:#fff;border:none;
    border-radius:var(--ls-r-full);padding:.85rem 1.8rem;
    font-family:var(--ls-font-body);font-weight:600;font-size:.95rem;
    cursor:pointer;box-shadow:var(--ls-shadow-purple);transition:all .2s;text-decoration:none;
    display:inline-flex;align-items:center;gap:.4rem;
}
.ls-hero-btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 36px rgba(13,148,136,.45)}
.ls-hero-btn-outline{
    background:rgba(255,255,255,.1);color:#fff;
    border:1.5px solid rgba(255,255,255,.26);border-radius:var(--ls-r-full);
    padding:.82rem 1.8rem;font-family:var(--ls-font-body);font-weight:600;font-size:.95rem;
    cursor:pointer;transition:all .2s;text-decoration:none;backdrop-filter:blur(8px);
    display:inline-flex;align-items:center;gap:.4rem;
}
.ls-hero-btn-outline:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.4)}

/* Search box bianco centrato sul hero */
.ls-hero-search{
    background:#fff;border-radius:var(--ls-r-xl);padding:.5rem;
    max-width:820px;margin:0 auto;
    box-shadow:0 8px 48px rgba(0,0,0,.28);
    display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;
}
.ls-hero-search-field{
    flex:1;min-width:140px;padding:.55rem .9rem;position:relative;
}
.ls-hero-search-field label{
    display:block;font-family:var(--ls-font-body);
    font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
    color:var(--ls-gray-500);margin-bottom:.15rem;
}
.ls-hero-search-field input,
.ls-hero-search-field select{
    width:100%;border:none;outline:none;background:transparent;
    font-family:var(--ls-font-body);font-size:.92rem;color:var(--ls-gray-800);
    font-weight:500;cursor:pointer;
}
.ls-hero-search-field input::placeholder{color:var(--ls-gray-400)}
.ls-hero-search-divider{width:1px;height:36px;background:var(--ls-gray-200)}
.ls-hero-search-btn{
    display:inline-flex;align-items:center;gap:.5rem;
    background:var(--ls-primary);color:#fff;border:none;
    border-radius:var(--ls-r-lg);padding:.75rem 1.4rem;
    font-family:var(--ls-font-body);font-weight:600;font-size:.92rem;
    cursor:pointer;white-space:nowrap;transition:all .2s;align-self:center;margin:4px;
}
.ls-hero-search-btn:hover{background:var(--ls-primary-hover);box-shadow:0 6px 22px rgba(13,148,136,.35)}

/* ============ Stats bar ============ */
.ls-stats-bar{
    background:linear-gradient(135deg,var(--ls-purple-700) 0%,var(--ls-purple-600) 100%);
    padding:2.5rem 2rem;
    display:flex;justify-content:center;gap:4rem;flex-wrap:wrap;color:#fff;
    border-top:1px solid rgba(255,255,255,.08);
    border-bottom:1px solid rgba(255,255,255,.08);
}
.ls-stats-bar .ls-stat{text-align:center;min-width:120px}
.ls-stats-bar .ls-stat-num{
    font-family:var(--ls-font-display);font-size:2.5rem;font-weight:800;
    color:#fff;line-height:1;margin-bottom:.5rem;
    text-shadow:0 2px 10px rgba(0,0,0,.12);
}
.ls-stats-bar .ls-stat-label{
    font-family:var(--ls-font-body);font-size:.95rem;font-weight:600;
    color:#fff;opacity:.95;letter-spacing:.02em;
    text-shadow:0 1px 4px rgba(0,0,0,.1);
}

/* ============ Section & containers ============ */
.ls-section{padding:4.5rem 2rem;max-width:var(--ls-max);margin:0 auto}
.ls-section-tag{
    display:inline-block;color:var(--ls-primary);
    font-family:var(--ls-font-body);font-size:.92rem;font-weight:700;
    letter-spacing:.1em;text-transform:uppercase;margin-bottom:.75rem;
}
.ls-section-title{
    font-family:var(--ls-font-display);font-size:clamp(2.2rem,4.4vw,3rem);
    font-weight:700;letter-spacing:-.02em;color:var(--ls-gray-800);
    line-height:1.15;margin-bottom:1.1rem;
}
.ls-section-desc{
    font-family:var(--ls-font-body);font-size:1.15rem;color:var(--ls-gray-600);
    line-height:1.7;max-width:680px;margin-bottom:2.5rem;
}
.ls-section-center{text-align:center}
.ls-section-center .ls-section-desc{margin-left:auto;margin-right:auto}

/* 3-col feature cards */
.ls-cards-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
@media(max-width:900px){.ls-cards-3{grid-template-columns:1fr}}
.ls-feature-card{
    background:#fff;border-radius:var(--ls-r-lg);padding:1.75rem 1.5rem;
    box-shadow:var(--ls-shadow-md);border:1px solid var(--ls-gray-100);
    transition:transform .3s,box-shadow .3s;
}
.ls-feature-card:hover{transform:translateY(-4px);box-shadow:var(--ls-shadow-lg)}
.ls-feature-icon{
    width:44px;height:44px;border-radius:var(--ls-r-md);
    background:var(--ls-purple-100);
    display:flex;align-items:center;justify-content:center;
    font-size:1.3rem;margin-bottom:.9rem;
}
.ls-feature-title{
    font-family:var(--ls-font-display);font-size:1.05rem;font-weight:600;
    color:var(--ls-gray-800);margin-bottom:.45rem;
}
.ls-feature-text{
    font-family:var(--ls-font-body);font-size:.88rem;color:var(--ls-gray-500);line-height:1.65;
}

/* ============ Listing card (grid) ============ */
.ls-listing-card{
    background:#fff;border-radius:var(--ls-r-xl,18px);overflow:hidden;
    box-shadow:0 2px 8px -2px rgba(15,23,42,.06),0 1px 3px rgba(15,23,42,.05);
    border:1px solid var(--ls-gray-100);
    cursor:pointer;text-decoration:none;color:inherit;
    transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;
    display:flex;flex-direction:column;min-width:0;height:100%;
}
.ls-listing-card:hover{
    transform:translateY(-4px);
    box-shadow:0 18px 40px -18px rgba(13,148,136,.35),0 8px 20px -10px rgba(15,23,42,.12);
    border-color:var(--ls-purple-200,#99f6e4);
}

/* ── Boost: gold aura ───────────────────────────────────── */
@keyframes ls-gold-pulse{
    0%,100%{box-shadow:0 0 0 2px rgba(245,158,11,.35),0 6px 28px rgba(245,158,11,.22)}
    50%    {box-shadow:0 0 0 4px rgba(245,158,11,.55),0 10px 36px rgba(245,158,11,.38)}
}
.ls-listing-card.ls-boosted{
    border:2px solid #f59e0b;
    animation:ls-gold-pulse 2.2s ease-in-out infinite;
}
.ls-listing-card.ls-boosted:hover{
    transform:translateY(-4px);
    box-shadow:0 0 0 4px rgba(245,158,11,.55),0 18px 40px rgba(245,158,11,.3);
}
.ls-boost-badge{
    position:absolute;top:8px;left:8px;
    background:linear-gradient(135deg,#f59e0b,#d97706);
    color:#fff;font-size:.65rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
    padding:.22rem .55rem;border-radius:5px;z-index:2;
    box-shadow:0 2px 8px rgba(217,119,6,.4);
    font-family:var(--ls-font-body,sans-serif);
}

/* ── Boost button in owner dashboard ───────────────────── */
.ls-boost-btn svg{transition:fill .2s,stroke .2s}
.ls-boost-btn.active{color:#d97706;border-color:#f59e0b;background:#fffbeb}
.ls-boost-btn.active:hover{background:#fef3c7}
.ls-listing-img{
    position:relative;width:100%;aspect-ratio:16/10;overflow:hidden;
    background:var(--ls-gray-100);flex-shrink:0;
}
@supports not (aspect-ratio:1){
    .ls-listing-img{aspect-ratio:auto;padding-top:62.5%;}
}
.ls-listing-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .4s;display:block}
.ls-listing-card:hover .ls-listing-img img{transform:scale(1.05)}
.ls-listing-badge{
    position:absolute;top:.85rem;left:.85rem;z-index:2;
    padding:.3rem .75rem;border-radius:var(--ls-r-full);
    font-family:var(--ls-font-body);font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
    backdrop-filter:blur(4px);
}
.ls-listing-heart{
    position:absolute;top:.7rem;right:.7rem;z-index:2;
    width:36px;height:36px;border-radius:50%;
    background:#fff;display:flex;align-items:center;justify-content:center;
    box-shadow:0 3px 10px rgba(0,0,0,.18);cursor:pointer;font-size:1.05rem;color:var(--ls-gray-700);
    transition:all .2s;border:none;
}
.ls-listing-heart:hover{transform:scale(1.12);color:var(--ls-error)}
.ls-listing-heart.active{color:var(--ls-error)}
.ls-listing-body{
    padding:1rem 1.15rem 1.15rem;
    display:flex;flex-direction:column;gap:.55rem;flex:1 1 auto;min-width:0;min-height:0;
}
.ls-listing-meta{
    display:flex;align-items:center;gap:.4rem;
    font-family:var(--ls-font-body);font-size:.82rem;color:var(--ls-gray-600);flex-wrap:wrap;
    line-height:1.2;
}
.ls-listing-type{
    font-family:var(--ls-font-body);font-weight:700;color:var(--ls-primary);
    text-transform:uppercase;font-size:.72rem;letter-spacing:.06em;white-space:nowrap;
}
.ls-listing-dot{color:var(--ls-gray-300);font-weight:700}
.ls-listing-title{
    font-family:var(--ls-font-display);font-size:1.08rem;font-weight:700;
    color:var(--ls-gray-900);line-height:1.3;margin:0;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
    word-break:break-word;min-height:2.6em;
}
.ls-listing-details{
    font-family:var(--ls-font-body);font-size:.88rem;color:var(--ls-gray-600);
    display:flex;gap:.5rem;flex-wrap:wrap;
}
.ls-listing-tags{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.1rem}
.ls-listing-tag{
    background:var(--ls-purple-50);color:var(--ls-purple-700);
    font-family:var(--ls-font-body);font-size:.74rem;font-weight:600;
    padding:.24rem .6rem;border-radius:var(--ls-r-full);white-space:nowrap;
    line-height:1.2;
}
.ls-listing-footer{
    display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;
    margin-top:auto;padding-top:.75rem;border-top:1px solid var(--ls-gray-100);
    flex-wrap:wrap;
}
.ls-listing-price{
    font-family:var(--ls-font-display);font-size:1.35rem;font-weight:800;
    color:var(--ls-gray-900);line-height:1;white-space:nowrap;
}
.ls-listing-perday{
    font-family:var(--ls-font-body);font-size:.8rem;color:var(--ls-gray-500);font-weight:500;
    margin-left:.15rem;
}
.ls-listing-rating{
    font-family:var(--ls-font-body);font-size:.86rem;color:var(--ls-gray-700);font-weight:700;
    display:inline-flex;align-items:center;gap:.2rem;
}

/* Grid card responsiveness */
@media (max-width: 1400px){
    .ls-search-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
}
@media (max-width: 1100px){
    .ls-search-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.1rem}
}
@media (max-width: 760px){
    .ls-search-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;padding:1rem}
    .ls-listing-title{font-size:1rem;min-height:2.4em}
    .ls-listing-price{font-size:1.2rem}
}
@media (max-width: 480px){
    .ls-search-grid{grid-template-columns:1fr;padding:.85rem;gap:.9rem}
    .ls-listing-img{aspect-ratio:16/9}
    .ls-listing-body{padding:.9rem 1rem 1.05rem;gap:.5rem}
    .ls-listing-title{font-size:1.05rem}
    .ls-listing-price{font-size:1.25rem}
}

/* ============ Search page (SearchPage.jsx) ============ */
.ls-search-page{
    display:flex;min-height:calc(100vh - var(--ls-nav-h));
    background:var(--ls-gray-50);
}
.ls-search-sidebar{
    width:280px;flex-shrink:0;background:#fff;
    border-right:1px solid var(--ls-gray-200);
    padding:1.5rem 1.25rem;overflow-y:auto;
    max-height:calc(100vh - var(--ls-nav-h));
    position:sticky;top:var(--ls-nav-h);
    transition:width .25s ease, padding .25s ease, border-right-width .25s ease;
}
.ls-search-sidebar.is-collapsed{
    width:0;padding-left:0;padding-right:0;border-right-width:0;overflow:hidden;
}
.ls-filter-toggle-btn{
    display:inline-flex;align-items:center;gap:.45rem;
    padding:.5rem .9rem;border-radius:var(--ls-r-md);
    background:#fff;color:var(--ls-gray-700);
    border:1.5px solid var(--ls-gray-200);cursor:pointer;
    font-family:var(--ls-font-body);font-weight:600;font-size:.85rem;
    transition:all .18s ease;position:relative;
}
.ls-filter-toggle-btn:hover{border-color:var(--ls-primary);color:var(--ls-primary);background:var(--ls-primary-subtle)}
.ls-filter-toggle-btn.is-active{background:var(--ls-primary-subtle);border-color:var(--ls-primary);color:var(--ls-primary)}
.ls-filter-count-badge{
    background:var(--ls-primary);color:#fff;
    font-size:.7rem;font-weight:800;
    min-width:18px;height:18px;padding:0 .35rem;
    border-radius:9px;display:inline-flex;align-items:center;justify-content:center;
    line-height:1;
}
.ls-side-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem}
.ls-side-title{
    font-family:var(--ls-font-display);font-size:1rem;font-weight:700;
    color:var(--ls-gray-800);
}
.ls-filter-clear{
    background:none;border:none;color:var(--ls-primary);
    font-family:var(--ls-font-body);font-size:.8rem;font-weight:600;cursor:pointer;
}
.ls-filter-clear:hover{color:var(--ls-primary-hover);text-decoration:underline}

.ls-filter-section{margin-bottom:1.35rem}
.ls-filter-label{
    display:block;font-family:var(--ls-font-body);font-size:.72rem;
    font-weight:700;letter-spacing:.08em;text-transform:uppercase;
    color:var(--ls-gray-500);margin-bottom:.5rem;
}

.ls-type-btn{
    display:block;width:100%;text-align:left;
    padding:.5rem .75rem;border-radius:var(--ls-r-md);border:none;cursor:pointer;
    margin-bottom:.2rem;background:transparent;
    font-family:var(--ls-font-body);font-size:.88rem;font-weight:500;
    color:var(--ls-gray-600);transition:all .15s;
}
.ls-type-btn:hover{background:var(--ls-gray-100);color:var(--ls-gray-800)}
.ls-type-btn.active{
    background:var(--ls-purple-50);color:var(--ls-purple-700);font-weight:600;
}

.ls-filter-row{display:flex;align-items:center;gap:.5rem}
.ls-filter-half{flex:1}
.ls-filter-dash{color:var(--ls-gray-300);font-weight:700}
.ls-filter-date-sub{
    display:block;font-family:var(--ls-font-body);font-size:.68rem;
    color:var(--ls-gray-500);font-weight:600;margin-bottom:.2rem;
}

.ls-price-display{
    font-family:var(--ls-font-display);font-size:1.5rem;font-weight:700;
    color:var(--ls-primary);margin-bottom:.4rem;
}
.ls-range{
    width:100%;accent-color:var(--ls-primary);cursor:pointer;
}

.ls-check-grid{display:flex;flex-wrap:wrap;gap:.35rem}
.ls-check{
    display:flex;align-items:center;gap:.35rem;
    padding:.35rem .65rem;border:1.5px solid var(--ls-gray-200);
    border-radius:var(--ls-r-md);cursor:pointer;
    font-family:var(--ls-font-body);font-size:.78rem;
    transition:all .15s;user-select:none;color:var(--ls-gray-700);
}
.ls-check:has(input:checked){
    border-color:var(--ls-primary);background:var(--ls-purple-50);color:var(--ls-purple-700);
}
.ls-check input{display:none}

.ls-advanced-toggle{
    font-family:var(--ls-font-body);font-weight:700;font-size:.85rem;
    color:var(--ls-primary);cursor:pointer;list-style:none;
    padding:.5rem 0;user-select:none;
}
.ls-advanced-toggle::-webkit-details-marker{display:none}
.ls-advanced-toggle::before{content:'+ ';font-weight:800}
details[open] > .ls-advanced-toggle::before{content:'− '}

.ls-filter-apply{
    width:100%;padding:.75rem;
    background:var(--ls-primary);color:#fff;
    border:none;border-radius:var(--ls-r-md);
    font-family:var(--ls-font-body);font-weight:700;font-size:.92rem;
    cursor:pointer;margin-top:.5rem;transition:all .2s;
    box-shadow:var(--ls-shadow-purple);
}
.ls-filter-apply:hover{background:var(--ls-primary-hover);transform:translateY(-1px);box-shadow:0 6px 22px rgba(13,148,136,.35)}

.ls-search-main{flex:1;display:flex;flex-direction:column;min-width:0}
.ls-search-topbar{
    display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;
    padding:1rem 1.5rem;background:#fff;border-bottom:1px solid var(--ls-gray-200);
    position:sticky;top:var(--ls-nav-h);z-index:10;gap:.75rem;
}
.ls-search-count{
    font-family:var(--ls-font-body);font-weight:600;font-size:.95rem;
    color:var(--ls-gray-700);
}
.ls-search-count strong{color:var(--ls-gray-900);font-weight:700}
.ls-search-controls{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}

.ls-search-sort{
    padding:.45rem .9rem;border:1.5px solid var(--ls-gray-200);
    border-radius:var(--ls-r-md);background:#fff;cursor:pointer;
    font-family:var(--ls-font-body);font-size:.85rem;font-weight:600;
    color:var(--ls-gray-700);outline:none;transition:border-color .2s;
}
.ls-search-sort:focus{border-color:var(--ls-primary)}

.ls-map-toggle{
    display:flex;align-items:center;gap:.5rem;cursor:pointer;
    font-family:var(--ls-font-body);font-size:.85rem;font-weight:600;
    user-select:none;color:var(--ls-gray-700);
}
.ls-map-toggle input{display:none}
.ls-toggle-slider{
    width:40px;height:22px;background:var(--ls-gray-300);
    border-radius:11px;position:relative;transition:background .2s;
}
.ls-toggle-slider::after{
    content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;
    background:#fff;border-radius:50%;transition:transform .2s;
    box-shadow:0 1px 4px rgba(0,0,0,.15);
}
.ls-map-toggle input:checked + .ls-toggle-slider{background:var(--ls-primary)}
.ls-map-toggle input:checked + .ls-toggle-slider::after{transform:translateX(18px)}

.ls-search-body{display:flex;flex:1;min-height:0}
.ls-search-grid{
    flex:1;min-width:0;padding:1.5rem;display:grid;
    grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem;
    align-content:start;
}
.ls-search-map{
    width:48%;max-width:48%;position:sticky;
    top:calc(var(--ls-nav-h) + 70px);
    height:calc(100vh - var(--ls-nav-h) - 70px);
    transition:width .3s ease, max-width .3s ease, opacity .3s ease;
    flex-shrink:0;
}
.ls-search-map.map-hidden{width:0;max-width:0;overflow:hidden;opacity:0}

.ls-map-icon{
    position:absolute;top:.6rem;right:2.85rem;z-index:2;
    width:32px;height:32px;border-radius:50%;
    background:#fff;display:flex;align-items:center;justify-content:center;
    color:var(--ls-gray-700);cursor:pointer;
    box-shadow:0 2px 8px rgba(0,0,0,.15);transition:all .2s;border:none;
}
.ls-map-icon:hover{background:var(--ls-primary);color:#fff}

.ls-no-results{
    grid-column:1/-1;text-align:center;padding:4rem 2rem;
}
.ls-no-results-icon{font-size:3rem;margin-bottom:1rem}
.ls-no-results h3{
    font-family:var(--ls-font-display);font-size:1.3rem;
    font-weight:700;margin-bottom:.5rem;color:var(--ls-gray-800);
}
.ls-no-results p{
    font-family:var(--ls-font-body);color:var(--ls-gray-500);
}

@media(max-width:1024px){
    .ls-search-map{display:none!important}
    .ls-search-grid{max-height:none}
}
@media(max-width:900px){
    .ls-search-sidebar{
        position:fixed;top:var(--ls-nav-h);left:0;right:0;bottom:0;
        width:100%;max-width:100vw;max-height:none;z-index:50;
        border-right:none;overflow-y:auto;
        padding:1.25rem;
        box-shadow:0 -12px 40px -10px rgba(15,23,42,.25);
    }
    /* Collasso mobile: nascondi completamente */
    .ls-search-sidebar.is-collapsed{display:none}
    /* Backdrop quando il pannello è aperto */
    .ls-search-sidebar:not(.is-collapsed)::before{
        content:'';position:fixed;inset:var(--ls-nav-h) 0 0 0;
        background:rgba(15,23,42,.4);z-index:-1;
    }
    /* Pulsante chiudi pannello mobile */
    .ls-search-sidebar .ls-side-close{
        display:inline-flex;position:absolute;top:.8rem;right:.8rem;
        width:34px;height:34px;border-radius:50%;border:none;
        background:var(--ls-gray-100);color:var(--ls-gray-700);
        align-items:center;justify-content:center;cursor:pointer;font-size:1.1rem;
    }
}
/* Chiudi è solo per mobile */
.ls-side-close{display:none}

/* ============ Flatpickr override ============ */
.flatpickr-day.selected,.flatpickr-day.selected:hover{
    background:var(--ls-primary)!important;border-color:var(--ls-primary)!important;color:#fff!important;
}
.flatpickr-day.today{border-color:var(--ls-primary)}
.flatpickr-disabled-booked{color:var(--ls-error)!important;text-decoration:line-through}

/* Leaflet marker cluster override */
.marker-cluster{background:rgba(13,148,136,.15);border-radius:50%}
.marker-cluster div{
    background:var(--ls-primary);color:#fff;font-weight:700;font-size:.78rem;
    width:36px;height:36px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
}

/* ============ Marker a forma di prezzo ============ */
.ls-price-marker{
    background:transparent!important;border:none!important;
}
.ls-price-marker span{
    display:inline-block;padding:.3rem .7rem;
    background:#fff;color:var(--ls-gray-900);
    font-family:var(--ls-font-body);font-weight:800;font-size:.82rem;
    border-radius:999px;border:2px solid var(--ls-primary);
    box-shadow:0 4px 12px rgba(15,23,42,.2);
    white-space:nowrap;transition:all .15s ease;
}
.ls-price-marker:hover span{
    background:var(--ls-primary);color:#fff;
    transform:scale(1.08);z-index:10;
}
.leaflet-marker-icon.ls-price-marker{z-index:400!important}

/* ============ Popup mappa con foto ============ */
.leaflet-popup.ls-map-popup-wrap .leaflet-popup-content-wrapper{
    padding:0;border-radius:14px;overflow:hidden;
    box-shadow:0 12px 40px -8px rgba(15,23,42,.28);
}
.leaflet-popup.ls-map-popup-wrap .leaflet-popup-content{
    margin:0;width:260px!important;
}
.leaflet-popup.ls-map-popup-wrap .leaflet-popup-tip-container .leaflet-popup-tip{
    background:#fff;
}
.ls-map-popup{
    display:block;text-decoration:none;color:inherit;
    font-family:var(--ls-font-body);
}
.ls-map-popup .ls-pop-img{
    position:relative;width:100%;padding-top:58%;
    background:var(--ls-gray-100);overflow:hidden;
}
.ls-map-popup .ls-pop-img img{
    position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
}
.ls-map-popup .ls-pop-type{
    position:absolute;top:.6rem;left:.6rem;
    background:rgba(255,255,255,.95);color:var(--ls-primary);
    padding:.2rem .55rem;border-radius:999px;
    font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
    backdrop-filter:blur(2px);
}
.ls-map-popup .ls-pop-body{padding:.7rem .85rem .85rem;display:flex;flex-direction:column;gap:.35rem}
.ls-map-popup .ls-pop-title{
    font-family:var(--ls-font-display);font-weight:700;font-size:.98rem;
    color:var(--ls-gray-900);line-height:1.25;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.ls-map-popup .ls-pop-meta{
    font-size:.78rem;color:var(--ls-gray-600);
    display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;
}
.ls-pop-chip{
    background:var(--ls-purple-50);color:var(--ls-purple-700);
    padding:.1rem .45rem;border-radius:999px;font-weight:700;font-size:.72rem;
}
.ls-map-popup .ls-pop-foot{
    display:flex;justify-content:space-between;align-items:baseline;
    margin-top:.25rem;padding-top:.45rem;border-top:1px solid var(--ls-gray-100);
}
.ls-map-popup .ls-pop-price{
    font-family:var(--ls-font-display);font-weight:800;font-size:1.1rem;
    color:var(--ls-gray-900);
}
.ls-map-popup .ls-pop-price small{font-weight:500;color:var(--ls-gray-500);font-size:.72rem;margin-left:.15rem}
.ls-map-popup .ls-pop-cta{color:var(--ls-primary);font-weight:700;font-size:.82rem}
.ls-map-popup:hover .ls-pop-title{color:var(--ls-primary)}
.ls-map-popup:hover .ls-pop-img img{transform:scale(1.05);transition:transform .4s}

/* ============ Listing detail (ListingPage.jsx) ============ */
.ls-detail-container{max-width:var(--ls-max);margin:0 auto;padding:1.5rem}
.ls-breadcrumb{
    font-family:var(--ls-font-body);font-size:.85rem;margin-bottom:1rem;
}
.ls-breadcrumb a,.ls-breadcrumb button{
    color:var(--ls-primary);text-decoration:none;cursor:pointer;
    background:none;border:none;font-family:inherit;font-size:inherit;font-weight:600;
}
.ls-breadcrumb a:hover,.ls-breadcrumb button:hover{text-decoration:underline}

.ls-detail-header{
    display:flex;justify-content:space-between;align-items:flex-start;
    gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap;
}
.ls-detail-title{
    font-family:var(--ls-font-display);font-size:clamp(1.5rem,3.2vw,2.15rem);
    font-weight:700;line-height:1.15;letter-spacing:-.02em;color:var(--ls-gray-800);
}
.ls-detail-sub{
    display:flex;align-items:center;gap:.5rem;margin-top:.5rem;flex-wrap:wrap;
    font-family:var(--ls-font-body);font-size:.9rem;color:var(--ls-gray-500);
}
.ls-detail-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.ls-icon-btn{
    display:inline-flex;align-items:center;gap:.4rem;
    padding:.55rem 1rem;border-radius:var(--ls-r-md);
    border:1.5px solid var(--ls-gray-200);background:#fff;cursor:pointer;
    font-family:var(--ls-font-body);font-weight:600;font-size:.88rem;
    color:var(--ls-gray-700);text-decoration:none;transition:all .2s;
}
.ls-icon-btn:hover{border-color:var(--ls-primary);color:var(--ls-primary);background:var(--ls-primary-subtle)}
.ls-fav-btn.active{border-color:var(--ls-error);color:var(--ls-error);background:var(--ls-error-light)}

/* Gallery */
.ls-gallery{
    display:grid;grid-template-columns:2fr 1fr;gap:.5rem;
    border-radius:var(--ls-r-lg);overflow:hidden;
    margin-bottom:2rem;max-height:460px;
}
.ls-gallery-main{position:relative;min-height:320px}
.ls-gallery-main img{width:100%;height:100%;min-height:320px;object-fit:cover;cursor:pointer}
.ls-gallery-side{display:grid;grid-template-rows:repeat(auto-fill,1fr);gap:.5rem}
.ls-gallery-side img{width:100%;height:100%;object-fit:cover;cursor:pointer}
.ls-gallery-more{
    background:rgba(0,0,0,.55);color:#fff;border:none;
    font-family:var(--ls-font-body);font-weight:700;font-size:1rem;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
}
.ls-gallery-more:hover{background:rgba(0,0,0,.7)}
.ls-avail-badge{
    position:absolute;top:1rem;left:1rem;z-index:2;
    padding:.3rem .8rem;border-radius:var(--ls-r-full);
    font-family:var(--ls-font-body);font-size:.78rem;font-weight:700;letter-spacing:.03em;
}

/* Detail body 2-col */
.ls-detail-body{display:grid;grid-template-columns:1fr 380px;gap:2rem;align-items:start}
.ls-detail-content{min-width:0}
@media(max-width:900px){
    .ls-detail-body{grid-template-columns:1fr}
    .ls-gallery{grid-template-columns:1fr;max-height:340px}
    .ls-gallery-side{grid-template-columns:repeat(4,1fr);grid-template-rows:none}
}

/* Info row */
.ls-info-row{
    display:flex;gap:1.5rem;flex-wrap:wrap;
    padding:1rem 0;border-bottom:1px solid var(--ls-gray-100);margin-bottom:1.5rem;
}
.ls-info-item{
    font-family:var(--ls-font-body);font-size:.9rem;color:var(--ls-gray-500);
    display:flex;align-items:center;gap:.35rem;
}
.ls-info-item strong{color:var(--ls-gray-800);font-weight:700}

/* Owner block */
.ls-owner-block{
    display:flex;align-items:center;gap:.75rem;
    padding:1rem 0;margin-bottom:1.5rem;border-bottom:1px solid var(--ls-gray-100);
}
.ls-owner-name{font-family:var(--ls-font-display);font-weight:700;font-size:.95rem;color:var(--ls-gray-800)}
.ls-owner-label{font-size:.72rem;color:var(--ls-primary);font-weight:600;text-transform:uppercase;letter-spacing:.06em}

/* Sections */
.ls-content-section{margin-bottom:2rem}
.ls-content-section h2,.ls-detail-section-title{
    font-family:var(--ls-font-display);font-size:1.15rem;font-weight:600;
    color:var(--ls-gray-800);margin-bottom:1rem;
    display:flex;align-items:center;gap:.5rem;
}
.ls-content-section p{
    font-family:var(--ls-font-body);font-size:.95rem;color:var(--ls-gray-600);line-height:1.8;
}

/* Tabs — modern pill style, scrollable on mobile */
.ls-tabs{
    display:flex;gap:.4rem;padding:.35rem;margin-bottom:1.5rem;
    background:var(--ls-gray-50);border:1px solid var(--ls-gray-100);
    border-radius:999px;
    overflow-x:auto;overflow-y:hidden;
    scrollbar-width:none;-ms-overflow-style:none;
    position:sticky;top:70px;z-index:5;backdrop-filter:blur(6px);
}
.ls-tabs::-webkit-scrollbar{display:none}
.ls-tab{
    flex:1 1 auto;min-width:max-content;
    padding:.65rem 1.1rem;border:none;background:transparent;cursor:pointer;
    font-family:var(--ls-font-body);font-size:.88rem;font-weight:600;
    color:var(--ls-gray-600);border-radius:999px;
    transition:background-color .18s,color .18s,box-shadow .18s;
    white-space:nowrap;
}
.ls-tab:hover{color:var(--ls-primary-dark,var(--ls-primary));background:rgba(13,148,136,.06)}
.ls-tab.active{
    color:#fff;background:linear-gradient(135deg,var(--ls-purple-500,#2dd4bf),var(--ls-primary));
    box-shadow:0 4px 14px -4px rgba(13,148,136,.45);
}
.ls-tab:focus-visible{outline:2px solid var(--ls-primary);outline-offset:2px}

.ls-ideal-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}

/* Amenities */
.ls-amenity-grid{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.6rem;
}
.ls-amenity-item{
    display:flex;align-items:center;gap:.6rem;
    padding:.7rem .9rem;background:#fff;border:1px solid var(--ls-gray-100);
    border-radius:var(--ls-r-md);
    font-family:var(--ls-font-body);font-size:.88rem;color:var(--ls-gray-700);font-weight:500;
}
.ls-amenity-icon{font-size:1.15rem}
.ls-amenity-check{color:var(--ls-primary);font-weight:700}

/* Reviews */
.ls-avg-badge{
    background:var(--ls-warning-light);color:var(--ls-warning-dark);
    padding:.15rem .55rem;border-radius:var(--ls-r-md);
    font-family:var(--ls-font-body);font-size:.82rem;font-weight:700;
}
.ls-review{
    background:#fff;border:1px solid var(--ls-gray-100);
    border-radius:var(--ls-r-lg);padding:1.25rem;margin-bottom:1rem;
}
.ls-review-header{display:flex;align-items:center;gap:.65rem;margin-bottom:.5rem}
.ls-review-name{font-family:var(--ls-font-display);font-weight:600;font-size:.95rem;color:var(--ls-gray-800)}
.ls-review-stars{font-size:.75rem;color:var(--ls-warning)}
.ls-review h4{font-family:var(--ls-font-display);font-size:.95rem;font-weight:600;margin-bottom:.35rem;color:var(--ls-gray-800)}
.ls-review p{font-family:var(--ls-font-body);color:var(--ls-gray-600);font-size:.9rem;line-height:1.65}
.ls-no-reviews{
    font-family:var(--ls-font-body);color:var(--ls-gray-500);font-style:italic;
}

/* Booking widget */
.ls-booking-widget{position:sticky;top:calc(var(--ls-nav-h) + 16px)}
.ls-booking-card{
    background:#fff;border:1px solid var(--ls-gray-100);
    border-radius:var(--ls-r-xl);padding:1.5rem;
    box-shadow:var(--ls-shadow-lg);
}
.ls-booking-price{
    font-family:var(--ls-font-display);font-size:1.85rem;font-weight:700;
    color:var(--ls-primary);line-height:1;margin-bottom:.2rem;
}
.ls-booking-price-per{
    font-family:var(--ls-font-body);font-size:.9rem;color:var(--ls-gray-500);
    margin-bottom:1.25rem;
}
.ls-booking-dates{
    display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:1rem;
}
.ls-booking-field--full{grid-column:1/-1}
.ls-booking-field label{
    display:block;font-family:var(--ls-font-body);font-size:.68rem;
    font-weight:700;text-transform:uppercase;letter-spacing:.06em;
    color:var(--ls-gray-500);margin-bottom:.3rem;
}
.ls-booking-field input{
    width:100%;padding:.6rem .75rem;
    border:1.5px solid var(--ls-gray-200);border-radius:var(--ls-r-md);
    font-family:var(--ls-font-body);font-size:.88rem;cursor:pointer;background:#fff;
}
.ls-booking-field input:focus{outline:none;border-color:var(--ls-primary);box-shadow:0 0 0 3px rgba(13,148,136,.1)}

.ls-booking-summary{
    background:var(--ls-gray-50);border-radius:var(--ls-r-md);
    padding:.85rem 1rem;margin-bottom:1rem;
}
.ls-booking-line{
    display:flex;justify-content:space-between;align-items:center;
    font-family:var(--ls-font-body);font-size:.88rem;color:var(--ls-gray-600);
    margin-bottom:.4rem;
}
.ls-booking-total{
    display:flex;justify-content:space-between;align-items:center;
    font-family:var(--ls-font-display);font-weight:700;font-size:1rem;
    color:var(--ls-gray-800);
    border-top:1px solid var(--ls-gray-200);padding-top:.55rem;margin-top:.35rem;
}

.ls-booking-btn{
    display:block;width:100%;padding:.85rem;
    background:var(--ls-primary);color:#fff;
    border:none;border-radius:var(--ls-r-md);
    font-family:var(--ls-font-body);font-weight:700;font-size:.95rem;
    cursor:pointer;transition:all .2s;text-align:center;text-decoration:none;
    box-shadow:var(--ls-shadow-purple);
}
.ls-booking-btn:hover:not(:disabled){background:var(--ls-primary-hover);transform:translateY(-1px);box-shadow:0 8px 24px rgba(13,148,136,.35)}
.ls-booking-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}

.ls-booking-contact{
    display:block;width:100%;text-align:center;
    padding:.65rem;margin-top:.6rem;
    border:1.5px solid var(--ls-gray-200);border-radius:var(--ls-r-md);
    text-decoration:none;color:var(--ls-gray-700);
    font-family:var(--ls-font-body);font-weight:600;font-size:.88rem;
    transition:all .2s;background:#fff;cursor:pointer;
}
.ls-booking-contact:hover{border-color:var(--ls-primary);color:var(--ls-primary);background:var(--ls-primary-subtle)}
.ls-booking-note{
    text-align:center;font-family:var(--ls-font-body);
    font-size:.72rem;color:var(--ls-gray-400);margin-top:.6rem;
}
.ls-booking-occupied{
    text-align:center;padding:1rem;
    background:var(--ls-error-light);border:1px solid rgba(239,68,68,.2);
    border-radius:var(--ls-r-md);color:var(--ls-error-dark);
    font-family:var(--ls-font-body);font-weight:600;font-size:.88rem;
}

/* Gallery modal */
.ls-gallery-modal{
    position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:2000;
    display:none;align-items:center;justify-content:center;
}
.ls-gallery-modal.show{display:flex}
.ls-gallery-modal img{
    max-width:90vw;max-height:85vh;object-fit:contain;border-radius:var(--ls-r-md);
}
.ls-gm-close{
    position:absolute;top:1rem;right:1.5rem;background:none;border:none;
    color:#fff;font-size:2rem;cursor:pointer;z-index:10;
}
.ls-gm-nav{
    position:absolute;top:50%;transform:translateY(-50%);
    background:rgba(255,255,255,.15);border:none;color:#fff;
    font-size:2.25rem;padding:.4rem 1rem;cursor:pointer;border-radius:var(--ls-r-md);
    transition:background .2s;
}
.ls-gm-nav:hover{background:rgba(255,255,255,.3)}
.ls-gm-prev{left:1rem}
.ls-gm-next{right:1rem}
.ls-gm-counter{
    position:absolute;bottom:1.5rem;left:50%;transform:translateX(-50%);
    color:rgba(255,255,255,.75);font-family:var(--ls-font-body);
    font-size:.9rem;font-weight:600;
}

/* ============ Publish wizard (PublishPage.jsx) ============ */
.ls-wiz-body{background:var(--ls-gray-50);min-height:100vh}
.ls-wiz-topbar{
    display:flex;align-items:center;justify-content:space-between;
    padding:0 1.5rem;height:var(--ls-nav-h);
    background:#fff;border-bottom:1px solid var(--ls-gray-200);
    position:sticky;top:0;z-index:100;
}
.ls-wiz-logo{text-decoration:none;display:flex;align-items:center;gap:.55rem}
.ls-wiz-close{
    text-decoration:none;color:var(--ls-gray-400);
    font-size:1.4rem;padding:.5rem .75rem;border-radius:var(--ls-r-md);
    transition:all .2s;
}
.ls-wiz-close:hover{background:var(--ls-gray-100);color:var(--ls-gray-700)}

.ls-wiz-topsteps{display:flex;gap:.85rem;align-items:center}
.ls-wiz-topstep{
    display:flex;align-items:center;gap:.4rem;
    font-family:var(--ls-font-body);font-size:.82rem;font-weight:600;
    color:var(--ls-gray-400);transition:color .3s;
}
.ls-wiz-topstep.active{color:var(--ls-primary)}
.ls-wiz-topstep.done{color:var(--ls-success)}
.ls-wiz-topstep span{
    width:26px;height:26px;border-radius:50%;
    background:var(--ls-gray-200);display:flex;align-items:center;justify-content:center;
    font-family:var(--ls-font-display);font-weight:700;font-size:.78rem;
    transition:all .3s;color:var(--ls-gray-500);
}
.ls-wiz-topstep.active span{background:var(--ls-primary);color:#fff}
.ls-wiz-topstep.done span{background:var(--ls-success);color:#fff}

.ls-wiz-form{max-width:720px;margin:0 auto;padding:2.5rem 1.5rem 4rem}
.ls-wiz-page{display:none}
.ls-wiz-page.active{display:block;animation:lsFadeIn .3s ease}
@keyframes lsFadeIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

.ls-wiz-card{
    background:#fff;border-radius:var(--ls-r-xl);
    padding:2.25rem 2rem;border:1px solid var(--ls-gray-100);
    box-shadow:var(--ls-shadow-md);
}
.ls-wiz-card h2,.ls-wiz-card-title{
    font-family:var(--ls-font-display);font-size:1.25rem;font-weight:700;
    margin-bottom:.25rem;letter-spacing:-.01em;color:var(--ls-gray-800);
}
.ls-wiz-subtitle{
    font-family:var(--ls-font-body);font-size:.92rem;color:var(--ls-gray-500);
    margin-bottom:1.5rem;
}

.ls-wiz-error{
    max-width:720px;margin:1.25rem auto;padding:1rem;
    background:var(--ls-error-light);border:1px solid rgba(239,68,68,.2);
    border-radius:var(--ls-r-md);color:var(--ls-error-dark);
    font-family:var(--ls-font-body);font-weight:600;text-align:center;
}

/* Wizard fields (reuse .ls-input / .ls-select / .ls-textarea) */
.ls-wiz-field{margin-bottom:1.25rem}
.ls-wiz-field label{
    display:block;font-family:var(--ls-font-body);
    font-size:.82rem;font-weight:600;margin-bottom:.4rem;
    color:var(--ls-gray-700);
}
.ls-wiz-field label small{color:var(--ls-gray-400);font-weight:400}
.ls-wiz-row{display:flex;gap:1rem;flex-wrap:wrap}
.ls-wiz-row > .ls-wiz-field{flex:1;min-width:140px;margin-bottom:0}
.ls-wiz-hint{
    color:var(--ls-gray-500);font-family:var(--ls-font-body);
    font-size:.85rem;margin-bottom:1rem;
}
.ls-char-count{
    text-align:right;font-family:var(--ls-font-body);
    font-size:.75rem;color:var(--ls-gray-500);margin-top:.25rem;
}

.ls-radio-group{display:flex;gap:.5rem;flex-wrap:wrap}
.ls-radio{
    display:flex;align-items:center;gap:.4rem;
    padding:.55rem 1rem;border:1.5px solid var(--ls-gray-200);
    border-radius:var(--ls-r-md);cursor:pointer;
    font-family:var(--ls-font-body);font-size:.88rem;
    color:var(--ls-gray-700);transition:all .15s;user-select:none;
}
.ls-radio:has(input:checked){border-color:var(--ls-primary);background:var(--ls-primary-subtle);color:var(--ls-primary);font-weight:600}
.ls-radio input{display:none}

.ls-wiz-amenities{display:flex;flex-wrap:wrap;gap:.45rem}

/* Upload drop zone */
.ls-upload{
    position:relative;border:2px dashed var(--ls-gray-300);
    border-radius:var(--ls-r-lg);overflow:hidden;cursor:pointer;
    background:var(--ls-gray-50);transition:all .2s;
}
.ls-upload:hover{border-color:var(--ls-primary);background:var(--ls-primary-subtle)}
.ls-upload input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.ls-upload-placeholder{padding:2.5rem 1.5rem;text-align:center;pointer-events:none}
.ls-upload-placeholder .ls-upload-icon{font-size:2rem;display:block;margin-bottom:.5rem}
.ls-upload-placeholder p{
    font-family:var(--ls-font-body);color:var(--ls-gray-500);font-size:.88rem;
}
.ls-upload-placeholder p strong{color:var(--ls-gray-700);font-weight:600}
.ls-upload img{width:100%;max-height:320px;object-fit:cover;display:block}

.ls-extra-previews{
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(140px, 1fr));
    gap:.7rem;margin-top:.9rem;
}
.ls-extra-count{
    grid-column:1/-1;
    font-family:var(--ls-font-body);font-size:.85rem;font-weight:600;
    color:var(--ls-primary-hover);
    background:var(--ls-primary-subtle);
    border:1px solid var(--ls-purple-200);
    border-radius:var(--ls-r-sm);
    padding:.45rem .75rem;
}
.ls-extra-thumb{
    position:relative;margin:0;aspect-ratio:1/1;
    border-radius:var(--ls-r-md);overflow:hidden;
    border:1px solid var(--ls-gray-200);background:var(--ls-gray-50);
    box-shadow:0 1px 2px rgba(0,0,0,.04);
}
.ls-extra-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.ls-extra-thumb figcaption{
    position:absolute;left:0;right:0;bottom:0;
    padding:.35rem .55rem;
    font-family:var(--ls-font-body);font-size:.72rem;color:#fff;
    background:linear-gradient(to top, rgba(0,0,0,.7), rgba(0,0,0,0));
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* Price preview & fee box */
.ls-price-preview{
    background:var(--ls-gray-50);border:1px solid var(--ls-gray-200);
    border-radius:var(--ls-r-md);padding:1.15rem 1.25rem;margin-top:1rem;
}
.ls-pp-row{
    display:flex;justify-content:space-between;align-items:center;
    padding:.35rem 0;font-family:var(--ls-font-body);font-size:.92rem;
    color:var(--ls-gray-600);
}
.ls-pp-total{
    border-top:1.5px solid var(--ls-gray-200);padding-top:.6rem;margin-top:.4rem;
    font-family:var(--ls-font-display);font-weight:700;font-size:1.05rem;
    color:var(--ls-gray-800);
}

.ls-fee-box{
    background:var(--ls-primary-subtle);border:1px solid var(--ls-purple-200);
    border-radius:var(--ls-r-md);padding:1rem 1.25rem;margin-top:1rem;
}
.ls-fee-box-title{
    font-family:var(--ls-font-display);font-weight:700;font-size:.95rem;
    color:var(--ls-primary-hover);margin-bottom:.25rem;
}
.ls-fee-box-text{
    font-family:var(--ls-font-body);font-size:.85rem;color:var(--ls-primary);
    line-height:1.55;
}

.ls-wiz-summary{
    background:var(--ls-gray-50);border:1px solid var(--ls-gray-200);
    border-radius:var(--ls-r-md);padding:1.15rem 1.25rem;
}
.ls-wiz-summary p{
    font-family:var(--ls-font-body);font-size:.9rem;padding:.3rem 0;
    color:var(--ls-gray-600);
}
.ls-wiz-summary strong{color:var(--ls-gray-800);font-weight:600}

.ls-wiz-nav{
    display:flex;justify-content:space-between;align-items:center;
    margin-top:1.5rem;gap:.75rem;
}
.ls-wiz-prev,.ls-wiz-next,.ls-wiz-submit{
    padding:.75rem 1.6rem;border-radius:var(--ls-r-full);
    font-family:var(--ls-font-body);font-weight:600;font-size:.92rem;
    cursor:pointer;transition:all .2s;
}
.ls-wiz-prev{
    background:#fff;border:1.5px solid var(--ls-gray-200);
    color:var(--ls-gray-700);
}
.ls-wiz-prev:hover{border-color:var(--ls-primary);color:var(--ls-primary);background:var(--ls-primary-subtle)}
.ls-wiz-prev:disabled{opacity:.4;cursor:not-allowed}
.ls-wiz-next{
    background:var(--ls-primary);color:#fff;border:none;
    box-shadow:var(--ls-shadow-purple);
}
.ls-wiz-next:hover{background:var(--ls-primary-hover);transform:translateY(-1px);box-shadow:0 6px 22px rgba(13,148,136,.35)}
.ls-wiz-submit{
    background:var(--ls-success);color:#fff;border:none;
    box-shadow:0 4px 24px rgba(16,185,129,.25);
}
.ls-wiz-submit:hover{background:#059669;transform:translateY(-1px);box-shadow:0 6px 26px rgba(16,185,129,.4)}

@media(max-width:640px){
    .ls-wiz-topsteps{display:none}
    .ls-wiz-row{flex-direction:column;gap:0}
    .ls-wiz-row > .ls-wiz-field{margin-bottom:1.25rem}
    .ls-wiz-card{padding:1.5rem 1.25rem}
}

/* ============ Auth page (AuthPage.jsx) ============ */
.ls-auth-page{
    min-height:100vh;display:flex;align-items:center;justify-content:center;
    background:linear-gradient(135deg,var(--ls-gray-900) 0%,#0d3f3a 100%);
    padding:2rem 1rem;position:relative;overflow:hidden;
}
.ls-auth-page::before{
    content:'';position:absolute;top:-20%;right:-15%;
    width:600px;height:600px;border-radius:50%;
    background:radial-gradient(circle,rgba(13,148,136,.28) 0%,transparent 70%);
    animation:lsAuthPulse 10s ease-in-out infinite alternate;pointer-events:none;
}
.ls-auth-page::after{
    content:'';position:absolute;bottom:-25%;left:-10%;
    width:500px;height:500px;border-radius:50%;
    background:radial-gradient(circle,rgba(45,212,191,.18) 0%,transparent 70%);
    animation:lsAuthPulse 14s ease-in-out infinite alternate-reverse;pointer-events:none;
}
@keyframes lsAuthPulse{from{transform:scale(1)}to{transform:scale(1.25)}}

.ls-auth-card{
    background:#fff;border-radius:var(--ls-r-2xl);
    padding:2.5rem 2.25rem;width:100%;max-width:440px;
    box-shadow:0 24px 80px rgba(0,0,0,.3);position:relative;z-index:2;
}
.ls-auth-logo{
    font-family:var(--ls-font-display);font-size:1.7rem;font-weight:700;
    text-align:center;margin-bottom:.25rem;color:var(--ls-gray-800);
}
.ls-auth-logo .loca{color:var(--ls-primary)}
.ls-auth-logo .space{color:var(--ls-gray-800)}
.ls-auth-subtitle{
    font-family:var(--ls-font-body);font-size:.9rem;color:var(--ls-gray-500);
    text-align:center;margin-bottom:1.75rem;
}

.ls-mode-tabs{
    display:flex;background:var(--ls-gray-100);border-radius:var(--ls-r-md);
    padding:.25rem;margin-bottom:1.5rem;
}
.ls-mode-tab{
    flex:1;padding:.55rem 0;text-align:center;border-radius:var(--ls-r-sm);
    font-family:var(--ls-font-body);font-size:.88rem;font-weight:600;
    cursor:pointer;border:none;transition:all .15s;
    background:transparent;color:var(--ls-gray-500);text-decoration:none;
}
.ls-mode-tab.active{
    background:#fff;color:var(--ls-gray-800);
    box-shadow:0 1px 4px rgba(0,0,0,.08);
}

.ls-role-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;margin-bottom:1.25rem}
.ls-role-tab{
    position:relative;padding:.85rem .7rem;text-align:center;
    border:1.5px solid var(--ls-gray-200);border-radius:var(--ls-r-md);
    background:#fff;cursor:pointer;transition:all .2s;
    font-family:var(--ls-font-body);font-size:.85rem;font-weight:600;
    color:var(--ls-gray-600);display:flex;flex-direction:column;align-items:center;gap:.3rem;
}
.ls-role-tab:hover{border-color:var(--ls-primary-light)}
.ls-role-tab input{position:absolute;opacity:0;pointer-events:none}
.ls-role-tab.active,.ls-role-tab:has(input:checked){
    border-color:var(--ls-primary);background:var(--ls-primary-subtle);color:var(--ls-primary-hover);
}
.ls-role-icon{font-size:1.4rem;line-height:1}
.ls-role-sub{font-size:.7rem;color:var(--ls-gray-400);font-weight:500}
.ls-role-tab.active .ls-role-sub,
.ls-role-tab:has(input:checked) .ls-role-sub{color:var(--ls-primary)}

.ls-auth-divider{
    display:flex;align-items:center;gap:.7rem;
    color:var(--ls-gray-400);font-size:.78rem;font-family:var(--ls-font-body);
    margin:1.25rem 0;
}
.ls-auth-divider::before,.ls-auth-divider::after{
    content:'';flex:1;height:1px;background:var(--ls-gray-200);
}

.ls-auth-switch{
    text-align:center;font-family:var(--ls-font-body);
    font-size:.88rem;color:var(--ls-gray-500);margin-top:1.5rem;
}
.ls-auth-switch a,.ls-auth-switch button{
    color:var(--ls-primary);font-weight:600;cursor:pointer;
    background:none;border:none;font-family:inherit;font-size:inherit;text-decoration:none;
}
.ls-auth-switch a:hover,.ls-auth-switch button:hover{text-decoration:underline}

.ls-form-options{
    display:flex;justify-content:space-between;align-items:center;
    margin-bottom:1.25rem;flex-wrap:wrap;gap:.5rem;
}
.ls-remember{
    display:flex;align-items:center;gap:.45rem;cursor:pointer;
    font-family:var(--ls-font-body);font-size:.85rem;color:var(--ls-gray-700);font-weight:500;
}
.ls-remember input[type=checkbox]{width:16px;height:16px;accent-color:var(--ls-primary);cursor:pointer}
.ls-forgot{
    color:var(--ls-primary);text-decoration:none;
    font-family:var(--ls-font-body);font-size:.85rem;font-weight:600;
}
.ls-forgot:hover{text-decoration:underline}

.ls-alert{
    padding:.75rem 1rem;border-radius:var(--ls-r-md);
    margin-bottom:1rem;font-family:var(--ls-font-body);
    font-size:.88rem;font-weight:500;line-height:1.5;
}
.ls-alert-ok{background:var(--ls-success-light);color:var(--ls-success-dark);border:1px solid rgba(16,185,129,.3)}
.ls-alert-err{background:var(--ls-error-light);color:var(--ls-error-dark);border:1px solid rgba(239,68,68,.2)}

.ls-field-err{
    display:block;font-family:var(--ls-font-body);
    font-size:.75rem;color:var(--ls-error);margin-top:.3rem;
}
.ls-field-err::before{content:'⚠ ';margin-right:.15rem}
.ls-input.is-err,.ls-select.is-err,.ls-textarea.is-err{
    border-color:var(--ls-error)!important;
    box-shadow:0 0 0 3px rgba(239,68,68,.15)!important;
}
/* Usa outline così il ring rosso funziona su input, select, textarea,
   ma anche su contenitori (mappa, upload zone, picker giorni) senza
   rompere il layout o discostare gli elementi. */
.ls-input-err{
    outline:2px solid var(--ls-error)!important;
    outline-offset:2px;
    box-shadow:0 0 0 5px rgba(239,68,68,.12)!important;
    border-radius:var(--ls-r-md);
}
/* Campo aggiornato automaticamente (click sulla mappa, GPS): flash verde */
@keyframes ls-field-flash-kf{
    0%  {background:rgba(16,185,129,.35);}
    100%{background:transparent;}
}
.ls-field-flash{animation:ls-field-flash-kf .9s ease-out}

/* Password strength bar */
.ls-pw-wrap{position:relative}
.ls-pw-toggle{
    position:absolute;right:.7rem;top:50%;transform:translateY(-50%);
    background:none;border:none;cursor:pointer;
    color:var(--ls-gray-400);font-size:1rem;
}
.ls-pw-toggle:hover{color:var(--ls-gray-700)}
.ls-pw-bar-wrap{
    height:4px;background:var(--ls-gray-100);border-radius:2px;
    margin-top:.5rem;overflow:hidden;display:none;
}
.ls-pw-bar{height:100%;width:0;transition:width .3s,background .3s}
.ls-pw-hint{
    font-family:var(--ls-font-body);font-size:.72rem;
    margin-top:.3rem;display:none;
}

/* Phone row */
.ls-phone-wrap{display:grid;grid-template-columns:140px 1fr;gap:.5rem}

/* Auth variations */
.ls-auth-card.ls-auth-card-lg{max-width:560px}

/* ============ Dashboard (DashboardPage.jsx) ============ */
.ls-dash-page{
    display:flex;min-height:calc(100vh - 64px);
    background:var(--ls-gray-50);font-family:var(--ls-font-body);
}
.ls-dash-sidebar{
    width:280px;flex-shrink:0;background:#fff;
    border-right:1px solid var(--ls-gray-200);
    padding:2rem 1rem 2rem;position:sticky;top:64px;
    height:calc(100vh - 64px);overflow-y:auto;
}
.ls-dash-sidebar-head{
    display:flex;flex-direction:column;align-items:center;
    padding-bottom:1.5rem;border-bottom:1px solid var(--ls-gray-100);margin-bottom:1rem;
}
.ls-dash-avatar-lg{
    width:72px;height:72px;border-radius:50%;
    background:linear-gradient(135deg,var(--ls-primary-light),var(--ls-primary));
    display:flex;align-items:center;justify-content:center;
    color:#fff;font-family:var(--ls-font-display);font-weight:700;font-size:1.75rem;
    margin-bottom:.75rem;box-shadow:0 6px 18px rgba(13,148,136,.25);position:relative;
}
.ls-dash-online-dot{
    position:absolute;bottom:2px;right:2px;width:16px;height:16px;
    background:#10b981;border:3px solid #fff;border-radius:50%;
    animation:lsDashPulseDot 2s infinite;
}
@keyframes lsDashPulseDot{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}
.ls-dash-user-name{
    font-family:var(--ls-font-display);font-weight:700;font-size:1.05rem;
    color:var(--ls-gray-800);text-align:center;margin-bottom:.25rem;
}
.ls-dash-user-role{
    font-family:var(--ls-font-body);font-size:.72rem;color:var(--ls-primary);
    text-align:center;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
}
.ls-dash-user-email{
    font-size:.78rem;color:var(--ls-gray-500);margin-top:.4rem;
    text-align:center;word-break:break-all;
}

.ls-dash-nav{display:flex;flex-direction:column;gap:.15rem}
.ls-dash-nav-item{
    display:flex;align-items:center;gap:.65rem;padding:.65rem .9rem;
    border-radius:var(--ls-r-md);border:none;background:transparent;
    font-family:var(--ls-font-body);font-size:.9rem;font-weight:500;
    color:var(--ls-gray-600);cursor:pointer;text-align:left;width:100%;
    text-decoration:none;transition:all .15s;
}
.ls-dash-nav-item:hover{background:var(--ls-gray-100);color:var(--ls-gray-800)}
.ls-dash-nav-item.active{
    background:var(--ls-primary-subtle);color:var(--ls-primary-hover);font-weight:600;
}
.ls-dash-nav-item svg{width:18px;height:18px;flex-shrink:0}
.ls-dash-nav-item .ls-dash-nav-badge{
    margin-left:auto;background:var(--ls-primary);color:#fff;
    font-size:.68rem;font-weight:700;padding:.1rem .5rem;border-radius:10px;
}
.ls-dash-nav-divider{
    height:1px;background:var(--ls-gray-100);margin:.9rem .3rem;
}
.ls-dash-nav-item.danger{color:var(--ls-error)}
.ls-dash-nav-item.danger:hover{background:var(--ls-error-light)}

.ls-dash-main{
    flex:1;padding:2rem 2.25rem;min-width:0;overflow-x:auto;
}
.ls-dash-title{
    font-family:var(--ls-font-display);font-size:1.75rem;font-weight:700;
    color:var(--ls-gray-800);margin:0 0 1.5rem;letter-spacing:-.02em;
    display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;
}

.ls-stats-row{
    display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
    gap:1rem;margin-bottom:1.75rem;
}
.ls-stat-card{
    background:#fff;border:1px solid var(--ls-gray-100);
    border-radius:var(--ls-r-lg);padding:1.25rem 1.25rem;
    box-shadow:var(--ls-shadow-sm);
}
.ls-stat-value{
    font-family:var(--ls-font-display);font-size:1.75rem;font-weight:700;
    color:var(--ls-primary);margin-bottom:.2rem;letter-spacing:-.01em;
}
.ls-stat-label{font-family:var(--ls-font-body);font-size:.85rem;color:var(--ls-gray-500)}
.ls-stat-card.ls-stat-green .ls-stat-value{color:#10b981}
.ls-stat-card.ls-stat-gray .ls-stat-value{color:var(--ls-gray-700)}

.ls-dash-main .ls-section-title,
.ls-dash-card .ls-section-title,
.ls-page-form .ls-section-title{
    font-family:var(--ls-font-display);font-size:1.05rem;font-weight:700;
    color:var(--ls-gray-800);margin:0 0 .9rem;
}

.ls-dash-card{
    background:#fff;border:1px solid var(--ls-gray-100);
    border-radius:var(--ls-r-lg);box-shadow:var(--ls-shadow-sm);
    overflow:hidden;margin-bottom:1.5rem;
}

.ls-dash-table{overflow-x:auto}
.ls-dash-table-head,.ls-dash-table-row{
    display:grid;gap:1rem;padding:.9rem 1.25rem;align-items:center;
}
.ls-dash-table-head{
    background:var(--ls-gray-50);font-family:var(--ls-font-body);
    font-size:.7rem;font-weight:700;color:var(--ls-gray-500);
    text-transform:uppercase;letter-spacing:.06em;
}
.ls-dash-table-row{border-top:1px solid var(--ls-gray-100);font-size:.9rem;color:var(--ls-gray-700)}
.ls-dash-table-row:hover{background:var(--ls-gray-50)}
.ls-dash-table-text{color:var(--ls-gray-800)}
.ls-dash-table-sub{color:var(--ls-gray-400);font-size:.82rem}
.ls-dash-table-price{font-weight:700;color:var(--ls-primary)}
.ls-dash-table-green{font-weight:700;color:#10b981}

.ls-notif-item{
    display:flex;gap:.9rem;align-items:flex-start;
    padding:1rem 1.1rem;background:#fff;
    border:1px solid var(--ls-gray-100);border-radius:var(--ls-r-md);
    margin-bottom:.6rem;
}
.ls-notif-item.unread{background:var(--ls-primary-subtle);border-color:var(--ls-primary-light)}
.ls-notif-icon{font-size:1.2rem;flex-shrink:0}
.ls-notif-text{font-size:.9rem;color:var(--ls-gray-700);margin-bottom:.2rem}
.ls-notif-time{font-size:.72rem;color:var(--ls-gray-400)}

.ls-dash-empty{
    text-align:center;padding:3rem 2rem;color:var(--ls-gray-500);
    background:#fff;border:2px dashed var(--ls-gray-200);border-radius:var(--ls-r-lg);
}
.ls-dash-empty h4{
    font-family:var(--ls-font-display);font-size:1.1rem;font-weight:700;
    color:var(--ls-gray-700);margin:0 0 .4rem;
}
.ls-dash-empty p{margin:0;font-size:.9rem;line-height:1.5}

/* CTA card */
.ls-dash-cta{
    background:#fff;border:2px dashed var(--ls-gray-300);
    border-radius:var(--ls-r-lg);padding:2rem;text-align:center;cursor:pointer;
    transition:all .2s;display:block;text-decoration:none;
}
.ls-dash-cta:hover{border-color:var(--ls-primary);background:var(--ls-primary-subtle)}
.ls-dash-cta-icon{
    width:56px;height:56px;margin:0 auto 1rem;border-radius:50%;
    background:var(--ls-primary-subtle);color:var(--ls-primary);
    display:flex;align-items:center;justify-content:center;font-size:1.5rem;
}
.ls-dash-cta h4{
    font-family:var(--ls-font-display);font-size:1.05rem;font-weight:700;
    color:var(--ls-gray-800);margin:0 0 .35rem;
}
.ls-dash-cta p{font-size:.9rem;color:var(--ls-gray-500);margin:0}

/* Property row (landlord) */
.ls-prop-row{
    display:grid;grid-template-columns:80px 1fr auto auto;gap:1rem;
    padding:1rem 1.25rem;border-top:1px solid var(--ls-gray-100);align-items:center;
}
.ls-prop-row:first-child{border-top:none}
.ls-prop-thumb{
    width:80px;height:80px;border-radius:var(--ls-r-md);overflow:hidden;
    background:var(--ls-primary-subtle);display:flex;align-items:center;justify-content:center;
    font-size:1.75rem;flex-shrink:0;
}
.ls-prop-thumb img{width:100%;height:100%;object-fit:cover}
.ls-prop-title{
    font-family:var(--ls-font-display);font-size:1rem;font-weight:700;
    color:var(--ls-gray-800);margin:0 0 .25rem;
}
.ls-prop-meta{font-size:.82rem;color:var(--ls-gray-500);margin-bottom:.3rem}
.ls-prop-tenant{font-size:.78rem;color:var(--ls-gray-600);margin-top:.35rem;line-height:1.55}
.ls-prop-tenant strong{color:var(--ls-gray-800)}
.ls-prop-price{text-align:right}
.ls-prop-price-val{
    font-family:var(--ls-font-display);font-size:1.25rem;font-weight:700;color:var(--ls-primary);
}
.ls-prop-price-unit{font-size:.72rem;color:var(--ls-gray-400)}
.ls-prop-actions{display:flex;gap:.4rem;align-items:center}
.ls-prop-actions .ls-icon-btn{
    width:40px;height:40px;padding:0;border-radius:10px;
    background:var(--ls-gray-50);border:1.5px solid var(--ls-gray-200);
    color:var(--ls-gray-600);
    display:inline-flex;align-items:center;justify-content:center;
    transition:all .18s ease;
}
.ls-prop-actions .ls-icon-btn svg{width:18px;height:18px;flex-shrink:0;display:block}
.ls-prop-actions .ls-icon-btn:hover{
    background:var(--ls-primary-subtle);
    border-color:var(--ls-primary);
    color:var(--ls-primary);
    transform:translateY(-1px);
    box-shadow:0 4px 12px rgba(13,148,136,.12);
}
.ls-prop-actions .ls-icon-btn.danger{color:var(--ls-error);border-color:#fecaca}
.ls-prop-actions .ls-icon-btn.danger:hover{
    background:var(--ls-error-light);
    border-color:var(--ls-error);
    color:var(--ls-error-dark);
    box-shadow:0 4px 12px rgba(239,68,68,.15);
}
@media (max-width: 640px) {
    .ls-prop-actions .ls-icon-btn{width:36px;height:36px;border-radius:8px}
    .ls-prop-actions .ls-icon-btn svg{width:16px;height:16px}
}

/* Booking row (tenant) */
.ls-book-row{
    display:grid;grid-template-columns:80px 1fr auto;gap:1rem;
    padding:1rem 1.25rem;border-top:1px solid var(--ls-gray-100);align-items:center;
}
.ls-book-row:first-child{border-top:none}
.ls-book-thumb{
    width:80px;height:80px;border-radius:var(--ls-r-md);overflow:hidden;
    background:var(--ls-primary-subtle);display:flex;align-items:center;justify-content:center;
    font-size:1.75rem;flex-shrink:0;
}
.ls-book-thumb img{width:100%;height:100%;object-fit:cover}
.ls-book-title{
    font-family:var(--ls-font-display);font-size:1rem;font-weight:700;
    color:var(--ls-gray-800);margin:0 0 .25rem;
}
.ls-book-meta{font-size:.82rem;color:var(--ls-gray-500);margin-bottom:.2rem}
.ls-book-price{text-align:right}
.ls-book-price-val{
    font-family:var(--ls-font-display);font-size:1.25rem;font-weight:700;color:var(--ls-primary);
}
.ls-book-price-unit{font-size:.72rem;color:var(--ls-gray-400)}

/* Status badges */
.ls-badge-green{background:#d1fae5;color:#065f46;padding:.25rem .7rem;border-radius:12px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;display:inline-block}
.ls-badge-yellow{background:#fef3c7;color:#92400e;padding:.25rem .7rem;border-radius:12px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;display:inline-block}
.ls-badge-red{background:#fee2e2;color:#991b1b;padding:.25rem .7rem;border-radius:12px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;display:inline-block}
.ls-badge-gray{background:var(--ls-gray-100);color:var(--ls-gray-600);padding:.25rem .7rem;border-radius:12px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;display:inline-block}

/* Modal */
.ls-modal-overlay{
    position:fixed;inset:0;background:rgba(15,10,44,.55);
    display:none;align-items:center;justify-content:center;z-index:2000;
    backdrop-filter:blur(6px);padding:1rem;
}
.ls-modal-overlay.open{display:flex}
.ls-modal{
    background:#fff;border-radius:var(--ls-r-xl);max-width:520px;width:100%;
    max-height:90vh;overflow:hidden;display:flex;flex-direction:column;
    box-shadow:0 24px 80px rgba(0,0,0,.3);
}
.ls-modal-header{
    padding:1.25rem 1.5rem;border-bottom:1px solid var(--ls-gray-100);
    display:flex;justify-content:space-between;align-items:center;
}
.ls-modal-header h3{
    font-family:var(--ls-font-display);font-size:1.15rem;font-weight:700;
    color:var(--ls-gray-800);margin:0;
}
.ls-modal-close{
    background:none;border:none;color:var(--ls-gray-500);font-size:1.4rem;
    cursor:pointer;padding:.25rem .5rem;line-height:1;
}
.ls-modal-close:hover{color:var(--ls-gray-800)}
.ls-modal-body{padding:1.5rem;overflow-y:auto;flex:1}
.ls-modal-footer{
    padding:1rem 1.5rem;border-top:1px solid var(--ls-gray-100);
    display:flex;justify-content:flex-end;gap:.6rem;
}
.ls-btn-cancel{
    background:var(--ls-gray-100);color:var(--ls-gray-700);border:none;
    border-radius:var(--ls-r-md);padding:.65rem 1.2rem;font-weight:600;font-size:.9rem;cursor:pointer;
}
.ls-btn-cancel:hover{background:var(--ls-gray-200)}
.ls-btn-danger{
    background:var(--ls-error);color:#fff;border:none;
    border-radius:var(--ls-r-md);padding:.65rem 1.2rem;font-weight:600;font-size:.9rem;cursor:pointer;
}
.ls-btn-danger:hover{background:var(--ls-error-dark);transform:translateY(-1px);box-shadow:0 6px 20px rgba(239,68,68,.25)}

/* Toast */
.ls-toast{
    position:fixed;bottom:1.5rem;right:1.5rem;background:var(--ls-gray-800);
    color:#fff;padding:.9rem 1.25rem;border-radius:var(--ls-r-md);
    box-shadow:0 12px 36px rgba(0,0,0,.3);font-family:var(--ls-font-body);font-size:.9rem;font-weight:500;
    opacity:0;transform:translateY(20px);transition:all .3s;z-index:3000;pointer-events:none;max-width:360px;
}
.ls-toast.show{opacity:1;transform:translateY(0)}
.ls-toast.error{background:var(--ls-error)}
.ls-toast.success{background:#10b981}

/* Responsive dashboard */
@media(max-width:900px){
    .ls-dash-page{flex-direction:column}
    .ls-dash-sidebar{
        width:100%;height:auto;position:static;
        border-right:none;border-bottom:1px solid var(--ls-gray-200);
        padding:1.25rem 1rem;
    }
    .ls-dash-main{padding:1.5rem 1.25rem}
    .ls-dash-sidebar-head{padding-bottom:1rem;margin-bottom:.75rem}
    .ls-dash-nav{flex-direction:row;flex-wrap:wrap;gap:.3rem}
    .ls-dash-nav-item{flex:auto}
    .ls-dash-nav-divider{display:none}
    .ls-prop-row,.ls-book-row{grid-template-columns:60px 1fr;gap:.75rem}
    .ls-prop-price,.ls-book-price,.ls-prop-actions{grid-column:1/-1;text-align:left;justify-content:flex-start}
}

/* ============ Chat inbox ============ */
.ls-chat-wrap{
    max-width:1280px;margin:0 auto;padding:1.5rem 1.5rem 3rem;
    display:flex;flex-direction:column;min-height:calc(100vh - 64px);
    font-family:var(--ls-font-body);
}
.ls-chat-grid{
    display:grid;grid-template-columns:340px 1fr;gap:1.25rem;
    flex:1;min-height:500px;
}
.ls-chat-sidebar{
    background:#fff;border:1px solid var(--ls-gray-100);
    border-radius:var(--ls-r-lg);box-shadow:var(--ls-shadow-sm);
    display:flex;flex-direction:column;overflow:hidden;
}
.ls-chat-sidebar-head{
    padding:1.1rem 1.25rem;border-bottom:1px solid var(--ls-gray-100);
    font-family:var(--ls-font-display);font-weight:700;font-size:1rem;
    color:var(--ls-gray-800);display:flex;justify-content:space-between;align-items:center;
}
.ls-chat-count{
    background:var(--ls-primary);color:#fff;font-size:.7rem;font-weight:700;
    padding:.15rem .6rem;border-radius:10px;
}
.ls-chat-conv-list{overflow-y:auto;flex:1}
.ls-chat-conv-list::-webkit-scrollbar{width:6px}
.ls-chat-conv-list::-webkit-scrollbar-thumb{background:var(--ls-gray-200);border-radius:3px}

.ls-chat-conv-item{
    display:flex;align-items:center;gap:.75rem;padding:.85rem 1.25rem;
    cursor:pointer;border-bottom:1px solid var(--ls-gray-50);
    position:relative;transition:background .15s;
}
.ls-chat-conv-item:hover{background:var(--ls-gray-50)}
.ls-chat-conv-item.active{
    background:var(--ls-primary-subtle);
    border-left:3px solid var(--ls-primary);
}
.ls-chat-conv-avatar{
    width:44px;height:44px;border-radius:50%;flex-shrink:0;
    background:linear-gradient(135deg,var(--ls-primary-light),var(--ls-primary));
    display:flex;align-items:center;justify-content:center;
    color:#fff;font-family:var(--ls-font-display);font-weight:700;font-size:.95rem;
}
.ls-chat-conv-info{flex:1;min-width:0}
.ls-chat-conv-name{
    font-weight:600;color:var(--ls-gray-800);font-size:.9rem;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ls-chat-conv-listing{
    font-size:.75rem;color:var(--ls-gray-500);margin-top:.15rem;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ls-chat-conv-time{font-size:.7rem;color:var(--ls-gray-400);flex-shrink:0}
.ls-chat-unread{
    position:absolute;right:1.1rem;top:50%;transform:translateY(-50%);
    background:var(--ls-primary);color:#fff;
    font-size:.65rem;font-weight:700;min-width:18px;height:18px;
    border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0 5px;
}

.ls-chat-main{
    background:#fff;border:1px solid var(--ls-gray-100);
    border-radius:var(--ls-r-lg);box-shadow:var(--ls-shadow-sm);
    display:flex;flex-direction:column;overflow:hidden;min-height:500px;
}
.ls-chat-placeholder{
    flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
    color:var(--ls-gray-400);gap:1rem;padding:2rem;
}
.ls-chat-placeholder svg{width:56px;height:56px;opacity:.4}
.ls-chat-placeholder p{font-family:var(--ls-font-body);font-size:.95rem;font-weight:500;margin:0}

.ls-chat-header{
    padding:1rem 1.25rem;border-bottom:1px solid var(--ls-gray-100);
    display:flex;align-items:center;gap:.85rem;
}
.ls-chat-header-avatar{
    width:42px;height:42px;border-radius:50%;flex-shrink:0;
    background:linear-gradient(135deg,var(--ls-primary-light),var(--ls-primary));
    display:flex;align-items:center;justify-content:center;
    color:#fff;font-family:var(--ls-font-display);font-weight:700;font-size:.95rem;
}
.ls-chat-header-name{
    font-family:var(--ls-font-display);font-weight:700;font-size:1rem;color:var(--ls-gray-800);
}
.ls-chat-header-sub{font-size:.78rem;color:var(--ls-gray-500);margin-top:.1rem}

.ls-chat-msgs{
    flex:1;overflow-y:auto;padding:1.1rem 1.25rem;
    display:flex;flex-direction:column;gap:.55rem;
}
.ls-chat-msgs::-webkit-scrollbar{width:6px}
.ls-chat-msgs::-webkit-scrollbar-thumb{background:var(--ls-gray-200);border-radius:3px}

.ls-chat-mwrap{display:flex;flex-direction:column;max-width:72%}
.ls-chat-mwrap.mine{align-self:flex-end;align-items:flex-end}
.ls-chat-mwrap.other{align-self:flex-start;align-items:flex-start}

.ls-chat-bubble{
    padding:.65rem 1rem;border-radius:16px;
    font-family:var(--ls-font-body);font-size:.9rem;line-height:1.45;
    word-break:break-word;
}
.ls-chat-bubble.mine{
    background:var(--ls-primary);color:#fff;border-bottom-right-radius:4px;
}
.ls-chat-bubble.other{
    background:var(--ls-gray-100);color:var(--ls-gray-800);border-bottom-left-radius:4px;
}
.ls-chat-mmeta{
    font-size:.7rem;color:var(--ls-gray-400);margin-top:.22rem;
    display:flex;align-items:center;gap:.35rem;
}
.ls-chat-tick{font-size:.78rem;color:var(--ls-primary-light)}
.ls-chat-tick.read{color:var(--ls-primary);font-weight:700}

.ls-chat-input-area{
    padding:.85rem 1.25rem;border-top:1px solid var(--ls-gray-100);
    display:flex;gap:.6rem;align-items:flex-end;
}
.ls-chat-textarea{
    flex:1;resize:none;border:1.5px solid var(--ls-gray-200);
    border-radius:var(--ls-r-md);padding:.65rem .85rem;
    font-family:var(--ls-font-body);font-size:.9rem;line-height:1.4;
    outline:none;transition:border-color .2s;max-height:120px;
}
.ls-chat-textarea:focus{border-color:var(--ls-primary);box-shadow:0 0 0 3px rgba(13,148,136,.12)}
.ls-chat-send{
    padding:.65rem 1.15rem;border-radius:var(--ls-r-md);border:none;
    background:var(--ls-primary);color:#fff;font-weight:600;font-size:.88rem;
    cursor:pointer;display:flex;align-items:center;gap:.35rem;flex-shrink:0;
    transition:all .2s;
}
.ls-chat-send:hover{background:var(--ls-primary-hover);transform:translateY(-1px);box-shadow:var(--ls-shadow-purple)}
.ls-chat-send:disabled{opacity:.5;cursor:default;transform:none;box-shadow:none}
.ls-chat-send svg{width:16px;height:16px}
.ls-chat-fb{padding:.35rem 1.25rem;font-size:.78rem;min-height:1.3rem}
.ls-chat-fb.err{color:var(--ls-error)}
.ls-chat-fb.ok{color:#10b981}

@media(max-width:820px){
    .ls-chat-grid{grid-template-columns:1fr}
    .ls-chat-sidebar{max-height:320px}
}

/* ============ Checkout ============ */
.ls-checkout-page{
    background:var(--ls-gray-50);min-height:calc(100vh - 64px);
    padding:2.5rem 1.5rem 4rem;font-family:var(--ls-font-body);
}
.ls-checkout-wrap{
    max-width:1100px;margin:0 auto;
    display:grid;grid-template-columns:1.4fr 1fr;gap:2rem;
}
.ls-checkout-steps{
    display:flex;gap:.5rem;align-items:center;margin-bottom:1.5rem;
    font-family:var(--ls-font-body);font-size:.82rem;color:var(--ls-gray-500);
}
.ls-checkout-step{
    display:flex;align-items:center;gap:.4rem;
}
.ls-checkout-step-num{
    width:24px;height:24px;border-radius:50%;
    background:var(--ls-gray-200);color:var(--ls-gray-500);
    display:flex;align-items:center;justify-content:center;
    font-weight:700;font-size:.78rem;
}
.ls-checkout-step.active .ls-checkout-step-num{
    background:var(--ls-primary);color:#fff;
}
.ls-checkout-step.active{color:var(--ls-primary);font-weight:600}
.ls-checkout-step-sep{width:24px;height:1px;background:var(--ls-gray-300)}

.ls-checkout-card{
    background:#fff;border:1px solid var(--ls-gray-100);
    border-radius:var(--ls-r-lg);padding:1.75rem;
    box-shadow:var(--ls-shadow-sm);margin-bottom:1.25rem;
}
.ls-checkout-card h3{
    font-family:var(--ls-font-display);font-size:1.1rem;font-weight:700;
    color:var(--ls-gray-800);margin:0 0 1rem;
}
.ls-checkout-summary{
    position:sticky;top:80px;height:fit-content;
}
.ls-checkout-listing{
    display:flex;gap:.85rem;align-items:flex-start;
    padding-bottom:1rem;border-bottom:1px solid var(--ls-gray-100);margin-bottom:1rem;
}
.ls-checkout-thumb{
    width:70px;height:70px;border-radius:var(--ls-r-md);overflow:hidden;flex-shrink:0;
    background:var(--ls-primary-subtle);
    display:flex;align-items:center;justify-content:center;font-size:1.5rem;
}
.ls-checkout-thumb img{width:100%;height:100%;object-fit:cover}
.ls-sum-row{
    display:flex;justify-content:space-between;font-size:.9rem;
    color:var(--ls-gray-700);padding:.35rem 0;
}
.ls-sum-row.total{
    border-top:1px solid var(--ls-gray-100);margin-top:.5rem;padding-top:.75rem;
    font-family:var(--ls-font-display);font-weight:700;font-size:1.1rem;color:var(--ls-gray-800);
}
.ls-sum-row.total .ls-sum-val{color:var(--ls-primary);font-size:1.25rem}
.ls-sum-val{font-weight:600}

.ls-pay-methods{
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;margin-bottom:1.25rem;
}
.ls-pay-method{
    border:1.5px solid var(--ls-gray-200);background:#fff;border-radius:var(--ls-r-md);
    padding:.9rem .6rem;cursor:pointer;user-select:none;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;
    font-family:var(--ls-font-body);font-weight:600;font-size:.88rem;color:var(--ls-gray-700);
    transition:all .18s ease;
}
.ls-pay-method:hover{border-color:var(--ls-primary-light);transform:translateY(-1px)}
.ls-pay-method-icon{font-size:1.4rem;line-height:1}
.ls-pay-method.active{
    border-color:var(--ls-primary);background:var(--ls-primary-subtle);color:var(--ls-primary);
    box-shadow:0 0 0 3px rgba(13,148,136,.12);
}
.ls-pay-deposit{
    margin-top:1rem;display:flex;gap:.9rem;align-items:flex-start;
    background:#fffbeb;border:1px solid #fde68a;border-radius:var(--ls-r-md);
    padding:1rem 1.1rem;
}
.ls-pay-deposit-icon{font-size:1.5rem;line-height:1;flex-shrink:0}
.ls-pay-deposit-label{font-weight:700;color:#b45309;font-size:.88rem;margin-bottom:.2rem}
.ls-pay-deposit-amount{
    font-family:var(--ls-font-display);font-weight:700;font-size:1.3rem;color:#92400e;line-height:1;margin-bottom:.35rem;
}
.ls-pay-deposit-note{font-size:.8rem;color:#78350f;line-height:1.5}
.ls-pay-deposit-tag{
    display:inline-flex;align-items:center;gap:.25rem;
    background:#fde68a;color:#78350f;font-weight:700;font-size:.7rem;
    border-radius:999px;padding:.15rem .6rem;margin-top:.4rem;
}
.ls-sum-row.deposit{color:#b45309}
.ls-sum-row.deposit .ls-sum-val{color:#92400e}
.ls-sum-note{font-size:.75rem;color:var(--ls-gray-400);margin-top:.4rem;line-height:1.5}
.ls-pay-bar{
    display:flex;gap:1rem;align-items:center;justify-content:space-between;
    flex-wrap:wrap;margin-top:1rem;
}
.ls-pay-status{font-weight:600;font-size:.9rem;color:var(--ls-gray-600)}
.ls-pay-status.ok{color:var(--ls-success-dark)}
.ls-pay-status.err{color:var(--ls-error)}
.ls-pay-spinner{
    display:inline-block;width:14px;height:14px;border-radius:50%;
    border:2px solid var(--ls-gray-200);border-top-color:var(--ls-primary);
    animation:lsPaySpin .8s linear infinite;vertical-align:-2px;margin-right:.4rem;
}
@keyframes lsPaySpin{to{transform:rotate(360deg)}}
.ls-pay-note{
    font-size:.82rem;color:var(--ls-gray-500);line-height:1.5;margin-top:.75rem;
}
.ls-checkout-intro{
    color:var(--ls-gray-500);font-size:.9rem;line-height:1.55;margin-bottom:1rem;
}

@media(max-width:900px){
    .ls-checkout-wrap{grid-template-columns:1fr}
    .ls-checkout-summary{position:static}
    .ls-pay-methods{grid-template-columns:1fr}
}

/* ============ Global responsive refinements ============ */
@media(max-width:900px){
    .ls-hero{padding:3.5rem 1.25rem 3rem}
    .ls-hero-desc{font-size:.98rem}
    .ls-hero-ctas{margin-bottom:2rem}
    .ls-hero-search{flex-direction:column;padding:.75rem;gap:.3rem;border-radius:var(--ls-r-lg)}
    .ls-hero-search-field{width:100%;padding:.6rem .85rem}
    .ls-hero-search-divider{display:none}
    .ls-hero-search-btn{width:100%;justify-content:center;margin:.3rem 0 0}
    .ls-stats-bar{gap:1.5rem;padding:1.75rem 1.25rem}
    .ls-stats-bar .ls-stat-num{font-size:2rem}
    .ls-stats-bar .ls-stat-label{font-size:.85rem}
    .ls-section{padding:3rem 1.25rem}
}
@media(max-width:600px){
    .ls-hero{padding:2.75rem 1rem 2.25rem}
    .ls-hero-tag{font-size:.68rem;padding:.3rem .8rem;margin-bottom:1rem}
    .ls-hero-title{margin-bottom:1rem}
    .ls-hero-btn-primary,.ls-hero-btn-outline{width:100%;justify-content:center}
    .ls-stats-bar{flex-direction:row;gap:1rem;flex-wrap:wrap}
    .ls-stats-bar .ls-stat{flex:1 1 40%;min-width:120px}
    .ls-section{padding:2.5rem 1rem}
}

/* Evita orizzontal overflow generico */
html,body{overflow-x:hidden}
img{max-width:100%;height:auto}

