/* ---------- Buttons ---------- */
.ec-btn{display:inline-flex;align-items:center;gap:8px;justify-content:center;font-family:var(--font-body);letter-spacing:var(--tracking-label);text-transform:uppercase;border-radius:var(--radius-sm);cursor:pointer;text-decoration:none;transition:background var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard);border:2px solid transparent}
.ec-btn--sm{padding:8px 14px;font:var(--text-body-sm)}
.ec-btn--md{padding:11px 20px;font:var(--text-button)}
.ec-btn--lg{padding:15px 28px;font:var(--text-button)}
.ec-btn--primary{background:var(--accent-primary);color:var(--text-on-accent);border-color:var(--accent-primary)}
.ec-btn--primary:hover{background:var(--accent-primary-hover);border-color:var(--accent-primary-hover);color:var(--text-on-accent)}
.ec-btn--secondary{background:var(--ink-900);color:var(--text-on-inverse);border-color:var(--ink-900)}
.ec-btn--secondary:hover{background:var(--ink-700);border-color:var(--ink-700);color:var(--text-on-inverse)}
.ec-btn--outline{background:transparent;color:var(--accent-primary);border-color:var(--accent-primary)}
.ec-btn--outline:hover{background:var(--accent-primary-soft);color:var(--accent-primary)}
.ec-btn--ghost{background:transparent;color:var(--accent-primary);border-color:transparent}
.ec-btn--ghost:hover{background:var(--accent-primary-soft);color:var(--accent-primary)}
.ec-btn:disabled{opacity:0.45;cursor:not-allowed}
.ec-btn--block{display:flex;width:100%}

/* ---------- Labels / eyebrow ---------- */
.ec-eyebrow{font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent-primary)}
.ec-eyebrow--muted{color:var(--text-muted)}

/* ---------- Badges (tipo cerco/offro, macro-categoria) ---------- */
.ec-badge{display:inline-flex;align-items:center;gap:5px;font:var(--text-caption);letter-spacing:0.02em;text-transform:uppercase;padding:4px 10px;border-radius:var(--radius-full)}
.ec-badge--cerco{background:var(--accent-secondary-soft);color:var(--accent-secondary-hover)}
.ec-badge--offro{background:var(--accent-primary-soft);color:var(--accent-primary-hover)}
.ec-badge--macro{background:var(--slate-100);color:var(--text-secondary)}

/* ---------- Cards (listing grid) ---------- */
.ec-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-5);display:flex;flex-direction:column;gap:10px;transition:box-shadow 200ms var(--ease-standard),border-color 200ms var(--ease-standard)}
.ec-card:hover{box-shadow:var(--shadow-md);border-color:var(--accent-primary)}
.ec-card__top{display:flex;gap:8px;flex-wrap:wrap}
.ec-card__title{font:var(--text-h4);color:var(--ink-900)}
.ec-card__meta{font:var(--text-body-sm);color:var(--text-secondary)}
.ec-card__location{font:var(--text-caption);color:var(--text-muted);display:flex;align-items:center;gap:5px}
.ec-card__desc{font:var(--text-body-sm);color:var(--text-secondary);margin:0}

.ec-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5)}
.ec-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-5)}
@media (max-width:899px){ .ec-grid-3{grid-template-columns:1fr 1fr !important} }
@media (max-width:599px){ .ec-grid-3,.ec-grid-2{grid-template-columns:1fr !important} }

/* ---------- Filters ---------- */
.ec-filters{display:flex;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-6)}
.ec-filters__btn{font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;padding:8px 16px;border-radius:var(--radius-sm);cursor:pointer;border:1px solid var(--border-default);background:transparent;color:var(--text-secondary);transition:all 160ms var(--ease-standard)}
.ec-filters__btn.is-active{border-color:var(--accent-primary);background:var(--accent-primary-soft);color:var(--accent-primary)}

/* ---------- Forms ---------- */
.ec-form-panel{max-width:640px;margin:0 auto;background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:38px}
.ec-form-row{display:grid;grid-template-columns:1fr 1fr;gap:19px;margin-bottom:19px;align-items:start}
@media (max-width:539px){ .ec-form-row{grid-template-columns:1fr !important} }
.ec-form-field{margin-bottom:19px}
.ec-form-field>label{font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent-secondary-hover);display:block;margin-bottom:8px}
.ec-form-field input,.ec-form-field select{height:42px}
.ec-form-field input,.ec-form-field textarea,.ec-form-field select{width:100%;box-sizing:border-box;padding:11px 13px;border:1.5px solid var(--border-default);border-radius:var(--radius-md);font:400 0.875rem/1.5 var(--font-body);background:var(--surface-page);color:var(--ink-900);transition:border-color 160ms var(--ease-standard),box-shadow 160ms var(--ease-standard)}
.ec-form-field input::placeholder,.ec-form-field textarea::placeholder{color:var(--text-muted)}
.ec-form-field input:focus,.ec-form-field textarea:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 4px var(--accent-primary-soft)}
.ec-form-field textarea{resize:vertical;line-height:1.5}
.ec-form-field--optional>label::after{content:" (facoltativo)";text-transform:none;letter-spacing:0;font:var(--text-caption);color:var(--text-muted)}
.ec-form-note{font:var(--text-caption);color:var(--text-muted);text-align:center;margin:13px 0 0}
.ec-form-banner{max-width:640px;margin:0 auto 19px;padding:13px 19px;border-radius:var(--radius-md);font:var(--text-body-sm);text-align:center;border-left:3px solid transparent}
.ec-form-banner--ok{background:var(--success-100);color:var(--success-500);border-left-color:var(--success-500)}
.ec-form-banner--error{background:var(--danger-100);color:var(--danger-500);border-left-color:var(--danger-500)}

.ec-radio-group{display:flex;gap:13px;flex-wrap:wrap;margin-top:2px}
.ec-radio{display:flex;align-items:center;gap:6px;font:0.875rem/1.4 var(--font-body);color:var(--text-primary);cursor:pointer;white-space:nowrap}
.ec-radio input{margin:0;flex:none;width:16px;height:16px;accent-color:var(--accent-primary)}

.ec-form-checkbox{display:flex;align-items:flex-start;gap:6px;font:13px/1.4 var(--font-body, inherit);color:var(--text-muted);margin:0}
.ec-form-checkbox input{margin-top:2px;width:14px;height:14px;flex:none;accent-color:var(--accent-primary)}
.ec-form-checkbox a{color:var(--accent-primary)}
.ec-form-consent{display:flex;flex-direction:column;gap:8px;margin:0 0 var(--space-5)}

/* Anteprima upload immagini annuncio — vedi assets/js/pubblica-annuncio.js */
.ec-img-preview-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.ec-img-preview{width:72px;height:72px;object-fit:cover;border-radius:var(--radius-md);border:1px solid var(--border-default)}

/* Floating, no-scroll-needed validation error — see assets/js/utils.js EC.showFieldError(). */
.ec-toast{position:fixed;top:20px;left:50%;transform:translateX(-50%) translateY(-14px);z-index:300;background:var(--danger-500);color:#fff;padding:14px 22px;border-radius:var(--radius-md);box-shadow:var(--shadow-md);font:var(--text-body-sm);font-weight:600;max-width:min(90vw,480px);text-align:center;opacity:0;pointer-events:none;transition:opacity 200ms var(--ease-standard),transform 200ms var(--ease-standard)}
.ec-toast.is-visible{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- Header / nav ---------- */
.ec-header{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(255,255,255,0.96);backdrop-filter:blur(6px);border-bottom:1px solid var(--border-default)}
.ec-header__bar{max-width:var(--container-max);margin:0 auto;padding:0 var(--gutter-page);height:72px;display:flex;align-items:center;justify-content:space-between}
.ec-header__logo{font:800 1.25rem/1 var(--font-display);color:var(--ink-900);display:flex;align-items:center;gap:2px}
.ec-header__logo span{color:var(--accent-primary)}
.ec-nav{display:flex;align-items:center;gap:var(--space-6)}
.ec-nav__link{font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-secondary)}
.ec-nav__link:hover,.ec-nav__link.is-active{color:var(--accent-primary)}
.ec-mobile-toggle{display:none;flex-direction:column;gap:5px;background:none;border:none;padding:8px}
.ec-mobile-toggle span{width:22px;height:2px;background:var(--ink-900)}
.ec-mobile-menu{display:none;flex-direction:column;padding:var(--space-4) var(--gutter-page) var(--space-6);background:var(--surface-page);border-bottom:1px solid var(--border-default)}
.ec-mobile-menu a{padding:12px 0;font:var(--text-body);color:var(--ink-900);border-bottom:1px solid var(--border-default)}
@media (max-width:859px){
  .ec-nav--desktop{display:none}
  .ec-mobile-toggle{display:flex}
  .ec-mobile-menu.is-open{display:flex}
}

/* ---------- Footer ---------- */
.ec-footer{background:var(--ink-900);color:var(--slate-100);padding:var(--space-8) var(--gutter-page) var(--space-6)}
.ec-footer__grid{max-width:var(--container-max);margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--space-7)}
@media (max-width:699px){ .ec-footer__grid{grid-template-columns:1fr} }
.ec-footer__brand{font:800 1.25rem/1 var(--font-display);color:#fff;margin-bottom:var(--space-3)}
.ec-footer__desc{font:var(--text-body-sm);color:var(--slate-400);max-width:360px}
.ec-footer__heading{font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--slate-400);margin-bottom:var(--space-3)}
.ec-footer__links{display:flex;flex-direction:column;gap:8px}
.ec-footer__links a{font:var(--text-body-sm);color:var(--slate-100)}
.ec-footer__links a:hover{color:var(--accent-primary)}
.ec-footer__bottom{max-width:var(--container-max);margin:var(--space-7) auto 0;padding-top:var(--space-5);border-top:1px solid var(--ink-700);font:var(--text-caption);color:var(--slate-400);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
