/* =========================================
   Bravo Casa — Design System
   ========================================= */
:root{
  --bc-primary:#044f8b;      /* blu principale (bottoni, CTA) */
  --bc-secondary:#005c98;    /* blu header/footer */
  --bc-accent:#12a9e0;       /* azzurro accento */
  --bc-dark:#0c2a3d;
  --bc-text:#32373c;
  --bc-muted:#697781;
  --bc-light:#f4f9fc;
  --bc-white:#ffffff;
  --bc-radius:16px;
  --bc-shadow:0 10px 30px rgba(4,79,139,.10);
  --bc-shadow-strong:0 20px 45px rgba(4,79,139,.18);
  --bc-transition:.25s ease;
}

*{box-sizing:border-box;}

html{scroll-behavior:smooth;}
body{
  font-family:'Inter',system-ui,-apple-system,sans-serif;
  color:var(--bc-text);
  background:var(--bc-white);
  overflow-x:hidden;
}
h1,h2,h3,h4,h5,.brand-mark{
  font-family:'Poppins',sans-serif;
  font-weight:700;
  color:var(--bc-dark);
}
a{text-decoration:none;color:inherit;}
img{max-width:100%;display:block;}
.text-accent{color:var(--bc-accent);}

/* ---------- Buttons ---------- */
.btn-cta{
  background:var(--bc-primary);
  border:2px solid var(--bc-primary);
  color:#fff;
  font-weight:600;
  border-radius:50px;
  padding:.65rem 1.5rem;
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  transition:var(--bc-transition);
}
.btn-cta:hover{
  background:var(--bc-accent);
  border-color:var(--bc-accent);
  color:#fff;
  transform:translateY(-2px);
  box-shadow:var(--bc-shadow-strong);
}
.btn-outline-cta{
  background:transparent;
  border:2px solid var(--bc-primary);
  color:var(--bc-primary);
  font-weight:600;
  border-radius:50px;
  padding:.65rem 1.5rem;
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  transition:var(--bc-transition);
}
.btn-outline-cta:hover{
  background:var(--bc-primary);
  color:#fff;
  transform:translateY(-2px);
}

/* ---------- Topbar ---------- */
.topbar{
  background:var(--bc-dark);
  color:#cfe3f0;
  font-size:.85rem;
  padding:.4rem 0;
}
.topbar-info a, .topbar-info span{color:#cfe3f0;margin-right:1.5rem;}
.topbar-info a:hover{color:var(--bc-accent);}
.topbar-social a{color:#cfe3f0;margin-left:.9rem;font-size:1rem;}
.topbar-social a:hover{color:var(--bc-accent);}

/* ---------- Header ---------- */
.main-header{
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(10px);
  box-shadow:0 2px 20px rgba(4,79,139,.08);
  z-index:1040;
  transition:var(--bc-transition);
}
.main-header .navbar{padding:.75rem 0;transition:padding var(--bc-transition);}
.main-header.scrolled{box-shadow:0 4px 25px rgba(4,79,139,.15);}
.main-header.scrolled .navbar{padding:.5rem 0;}
.brand-mark{font-size:1.55rem;color:var(--bc-primary);letter-spacing:-.5px;}
.brand-mark-accent{color:var(--bc-accent);}
.brand-tagline{font-size:.7rem;color:var(--bc-muted);font-weight:500;letter-spacing:.5px;text-transform:uppercase;margin-top:-2px;}
.navbar-brand{line-height:1.1;}
.nav-link{
  color:var(--bc-text)!important;
  font-weight:600;
  padding:.5rem 1rem!important;
  border-radius:50px;
  transition:var(--bc-transition);
}
.nav-link:hover, .nav-link.active{
  color:var(--bc-primary)!important;
  background:rgba(4,79,139,.08);
}
.navbar-toggler{border:none;font-size:1.8rem;color:var(--bc-primary);background:none;}
.navbar-toggler:focus{box-shadow:none;}

.offcanvas-body .nav-link{font-size:1.1rem;padding:.7rem 1rem!important;}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  padding:6rem 0 5rem;
  background:linear-gradient(135deg,var(--bc-light) 0%,#e7f3fb 100%);
  overflow:hidden;
}
.hero-shape{
  position:absolute;
  top:-120px;right:-160px;
  width:520px;height:520px;
  background:radial-gradient(circle,rgba(18,169,224,.25),transparent 70%);
  border-radius:50%;
}
.badge-soft{
  display:inline-flex;align-items:center;gap:.4rem;
  background:rgba(4,79,139,.1);
  color:var(--bc-primary);
  font-weight:600;
  font-size:.8rem;
  padding:.4rem 1rem;
  border-radius:50px;
}
.hero h1{font-size:2.6rem;line-height:1.15;margin-bottom:1rem;}
.hero .lead{color:var(--bc-muted);font-size:1.1rem;}

.hero-visual{position:relative;}
.hero-ph{
  aspect-ratio:4/3;
  background:linear-gradient(135deg,var(--bc-primary),var(--bc-accent));
  border-radius:var(--bc-radius);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:#fff;gap:.5rem;
  box-shadow:var(--bc-shadow-strong);
}
.hero-ph i{font-size:3.5rem;opacity:.9;}
.hero-ph span{font-size:.85rem;opacity:.85;font-weight:500;}
.hero-float-card{
  position:absolute;
  background:#fff;
  border-radius:12px;
  padding:.7rem 1.1rem;
  font-weight:600;
  font-size:.85rem;
  box-shadow:var(--bc-shadow);
  display:flex;align-items:center;gap:.5rem;
  color:var(--bc-primary);
}
.hero-float-card i{color:var(--bc-accent);}
.hero-float-card.card-1{top:10%;left:-5%;animation:float 4s ease-in-out infinite;}
.hero-float-card.card-2{bottom:8%;right:-5%;animation:float 4s ease-in-out infinite 1s;}
@keyframes float{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-10px);}
}

/* ---------- Stats ---------- */
.stats-bar{
  background:var(--bc-primary);
  background:linear-gradient(120deg,var(--bc-secondary),var(--bc-primary));
  padding:3rem 0;
}
.stat-num{
  font-family:'Poppins',sans-serif;
  font-weight:800;
  font-size:2.4rem;
  color:#fff;
}
.stat-label{color:#bfe0f2;font-weight:500;font-size:.9rem;text-transform:uppercase;letter-spacing:.5px;}

/* ---------- Sections ---------- */
.section{padding:5rem 0;}
.section-alt{background:var(--bc-light);}
.section-head{max-width:640px;margin:0 auto 3rem;}
.eyebrow{
  display:inline-block;
  color:var(--bc-accent);
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:1px;
  font-size:.8rem;
  margin-bottom:.5rem;
}
.eyebrow-light{color:#bfe0f2;}
.section h2{font-size:2rem;margin-bottom:.75rem;}

/* ---------- Category cards ---------- */
.cat-card{
  background:#fff;
  border-radius:var(--bc-radius);
  overflow:hidden;
  box-shadow:var(--bc-shadow);
  transition:var(--bc-transition);
  height:100%;
}
.cat-card:hover{transform:translateY(-8px);box-shadow:var(--bc-shadow-strong);}
.cat-ph{
  height:150px;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--bc-secondary),var(--bc-accent));
  color:#fff;font-size:3rem;
}
.cat-body{padding:1.5rem;}
.cat-body h3{font-size:1.2rem;margin-bottom:.5rem;}
.cat-body p{color:var(--bc-muted);font-size:.92rem;margin:0;}

/* ---------- About ---------- */
.about-ph{
  aspect-ratio:1/1;
  background:linear-gradient(135deg,var(--bc-primary),var(--bc-secondary));
  border-radius:var(--bc-radius);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:#fff;gap:.6rem;
  box-shadow:var(--bc-shadow-strong);
}
.about-ph i{font-size:4rem;opacity:.9;}
.about-ph span{font-weight:500;font-size:.9rem;opacity:.85;text-align:center;padding:0 1rem;}

.value-box{
  background:#fff;
  border-radius:12px;
  padding:1.25rem 1rem;
  text-align:center;
  box-shadow:var(--bc-shadow);
  height:100%;
}
.value-box i{font-size:1.6rem;color:var(--bc-accent);}
.value-box h4{font-size:1rem;margin:.6rem 0 .4rem;}
.value-box p{font-size:.82rem;color:var(--bc-muted);margin:0;}

/* ---------- Promo / Volantino ---------- */
.promo-section{padding-top:0;}
.promo-card{
  background:linear-gradient(120deg,var(--bc-secondary),var(--bc-primary));
  border-radius:24px;
  padding:3rem;
  box-shadow:var(--bc-shadow-strong);
}
.promo-card h2{font-size:1.8rem;}
.flyer-ph{
  aspect-ratio:3/4;
  background:rgba(255,255,255,.12);
  border:2px dashed rgba(255,255,255,.4);
  border-radius:var(--bc-radius);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:#fff;gap:.5rem;
}
.flyer-ph i{font-size:3rem;}
.flyer-ph span{font-size:.85rem;opacity:.85;}

/* ---------- Catalogo Premi ---------- */
.premi-ph{
  aspect-ratio:4/3;
  background:linear-gradient(135deg,#f4a91c,var(--bc-accent));
  border-radius:var(--bc-radius);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:#fff;gap:.6rem;
  box-shadow:var(--bc-shadow-strong);
}
.premi-ph i{font-size:3.5rem;}
.premi-ph span{font-weight:600;font-size:.9rem;}
.check-list li{margin-bottom:.6rem;font-weight:500;}
.check-list i{color:var(--bc-accent);margin-right:.5rem;}

/* ---------- Contatti ---------- */
.contact-info-card{
  background:#fff;
  border-radius:var(--bc-radius);
  padding:2rem;
  box-shadow:var(--bc-shadow);
  height:100%;
}
.contact-row{display:flex;gap:1rem;margin-bottom:1.5rem;}
.contact-row i{font-size:1.3rem;color:var(--bc-accent);margin-top:.2rem;}
.contact-row h5{font-size:.95rem;margin-bottom:.2rem;}
.contact-row p{font-size:.9rem;color:var(--bc-muted);margin:0;}
.contact-row a{color:var(--bc-primary);font-weight:600;}
.map-ph{
  margin-top:1rem;
  height:160px;
  border-radius:12px;
  background:repeating-linear-gradient(45deg,#e7f3fb,#e7f3fb 10px,#f4f9fc 10px,#f4f9fc 20px);
  border:1px solid #dbe9f2;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:var(--bc-primary);gap:.4rem;
}
.map-ph i{font-size:1.8rem;}
.map-ph span{font-size:.8rem;font-weight:600;}

.contact-form{
  background:#fff;
  border-radius:var(--bc-radius);
  padding:2rem;
  box-shadow:var(--bc-shadow);
}
.contact-form .form-control{
  border-radius:10px;
  border:1px solid #dbe9f2;
  padding:.7rem 1rem;
}
.contact-form .form-control:focus{
  border-color:var(--bc-accent);
  box-shadow:0 0 0 .2rem rgba(18,169,224,.2);
}
.contact-form .form-label{font-weight:600;font-size:.88rem;color:var(--bc-text);}

/* ---------- Footer ---------- */
.site-footer{
  background:var(--bc-dark);
  color:#cfe3f0;
  padding:4rem 0 1rem;
}
.brand-mark-footer{color:#fff;}
.site-footer h5{color:#fff;font-size:1rem;margin-bottom:1rem;}
.footer-links{list-style:none;padding:0;margin:0;}
.footer-links li{margin-bottom:.6rem;font-size:.9rem;color:#a9c3d3;}
.footer-links a{color:#a9c3d3;transition:var(--bc-transition);}
.footer-links a:hover{color:var(--bc-accent);}
.site-footer .topbar-social a, .site-footer a[aria-label]{
  color:#cfe3f0;font-size:1.1rem;
}
.site-footer a[aria-label]:hover{color:var(--bc-accent);}
.footer-divider{border-color:rgba(255,255,255,.1);margin:2rem 0 1rem;}

/* ---------- Cookie banner ---------- */
.cookie-banner{
  position:fixed;left:0;right:0;bottom:0;
  background:var(--bc-dark);
  color:#e6f1f8;
  padding:1rem 0;
  font-size:.85rem;
  z-index:1090;
  box-shadow:0 -4px 20px rgba(0,0,0,.2);
}

/* ---------- Back to top ---------- */
.back-to-top{
  position:fixed;
  bottom:90px;right:20px;
  width:46px;height:46px;
  border-radius:50%;
  background:var(--bc-primary);
  color:#fff;border:none;
  display:none;align-items:center;justify-content:center;
  font-size:1.2rem;
  box-shadow:var(--bc-shadow-strong);
  z-index:1050;
  transition:var(--bc-transition);
}
.back-to-top:hover{background:var(--bc-accent);}
.back-to-top.show{display:flex;}

/* ---------- Mobile call bar ---------- */
.mobile-call-bar{
  position:fixed;bottom:0;left:0;right:0;
  background:var(--bc-primary);
  color:#fff;
  text-align:center;
  padding:.85rem;
  font-weight:700;
  z-index:1060;
  display:flex;align-items:center;justify-content:center;gap:.5rem;
  box-shadow:0 -4px 15px rgba(0,0,0,.15);
}

/* ---------- Reveal animation ---------- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .6s ease, transform .6s ease;}
.reveal.in-view{opacity:1;transform:translateY(0);}

/* ---------- Responsive ---------- */
@media (max-width:991.98px){
  .hero{padding:3rem 0 4rem;text-align:center;}
  .hero h1{font-size:2rem;}
  .hero-shape{display:none;}
  .hero-float-card{position:static;display:inline-flex;margin:.5rem .3rem 0;animation:none;}
  .section{padding:3.5rem 0;}
  .promo-card{padding:2rem 1.25rem;text-align:center;}
  .promo-card .col-lg-5{margin-top:1.5rem;}
  body{padding-bottom:56px;} /* space for mobile call bar */
}
@media (min-width:992px){
  .mobile-call-bar{display:none!important;}
}
@media (max-width:575.98px){
  .hero h1{font-size:1.7rem;}
  .stat-num{font-size:1.8rem;}
  .section h2{font-size:1.5rem;}
}
