:root{
  --ink:#3A125C;
  --brand:#652F81;
  --brand-light:#7C4099;
  --brand-pale:#F1E7F7;
  --cream:#F5C33E;
  --cream-soft:rgba(245,195,62,0.75);
  --paper:#FBF4E7;
  --white:#FFFDF8;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0; font-family:'Nunito',system-ui,sans-serif; color:var(--ink); background:var(--paper);}
h1,h2,h3{font-family:'Fredoka',system-ui,sans-serif; margin:0; font-weight:600;}
p{margin:0;}
a{color:var(--brand); text-decoration:none;}
a:hover{color:var(--ink);}
button{font-family:inherit;}
img{max-width:100%; display:block;}

.btn{display:inline-flex; align-items:center; gap:10px; font-family:'Nunito',sans-serif; font-weight:800; font-size:16px; padding:16px 28px; border-radius:100px; cursor:pointer; border:2px solid transparent; white-space:nowrap;}
.btn-primary{background:var(--brand); color:var(--white); box-shadow:4px 4px 0 var(--brand-light);}
.btn-secondary{background:transparent; color:var(--ink); border-color:var(--ink); box-shadow:4px 4px 0 var(--brand-pale);}
.btn-onlight{background:var(--cream); color:var(--ink);}
.btn-rover{background:var(--brand-pale); color:var(--ink); border-color:transparent;}
.card{background:var(--white); border-radius:28px; padding:36px; box-shadow:0 12px 32px rgba(58,18,92,0.08);}
.pill{display:inline-flex; align-items:center; gap:8px; background:var(--brand-pale); color:var(--brand); font-weight:700; font-size:14px; padding:10px 18px; border-radius:100px; letter-spacing:0.02em; transform:rotate(-2deg);}
.section-label{font-weight:800; font-size:14px; letter-spacing:0.12em; text-transform:uppercase; color:var(--brand);}

/* ===== availability calendar ===== */
.cal-cell{aspect-ratio:1; border-radius:10px; display:flex; align-items:center; justify-content:center;}
.cal-day{background:var(--white); border:none; padding:0; margin:0; font-family:inherit; cursor:pointer; transition:transform .15s ease, background .15s ease;}
.cal-day span{font-size:13px; font-weight:700; color:var(--ink); transition:color .15s ease;}
.cal-day:hover{transform:scale(1.1);}
.cal-day.is-today{box-shadow:inset 0 0 0 2px var(--brand);}
.cal-day.is-selected{background:var(--brand);}
.cal-day.is-selected span{color:var(--white);}
.cal-booked{opacity:0.4;}
.cal-booked span{font-size:13px; font-weight:700; color:var(--ink); text-decoration:line-through;}
.cal-note{display:none; align-items:center; gap:10px; background:var(--brand-pale); border-radius:100px; padding:10px 18px 10px 14px; font-size:14px; font-weight:700; color:var(--brand); align-self:flex-start;}
.cal-note.is-visible{display:inline-flex;}
.cal-cta.is-sent{background:var(--ink); box-shadow:4px 4px 0 var(--brand-light);}

/* ===== FAQ accordion ===== */
.faq-item .faq-answer{display:none; font-size:15px; line-height:1.6; opacity:0.72; margin-top:14px;}
.faq-item.is-open .faq-answer{display:block;}
.faq-item .faq-chevron{transition:transform .15s ease;}
.faq-item.is-open .faq-chevron{transform:rotate(180deg);}
.faq-question{display:flex; align-items:center; justify-content:space-between; cursor:pointer; gap:16px; background:none; border:none; width:100%; text-align:left; padding:0; color:inherit;}

/* ===== dynamic photo slots (logo / about / gallery) ===== */
.photo-slot{position:relative; overflow:hidden;}
.photo-slot img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:none;}
.photo-slot.has-photo img{display:block;}
.photo-slot.has-photo .photo-placeholder{display:none;}
.photo-placeholder{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; width:100%; height:100%;}

/* ===== contact form ===== */
.contact-form input,
.contact-form textarea{width:100%; background:rgba(255,253,248,0.1); border:1px solid rgba(255,253,248,0.18); border-radius:10px; padding:12px 14px; color:var(--white); font-size:14px; font-family:inherit;}
.contact-form input::placeholder,
.contact-form textarea::placeholder{color:rgba(255,253,248,0.55);}
.contact-form textarea{min-height:70px; resize:vertical;}
.contact-form button{width:100%; justify-content:center; padding:12px 20px; font-size:14px; margin-top:4px;}
.form-status{font-size:13px; color:var(--white); opacity:0.75; min-height:18px;}

/* ===== language toggle ===== */
.lang-toggle{display:flex; align-items:center; gap:6px; font-weight:800; font-size:14px; cursor:pointer;}
.lang-toggle button{background:none; border:none; cursor:pointer; font-weight:800; font-size:14px; font-family:inherit; color:var(--ink); opacity:0.4; padding:0;}
.lang-toggle button.is-active{opacity:1;}
.lang-toggle .sep{color:var(--ink); opacity:0.35;}
html[data-lang="it"] [data-i18n-lang="en"]{display:none;}
html[data-lang="en"] [data-i18n-lang="it"]{display:none;}

/* ===== floating whatsapp ===== */
.wa-float{position:fixed; right:36px; bottom:36px; z-index:50; display:flex; align-items:center; gap:12px; text-decoration:none;}
.wa-float .wa-label{background:var(--ink); color:var(--white); font-weight:700; font-size:13px; padding:10px 16px; border-radius:100px; white-space:nowrap; box-shadow:0 8px 20px rgba(0,0,0,0.18);}
.wa-float .wa-bubble{width:64px; height:64px; border-radius:50%; background:var(--brand); display:flex; align-items:center; justify-content:center; box-shadow:0 10px 26px rgba(0,0,0,0.22); flex-shrink:0;}

.page{width:1440px; max-width:100%; background:var(--paper); position:relative; margin:0 auto;}
.section{padding:96px 72px;}

/* ===== responsive ===== */
@media (max-width: 960px){
  .page{width:100%;}
  .section{padding:56px 32px;}
  .hero-inner{flex-direction:column; gap:40px;}
  .hero-copy h1{font-size:38px !important;}
  .hero-visual{flex:0 0 auto !important;}
  .services-grid{grid-template-columns:repeat(2, minmax(0,1fr)) !important;}
  .about-inner{flex-direction:column; gap:32px;}
  .about-inner > *{flex:none !important; width:100%;}
  .testimonials-grid{grid-template-columns:1fr !important;}
  .gallery-grid{grid-template-columns:repeat(2, minmax(0,1fr)) !important;}
  .availability-inner{flex-direction:column; gap:32px;}
  .contact-grid{grid-template-columns:1fr !important;}
  .footer-grid{grid-template-columns:1fr 1fr !important;}
  header .main-nav{display:none;}
  .wa-float{right:18px; bottom:18px;}
  .wa-float .wa-label{display:none;}
  .wa-float .wa-bubble{width:56px; height:56px;}
}
@media (max-width: 600px){
  .services-grid,
  .gallery-grid{grid-template-columns:1fr !important;}
  .footer-grid{grid-template-columns:1fr !important;}
  .hero-copy h1{font-size:32px !important;}
}
