/* RC55 — unified consumer controls.
 * RC55 keeps the established geometry and strengthens CTA affordance/colors.
 * Section CTAs use a dedicated semantic variant so footer/text links stay untouched.
 *
 * Historical baseline: RC47 — unified consumer controls.
 * One semantic button system for Elementor and native VIVIARE surfaces.
 * Context classes remain editable in Elementor; ancestor fallbacks keep older staging layouts coherent.
 */
:root{
  --vx55-section-cta-bg:#0d3158;
  --vx55-section-cta-hover:#0b8f97;
  --vx55-section-cta-ring:#8de1dd;
  --vx47-control-h:46px;
  --vx47-control-r:12px;
  --vx47-control-pad:18px;
  --vx47-control-shadow:0 8px 22px rgb(13 49 88 / 10%);
}
.viviare-site .elementor .viviare-ui-button .elementor-button,
.viviare-site .elementor .viviare-category8-newsletter .elementor-button,
.viviare-site .elementor .viviare-single8-share .elementor-button{
  display:inline-flex;min-height:var(--vx47-control-h);align-items:center;justify-content:center;gap:8px;
  padding:0 var(--vx47-control-pad);border:1px solid transparent;border-radius:var(--vx47-control-r);
  background:var(--vx-stay,#0d3158);color:#fff;font-size:13px;font-weight:800;line-height:1;text-decoration:none;
  box-shadow:none;transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s ease,box-shadow .18s ease;
}
.viviare-site .elementor .viviare-ui-button .elementor-button:hover,
.viviare-site .elementor .viviare-category8-newsletter .elementor-button:hover{transform:translateY(-1px);box-shadow:var(--vx47-control-shadow)}
.viviare-site .elementor .viviare-ui-button--primary .elementor-button{background:var(--viviare-category-accent,var(--vx-stay,#0d3158));color:#fff}
.viviare-site .elementor .viviare-ui-button--secondary .elementor-button,
.viviare-site .elementor .viviare-single8-share .elementor-button{border-color:#91cfd0;background:#f1fafa;color:#0b6670;box-shadow:0 4px 12px rgb(13 49 88 / 5%)}
.viviare-site .elementor .viviare-ui-button--secondary .elementor-button:hover,
.viviare-site .elementor .viviare-single8-share .elementor-button:hover{border-color:#0b989f;background:#e5f7f6;color:#084f58}
.viviare-site .elementor .viviare-ui-button--link .elementor-button,
.viviare-site .elementor .viviare-section8-heading .elementor-button,
.viviare-site .elementor .viviare-home8-utility-card .elementor-button{
  min-height:38px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--viviare-category-accent,var(--vx-vivi,#14a7a8));
  font-size:12.5px;font-weight:800;box-shadow:none;
}
.viviare-site .elementor .viviare-ui-button--link .elementor-button:after,
.viviare-site .elementor .viviare-section8-heading .elementor-button:after{content:"→";margin-left:5px;font-size:14px;line-height:1}
.viviare-site .elementor .viviare-ui-button--link .elementor-button:hover,
.viviare-site .elementor .viviare-section8-heading .elementor-button:hover{transform:none;background:#f4f8f9;color:var(--vx-stay,#0d3158);box-shadow:none}

/* RC55 — clear section-level CTA ("Vedi tutte", "Vedi tutti gli alloggi", etc.). */
.viviare-site .elementor .viviare-ui-button--section-cta .elementor-button{
  min-height:38px;padding:0 10px 0 14px;border:1px solid var(--vx55-section-cta-bg);border-radius:10px;
  background:var(--vx55-section-cta-bg);color:#fff;font-size:11.5px;font-weight:820;letter-spacing:.01em;
  box-shadow:0 7px 18px rgb(13 49 88 / 13%);
}
.viviare-site .elementor .viviare-ui-button--section-cta .elementor-button:after{
  content:"→";display:grid;width:22px;height:22px;place-items:center;margin-left:8px;border-radius:999px;
  background:#19a7aa;color:#fff;font-size:13px;line-height:1;transition:transform .18s ease,background-color .18s ease;
}
.viviare-site .elementor .viviare-ui-button--section-cta .elementor-button:hover{
  border-color:var(--vx55-section-cta-hover);background:var(--vx55-section-cta-hover);color:#fff;box-shadow:0 9px 22px rgb(13 49 88 / 17%);
}
.viviare-site .elementor .viviare-ui-button--section-cta .elementor-button:hover:after{transform:translateX(2px);background:#fff;color:var(--vx55-section-cta-hover)}
.viviare-site .elementor .viviare-home8-macro-card .elementor-button{display:inline-flex;min-height:38px;align-items:center;width:max-content;padding:0 12px;border:1px solid rgb(255 255 255 / 34%);border-radius:10px;background:rgb(255 255 255 / 11%);color:#fff;font-size:12px;font-weight:800;backdrop-filter:blur(6px)}
.viviare-site .elementor .viviare-home8-macro-card .elementor-button:hover{background:rgb(255 255 255 / 19%);border-color:rgb(255 255 255 / 58%)}
.viviare-site .elementor .viviare-single8-tabs .elementor-button,
.viviare-site .elementor .viviare-ui-button--tab .elementor-button{min-height:42px;padding:0 10px;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:#66788b;font-size:12px;font-weight:750;box-shadow:none}
.viviare-site .elementor .viviare-single8-tabs .elementor-button:hover{color:var(--vx-stay,#0d3158);border-bottom-color:#b6c9d3}
.viviare-site .elementor button,
.viviare-site .elementor input[type="submit"]{font-family:inherit}
@media(max-width:767px){
  :root{--vx47-control-h:48px;--vx47-control-r:12px;--vx47-control-pad:16px}
  .viviare-site .elementor .viviare-category8-newsletter .elementor-button{width:100%}
  .viviare-site .elementor .viviare-section8-heading .elementor-button{min-height:40px;padding-inline:8px}
  .viviare-site .elementor .viviare-ui-button--section-cta .elementor-button{min-height:40px;padding:0 9px 0 13px;font-size:11px}
}


/* Native VIVIARE controls use the same contract as Elementor buttons. */
.viviare-site .viviare-btn,
.viviare-site .viviare-button,
.viviare-site .viviare-result-card__action,
.viviare-site .viviare-listing-apply{
  display:inline-flex;min-height:var(--vx47-control-h);align-items:center;justify-content:center;gap:8px;
  padding:0 var(--vx47-control-pad);border:1px solid transparent;border-radius:var(--vx47-control-r);
  font:800 13px/1 inherit;text-decoration:none;cursor:pointer;box-shadow:none;
  transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s ease,box-shadow .18s ease;
}
.viviare-site .viviare-btn--primary,
.viviare-site .viviare-listing-apply{background:var(--viviare-category-accent,var(--vx-stay,#0d3158));color:#fff;border-color:var(--viviare-category-accent,var(--vx-stay,#0d3158))}
.viviare-site .viviare-btn--secondary,
.viviare-site .viviare-result-card__action{background:#fff;color:var(--vx-stay,#0d3158);border-color:#b9cbd5}
.viviare-site .viviare-btn--secondary:hover,
.viviare-site .viviare-result-card__action:hover{background:#f3f8fa;border-color:#0c9099;color:#0b6f78;transform:translateY(-1px)}
.viviare-site .viviare-btn--primary:hover,
.viviare-site .viviare-listing-apply:hover{filter:brightness(.96);transform:translateY(-1px);box-shadow:var(--vx47-control-shadow)}
.viviare-site .viviare-btn:focus-visible,
.viviare-site .viviare-button:focus-visible,
.viviare-site .elementor .viviare-ui-button .elementor-button:focus-visible{outline:3px solid rgb(20 167 168 / 28%);outline-offset:3px}
.viviare-site .viviare-listing-apply{width:100%;margin-top:4px}
.viviare-site .viviare-result-card__action{min-width:132px}
@media(max-width:767px){
  .viviare-site .viviare-result-card__action{min-width:0;padding-inline:14px}
  .viviare-site .viviare-listing-apply{min-height:52px}
}

/* RC48 — interaction polish and favorite feedback. */
.viviare-site .viviare-favorite-button{display:inline-flex;min-height:42px;align-items:center;gap:8px;padding:0 13px;border:1px solid #d6e2e8;border-radius:999px;background:#fff;color:#173b60;font:750 12.5px/1 var(--viviare-font,inherit);cursor:pointer;transition:.18s ease}
.viviare-site .viviare-favorite-button:hover{border-color:#93c8ca;background:#f1fafa;color:#087f88}.viviare-site .viviare-favorite-button.is-favorite{border-color:#f0bdca;background:#fff3f6;color:#a92952}.viviare-site .viviare-favorite-button:disabled,.viviare-site [data-viviare-favorite]:disabled{opacity:.58;cursor:wait}
.viviare-site .viviare-entity-card__favorite.is-favorite{background:#fff0f4;color:#b72955;border-color:#f0bdca}.viviare-site .viviare-entity-card__favorite.is-favorite svg{fill:currentColor}
.viviare-favorite-toast{position:fixed;z-index:1200;right:22px;bottom:24px;display:flex;align-items:center;gap:18px;max-width:min(420px,calc(100vw - 32px));padding:14px 16px;border:1px solid #cbdde4;border-radius:14px;background:#0b3158;color:#fff;box-shadow:0 18px 50px rgb(4 28 52 / 24%);opacity:0;transform:translateY(14px);transition:.2s ease}.viviare-favorite-toast.is-visible{opacity:1;transform:none}.viviare-favorite-toast a{color:#8de3de;font-weight:800}
.viviare-site .elementor .viviare-cta-banner{display:grid;grid-template-columns:minmax(220px,.75fr) minmax(280px,1.25fr) auto;align-items:center;gap:24px;min-height:112px;padding:24px 28px;border:1px solid #c9e2e3;border-radius:20px;background:linear-gradient(100deg,#e8f7f5 0%,#f5fbfb 68%,#fff 100%);box-shadow:0 10px 30px rgb(13 49 88 / 6%)}
.viviare-site .elementor .viviare-cta-banner h2,.viviare-site .elementor .viviare-cta-banner h3{margin:0;color:#0b3158;font-size:22px}.viviare-site .elementor .viviare-cta-banner .elementor-widget-text-editor{color:#516b7f;font-size:14px;line-height:1.55}.viviare-site .elementor .viviare-cta-banner .elementor-button{min-width:132px}
@media(max-width:767px){.viviare-favorite-toast{right:16px;bottom:86px;left:16px}.viviare-site .elementor .viviare-cta-banner{display:flex;min-height:0;flex-direction:column;align-items:stretch;gap:12px;padding:22px 18px}.viviare-site .elementor .viviare-cta-banner .elementor-button{width:100%}}
