/* =============================================================
   LocaSpace — Stili di pagina estratti dagli inline
   Complementare a ls-design.css. Raccoglie le classi utility
   e le classi specifiche dei blocchi di pagina usate nei vari
   file PHP del progetto.
   ============================================================= */

/* ============ Utility di layout ============ */
.ls-u-relative          { position: relative; }
.ls-u-z1                { z-index: 1; }
.ls-u-hero-content      { position: relative; z-index: 1; }
.ls-u-text-center       { text-align: center; }
.ls-u-center-x          { margin-left: auto; margin-right: auto; }
.ls-u-hidden            { display: none !important; }
.ls-u-flex              { display: flex; }
.ls-u-flex-center       { display: flex; align-items: center; justify-content: center; }
.ls-u-flex-col          { display: flex; flex-direction: column; }
.ls-u-gap-sm            { gap: .5rem; }
.ls-u-gap-md            { gap: 1rem; }
.ls-u-gap-lg            { gap: 1.5rem; }

/* ============ Utility di spaziatura ============ */
.ls-u-mt-sm             { margin-top: .5rem; }
.ls-u-mt-md             { margin-top: 1rem; }
.ls-u-mt-lg             { margin-top: 2.5rem; }
.ls-u-mb-xs             { margin-bottom: .75rem; }
.ls-u-mb-sm             { margin-bottom: 1rem; }
.ls-u-mb-md             { margin-bottom: 1.75rem; }
.ls-u-mb-lg             { margin-bottom: 2rem; }
.ls-u-p-0               { padding: 0; }

/* ============ Utility di sfondo ============ */
.ls-u-bg-white          { background: #fff; }
.ls-u-bg-gray-50        { background: var(--ls-gray-50); }
.ls-u-bg-purple-50      { background: var(--ls-purple-50); }

/* ============ Sezioni generiche ============ */
.ls-section-plain {
    background: #fff;
}
.ls-section-muted {
    background: var(--ls-gray-50);
}
.ls-section-cta {
    background: var(--ls-purple-50);
    padding: 4rem 2rem;
    text-align: center;
}
.ls-section-cta__inner {
    max-width: 720px;
    margin: 0 auto;
}

/* ============ Blocco "Contattaci" (hero help) ============ */
.ls-help-tag {
    color: var(--ls-purple-400);
    background: rgba(13, 148, 136, .18);
    padding: .4rem 1rem;
    border-radius: var(--ls-r-full);
}
.ls-help-title {
    font-family: var(--ls-font-display);
    color: #fff;
    font-size: clamp(1.75rem, 3.6vw, 2.25rem);
    font-weight: 700;
    margin: 1rem 0;
    line-height: 1.2;
}
.ls-help-title__accent {
    color: var(--ls-purple-400);
}
.ls-help-desc {
    color: rgba(255, 255, 255, .72);
    line-height: 1.7;
    margin-bottom: 2rem;
    font-family: var(--ls-font-body);
}

/* ============ Logo compatto (footer) ============ */
.ls-logo-text--sm {
    font-size: 1.1rem;
}

/* ============ Dropdown city ============ */
.sb-city-item--empty {
    color: #9ca3af;
    pointer-events: none;
}

/* ============ Feedback messaggio inviato ============ */
.ls-form-success {
    color: #6ee7b7;
    text-align: center;
    padding: 2rem;
    font-weight: 700;
    font-size: 1rem;
}

/* ============ Utility aggiuntive ============ */
.ls-is-hidden           { display: none !important; }
.ls-mr-xs               { margin-right: .35rem; }
.ls-mt-xs               { margin-top: .6rem; }

/* Griglia a due colonne riutilizzata in molti form */
.ls-grid-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .85rem;
}

/* Anteprima foto nei form */
.ls-preview-img {
    width: 100%;
    max-height: 200px;
    object-fit: cover;
    border-radius: 8px;
}

/* Modale più stretta (conferme) */
.ls-modal--sm { max-width: 420px; }

/* Testo descrittivo dentro la modale */
.ls-modal-text {
    color: var(--ls-gray-700);
    line-height: 1.55;
    margin: 0;
}

/* Row che esce dalla vista (uscita morbida) */
.ls-row-removing {
    transition: all .3s;
    opacity: 0;
    transform: translateX(30px);
}

/* ============ Testi colorati ============ */
.ls-text-error   { color: var(--ls-error);   }
.ls-text-success { color: var(--ls-success); }

/* ============ Spazi aggiuntivi per form ============ */
.ls-mt-section   { margin-top: 2rem;   }
.ls-mt-section-sm{ margin-top: 1.5rem; }

/* ============ Campo CAP / Unità stretto ============ */
.ls-wiz-field--sm { max-width: 160px; }

/* ============ Mappa nel wizard ============ */
.ls-wiz-map {
    width: 100%;
    height: 260px;
    border-radius: var(--ls-r-lg);
    overflow: hidden;
    border: 1px solid var(--ls-gray-200);
}

.ls-map-picker-wrap { position: relative; }
.ls-locate-btn {
    position: absolute;
    top: .6rem;
    right: .6rem;
    z-index: 500;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .45rem .7rem;
    background: #fff;
    border: 1px solid var(--ls-gray-200);
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 600;
    color: var(--ls-purple-700);
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(0,0,0,.08);
    transition: transform .15s ease, background .15s ease;
}
.ls-locate-btn:hover { background: var(--ls-purple-50); transform: translateY(-1px); }

/* ============ Opzioni di disponibilità (3 card radio) ============ */
.ls-avail-options {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: .65rem;
}
.ls-avail-option {
    cursor: pointer;
    padding: .9rem 1rem;
    border: 1.5px solid var(--ls-gray-200);
    border-radius: var(--ls-r-lg);
    background: #fff;
    transition: border-color .18s, background .18s, box-shadow .18s, transform .18s;
    display: flex;
    align-items: flex-start;
    gap: .65rem;
}
.ls-avail-option input[type="radio"] {
    margin-top: .25rem;
    accent-color: var(--ls-primary);
}
.ls-avail-opt-body {
    display: flex; flex-direction: column; gap: .15rem;
}
.ls-avail-opt-body strong {
    font-family: var(--ls-font-body);
    font-size: .95rem;
    color: var(--ls-gray-900);
    font-weight: 700;
}
.ls-avail-opt-body small {
    color: var(--ls-gray-600);
    font-size: .78rem;
    line-height: 1.35;
}
.ls-avail-option:hover {
    border-color: var(--ls-purple-400);
    background: var(--ls-purple-50);
}
.ls-avail-option:has(input:checked) {
    border-color: var(--ls-primary);
    background: var(--ls-purple-50);
    box-shadow: 0 0 0 3px rgba(13,148,136,.12);
}

/* ============ Selettore giorni disponibilità parziale ============ */
.ls-day-picker {
    margin-top: 1rem;
    padding: 1rem;
    background: var(--ls-purple-50);
    border: 1px solid var(--ls-purple-100, #e9d5ff);
    border-radius: var(--ls-r-lg);
}
.ls-day-picker-hint {
    font-size: .85rem;
    color: var(--ls-gray-700);
    margin: 0 0 .7rem 0;
}
.ls-day-picker-grid {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}
.ls-day-chip {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 56px;
    padding: .5rem .9rem;
    background: #fff;
    border: 1.5px solid var(--ls-gray-200);
    border-radius: 999px;
    font-weight: 600;
    font-size: .85rem;
    cursor: pointer;
    user-select: none;
    transition: all .15s ease;
}
.ls-day-chip input { position: absolute; opacity: 0; pointer-events: none; }
.ls-day-chip:hover { border-color: var(--ls-purple-400); }
.ls-day-chip:has(input:checked) {
    background: var(--ls-purple-600);
    border-color: var(--ls-purple-600);
    color: #fff;
}

/* ============ Box campi mancanti prima di pubblicare ============ */
.ls-wiz-missing {
    margin-top: 1.2rem;
    padding: 1rem 1.1rem;
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-left: 4px solid var(--ls-error);
    border-radius: var(--ls-r-md);
    color: #7f1d1d;
    font-size: .9rem;
}
.ls-wiz-missing strong { display: block; margin-bottom: .4rem; color: #991b1b; }
.ls-wiz-missing ul { margin: 0; padding-left: 1.2rem; }
.ls-wiz-missing li { margin: .2rem 0; }

/* ============ Mappa su view_space ============ */
.ls-vs-map {
    width: 100%;
    height: 360px;
    border-radius: var(--ls-r-lg);
    overflow: hidden;
    border: 1px solid var(--ls-gray-200);
}

/* ============ Nota in bold ============ */
.ls-booking-note--bold { font-weight: 600; }

/* ============ Margin-top piccolo ============ */
.ls-mt-1rem { margin-top: 1rem; }

/* ============ Avviso disponibilità (parziale/su-richiesta/occupato) ============ */
.ls-avail-notice {
    display: flex;
    gap: .9rem;
    align-items: flex-start;
    padding: 1rem 1.1rem;
    border-radius: var(--ls-r-lg);
    margin-bottom: 1rem;
    border: 1px solid transparent;
}
.ls-avail-notice-ico {
    width: 42px; height: 42px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.3rem;
    flex-shrink: 0;
    background: #fff;
}
.ls-avail-notice strong {
    display: block;
    font-family: var(--ls-font-display);
    font-weight: 700;
    font-size: 1rem;
    color: var(--ls-gray-900);
    margin-bottom: .2rem;
}
.ls-avail-notice p {
    margin: .2rem 0 0;
    font-size: .87rem;
    color: var(--ls-gray-700);
    line-height: 1.45;
}
.ls-avail-notice--partial {
    background: var(--ls-purple-50);
    border-color: var(--ls-purple-200, #99f6e4);
}
.ls-avail-notice--request {
    background: #fff8eb;
    border-color: #fde68a;
}
.ls-avail-notice--busy {
    background: #fef2f2;
    border-color: #fecaca;
}
.ls-avail-day-pills {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    margin-top: .55rem;
}
.ls-avail-day-pill {
    min-width: 44px;
    padding: .3rem .6rem;
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 700;
    text-align: center;
    font-family: var(--ls-font-body);
}
.ls-avail-day-pill.is-on {
    background: var(--ls-primary);
    color: #fff;
    box-shadow: 0 2px 6px rgba(13,148,136,.25);
}
.ls-avail-day-pill.is-off {
    background: #fff;
    color: var(--ls-gray-400);
    text-decoration: line-through;
    border: 1px solid var(--ls-gray-200);
}

/* ============ Celle calendario fuori dai giorni ammessi (settimana) ============ */
.flatpickr-day.day-not-weekly {
    color: var(--ls-gray-400) !important;
    background: var(--ls-gray-50) !important;
    cursor: not-allowed;
}

/* ============ Celle calendario già prenotate ============ */
.flatpickr-day.booked-slot {
    background: repeating-linear-gradient(
        45deg,
        rgba(239, 68, 68, .14) 0 6px,
        rgba(239, 68, 68, .22) 6px 12px
    ) !important;
    color: #b91c1c !important;
    border-radius: 6px;
    text-decoration: line-through;
    text-decoration-thickness: 2px;
    font-weight: 700;
    position: relative;
    cursor: not-allowed;
    opacity: 1 !important;
}
.flatpickr-day.booked-slot:hover {
    background: rgba(239, 68, 68, .28) !important;
}
.flatpickr-day.booked-slot::after {
    content: "";
    position: absolute;
    bottom: 3px;
    left: 50%;
    transform: translateX(-50%);
    width: 5px; height: 5px;
    border-radius: 50%;
    background: var(--ls-error);
}

/* Calendario a due mesi — layout affiancato con più aria */
.ls-avail-calendar-wrap {
    background: #fff;
    border: 1px solid var(--ls-gray-200);
    border-radius: var(--ls-r-lg);
    padding: 1rem;
    box-shadow: 0 2px 8px -2px rgba(15,23,42,.05);
}
.ls-avail-calendar-wrap .flatpickr-calendar.inline {
    display: flex !important;
    gap: 1.5rem;
    width: 100% !important;
    max-width: 100%;
    box-shadow: none;
    border: none;
    padding: 0;
    background: transparent;
}
.ls-avail-calendar-wrap .flatpickr-calendar.multiMonth .flatpickr-months {
    background: transparent;
}
.ls-avail-calendar-wrap .flatpickr-month {
    padding: .35rem 0 .55rem;
    color: var(--ls-gray-800);
    font-weight: 700;
}
.ls-avail-calendar-wrap .flatpickr-weekdays {
    margin-top: .25rem;
}
.ls-avail-calendar-wrap .flatpickr-weekday {
    font-weight: 700;
    color: var(--ls-gray-500);
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.ls-avail-calendar-wrap .flatpickr-day {
    border-radius: 8px;
    font-weight: 500;
    transition: background-color .12s, color .12s;
}
.ls-avail-calendar-wrap .flatpickr-day.today {
    border: 1.5px solid var(--ls-primary);
    color: var(--ls-primary);
    font-weight: 700;
}
@media (max-width: 720px) {
    .ls-avail-calendar-wrap .flatpickr-calendar.inline {
        display: block !important;
    }
    .ls-avail-calendar-wrap { padding: .75rem; }
}

/* Booking sidebar — date range picker due mesi */
.flatpickr-calendar.multiMonth {
    width: auto !important;
    max-width: 95vw;
}
.flatpickr-calendar.multiMonth .flatpickr-day {
    border-radius: 6px;
}
.flatpickr-calendar .flatpickr-day.inRange,
.flatpickr-calendar .flatpickr-day.startRange,
.flatpickr-calendar .flatpickr-day.endRange {
    background: var(--ls-primary) !important;
    color: #fff !important;
    border-color: var(--ls-primary) !important;
}
.flatpickr-calendar .flatpickr-day.inRange {
    background: rgba(13,148,136,.2) !important;
    color: var(--ls-primary) !important;
    border-color: transparent !important;
}

/* Legenda calendario */
.ls-cal-legend {
    display: flex; gap: 1.2rem; flex-wrap: wrap;
    font-size: .82rem; color: var(--ls-gray-600);
    margin-top: .6rem;
}
.ls-cal-legend-dot {
    display: inline-block; width: 10px; height: 10px;
    border-radius: 50%; margin-right: .4rem; vertical-align: middle;
}
.ls-cal-legend-dot.free { background: var(--ls-success); }
.ls-cal-legend-dot.booked { background: var(--ls-error); }
.ls-cal-legend-dot.off { background: var(--ls-gray-300); }

/* ============ Contenitore pagina form stretta ============ */
.ls-page-form {
    max-width: 720px;
    margin: 0 auto;
    padding: 2.5rem 1.5rem 4rem;
}

/* ============ Link "← Torna indietro" ============ */
.ls-back-link {
    color: var(--ls-primary);
    font-weight: 600;
    font-size: .88rem;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    margin-bottom: 1.25rem;
}

/* ============ Pulsante "Indietro" (universale) ============ */
.ls-back-btn {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    background: #fff;
    color: var(--ls-gray-700);
    border: 1.5px solid var(--ls-gray-200);
    border-radius: var(--ls-r-full);
    padding: .45rem 1rem .45rem .8rem;
    font-family: var(--ls-font-body);
    font-weight: 600;
    font-size: .86rem;
    text-decoration: none;
    cursor: pointer;
    transition: all .18s ease;
    margin-bottom: 1.25rem;
    box-shadow: var(--ls-shadow-sm);
}
.ls-back-btn:hover {
    border-color: var(--ls-primary);
    color: var(--ls-primary);
    background: var(--ls-primary-subtle);
    transform: translateX(-2px);
}
.ls-back-btn svg { flex-shrink: 0; }

/* Variante flottante per pagine auth (login/register a piena pagina) */
.ls-back-btn--floating {
    position: fixed;
    top: 1.25rem;
    left: 1.25rem;
    z-index: 100;
    background: rgba(255,255,255,.92);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}
@media (max-width: 640px) {
    .ls-back-btn--floating {
        top: .85rem;
        left: .85rem;
        padding: .4rem .75rem .4rem .55rem;
        font-size: .78rem;
    }
}

/* ============ Sottotitolo chiaro sotto H1 ============ */
.ls-subtitle {
    color: var(--ls-gray-500);
    margin-bottom: 2rem;
}

/* ============ Titolo compatto (margin ridotto) ============ */
.ls-h2--tight { margin-bottom: .4rem; }

/* ============ Card form con padding ============ */
.ls-dash-card--form {
    padding: 2rem;
    margin-bottom: 0;
}

/* ============ Input in sola lettura (disabled) ============ */
.ls-input--readonly {
    background: var(--ls-gray-100);
    color: var(--ls-gray-500);
}

/* ============ Griglia 2 colonne con gap ampio ============ */
.ls-grid-2-lg {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

/* ============ Riga bottoni azioni form ============ */
.ls-form-actions {
    display: flex;
    gap: .75rem;
    margin-top: 1.5rem;
}
.ls-form-actions > .ls-btn-primary,
.ls-form-actions > .ls-btn-secondary {
    flex: 1;
    text-align: center;
    justify-content: center;
    text-decoration: none;
}

/* ============ Card impostazioni / sezione ============ */
.ls-card-section {
    padding: 2rem;
    margin-bottom: 1rem;
}
.ls-card-section:last-child { margin-bottom: 0; }

/* ============ Titolo sezione con margine ridotto ============ */
.ls-section-title--tight { margin-bottom: 1rem; }
.ls-section-title--danger {
    margin-bottom: 1rem;
    color: var(--ls-error);
}

/* ============ Nota chiara / muted ============ */
.ls-muted-note {
    color: var(--ls-gray-500);
    font-size: .88rem;
}
.ls-muted-note--mb { margin-bottom: 1rem; }

/* ============ Voce dashboard con margin ridotto ============ */
.ls-dash-nav-item--tight { margin-bottom: .35rem; }

/* ============ Bottone "pericolo" bordato ============ */
.ls-btn-danger-outline {
    color: var(--ls-error);
    border-color: var(--ls-error-light);
}

/* ============ Input con spazio per icona toggle ============ */
.ls-input--with-toggle { padding-right: 2.6rem; }

/* ============ Header riga (titolo + azione) ============ */
.ls-page-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.5rem;
    flex-wrap: wrap;
}
.ls-page-head > .ls-h2 { margin: 0; }

/* ============ Bottone piccolo ============ */
.ls-btn-sm { font-size: .85rem; }

/* ============ Notifica: struttura interna ============ */
.ls-notif-item--link {
    text-decoration: none;
    color: inherit;
}
.ls-notif-body { flex: 1; }
.ls-notif-title {
    font-weight: 600;
    color: var(--ls-gray-800);
}

/* ============ Pagina lista ampia (grid 1200) ============ */
.ls-page-list {
    max-width: 1200px;
    margin: 0 auto;
    padding: 2.5rem 1.5rem 4rem;
}

/* ============ Link primario inline ============ */
.ls-link-primary--inline {
    color: var(--ls-primary);
    font-weight: 600;
    text-decoration: none;
    margin-top: 1rem;
    display: inline-block;
}

/* ============ Card listing preferiti: link integrale ============ */
.ls-listing-card-link {
    text-decoration: none;
    color: inherit;
    display: block;
}

/* ============ Bottone "rimuovi preferito" sopra card ============ */
.ls-fav-remove {
    position: absolute;
    top: .75rem;
    right: .75rem;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, .95);
    border: none;
    border-radius: 50%;
    cursor: pointer;
    font-size: 1rem;
    color: var(--ls-error);
    box-shadow: 0 2px 8px rgba(0, 0, 0, .15);
    transition: all .2s;
}
.ls-fav-remove:hover { transform: scale(1.08); }

/* ============ Mini utility ============ */
.ls-mt-2   { margin-top: .4rem; }
.ls-u-link-plain { text-decoration: none; }

/* ============ Titolo con margin-bottom ampio ============ */
.ls-h2--mb-lg { margin-bottom: 1.25rem; }

/* ============ Stati della lista chat ============ */
.ls-chat-loading {
    padding: 2rem;
    text-align: center;
    color: var(--ls-gray-400);
    font-size: .88rem;
}
.ls-chat-empty {
    padding: 2.5rem 1.5rem;
    text-align: center;
    color: var(--ls-gray-400);
}
.ls-chat-empty > p {
    margin: 0;
    font-size: .9rem;
}
.ls-chat-err {
    padding: 2rem;
    text-align: center;
    color: var(--ls-error);
    font-size: .88rem;
}

/* ============ Privacy page ============ */
.ls-privacy-page {
    background: var(--ls-gray-50);
    min-height: calc(100vh - var(--ls-nav-h));
    padding: 3rem 1.25rem 5rem;
}
.ls-privacy-container {
    max-width: 760px;
    margin: 0 auto;
}
.ls-privacy-header {
    margin-bottom: 2.5rem;
}
.ls-privacy-updated {
    font-family: var(--ls-font-body);
    font-size: .85rem;
    color: var(--ls-gray-400);
    margin-top: .5rem;
}
.ls-privacy-body {
    background: #fff;
    border-radius: var(--ls-r-xl);
    border: 1px solid var(--ls-gray-200);
    padding: 2.5rem 2.75rem;
    box-shadow: var(--ls-shadow-sm);
}
.ls-privacy-section {
    margin-bottom: 2.25rem;
    padding-bottom: 2.25rem;
    border-bottom: 1px solid var(--ls-gray-100);
}
.ls-privacy-section:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
}
.ls-privacy-section h2 {
    font-family: var(--ls-font-display);
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--ls-gray-800);
    margin-bottom: .85rem;
}
.ls-privacy-section p,
.ls-privacy-section li {
    font-family: var(--ls-font-body);
    font-size: .95rem;
    color: var(--ls-gray-600);
    line-height: 1.75;
}
.ls-privacy-section ul {
    padding-left: 1.4rem;
    margin-top: .5rem;
}
.ls-privacy-section li {
    margin-bottom: .4rem;
}
.ls-privacy-section a {
    color: var(--ls-primary);
    text-decoration: none;
    font-weight: 600;
}
.ls-privacy-section a:hover {
    text-decoration: underline;
}
@media (max-width: 600px) {
    .ls-privacy-body { padding: 1.5rem 1.25rem; }
}

/* ============ Riempi il contenitore (100% × 100%) ============ */
.ls-u-fill {
    width: 100%;
    height: 100%;
}

/* ============ Sezione filtro con margin top ============ */
.ls-filter-section--mt { margin-top: 1rem; }

/* ============ Checkout: wrapper interno ============ */
.ls-checkout-container {
    max-width: 1100px;
    margin: 0 auto;
}

/* ============ Bottone "Nuovo annuncio" (profile) ============ */
.ls-btn-new-listing {
    display: inline-flex;
    align-items: center;
    gap: .7rem;
    padding: .7rem 1.35rem .7rem .7rem;
    background: linear-gradient(135deg, var(--ls-purple-600), var(--ls-purple-700));
    color: #fff;
    border: none;
    border-radius: 999px;
    font-family: var(--ls-font-body);
    font-weight: 700;
    font-size: .95rem;
    letter-spacing: .01em;
    text-decoration: none;
    cursor: pointer;
    box-shadow: 0 6px 18px rgba(13, 148, 136, .28), inset 0 1px 0 rgba(255, 255, 255, .18);
    transition: transform .18s ease, box-shadow .22s ease, background .22s ease;
}
.ls-btn-new-listing__plus {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .22);
    backdrop-filter: blur(6px);
    flex-shrink: 0;
}
.ls-btn-new-listing:hover {
    transform: translateY(-2px);
    color: #fff;
    box-shadow: 0 10px 26px rgba(13, 148, 136, .38), inset 0 1px 0 rgba(255, 255, 255, .28);
}
.ls-btn-new-listing:active { transform: translateY(0); }

/* ============ Azioni annuncio (Modifica/Visualizza/Elimina) ============ */
.ls-prop-actions { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
.ls-prop-action-btn {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .5rem .85rem;
    background: #fff;
    color: var(--ls-gray-700);
    border: 1.5px solid var(--ls-gray-200);
    border-radius: 10px;
    font-family: var(--ls-font-body);
    font-weight: 600;
    font-size: .82rem;
    cursor: pointer;
    transition: all .18s ease;
}
.ls-prop-action-btn svg {
    width: 15px; height: 15px; flex-shrink: 0; display: block;
    stroke: currentColor;
}
.ls-prop-action-btn:hover {
    border-color: var(--ls-primary);
    color: var(--ls-primary);
    background: var(--ls-primary-subtle);
    transform: translateY(-1px);
}
.ls-prop-action-btn.primary {
    background: var(--ls-primary);
    color: #fff;
    border-color: var(--ls-primary);
}
.ls-prop-action-btn.primary:hover {
    background: var(--ls-primary-hover);
    color: #fff;
    box-shadow: 0 4px 12px rgba(13, 148, 136, .28);
}
.ls-prop-action-btn.danger {
    color: var(--ls-error);
    border-color: #fecaca;
}
.ls-prop-action-btn.danger:hover {
    background: var(--ls-error-light);
    border-color: var(--ls-error);
    color: var(--ls-error-dark);
}
@media (max-width: 640px) {
    .ls-prop-action-btn span { display: none; }
    .ls-prop-action-btn { padding: .5rem; width: 36px; height: 36px; justify-content: center; }
}

/* ============ Titolo compatto (mb ridotto) ============ */
.ls-h2--mb-sm { margin-bottom: .5rem; }

/* ============ Card listing del riepilogo checkout ============ */
.ls-checkout-listing-body {
    flex: 1;
    min-width: 0;
}
.ls-checkout-listing-title {
    font-family: var(--ls-font-display);
    font-weight: 700;
    font-size: 1rem;
    color: var(--ls-gray-800);
    line-height: 1.3;
    margin-bottom: .25rem;
}
.ls-checkout-listing-meta {
    font-size: .82rem;
    color: var(--ls-gray-500);
    line-height: 1.4;
}

/* ============ Riga riepilogo con bordo superiore ============ */
.ls-sum-row--divider {
    border-top: 1px solid var(--ls-gray-100);
    padding-top: .75rem;
    margin-top: .5rem;
}

/* ============ Bottone checkout principale ============ */
.ls-btn--checkout {
    flex: 1;
    min-width: 220px;
}

/* ============ Varianti alert (register) ============ */
.ls-alert--mb { margin-bottom: 1rem; }
.ls-alert-link {
    color: inherit;
    text-decoration: underline;
    font-weight: 600;
}
