:root{
  --navy:#071a42;
  --blue:#0964c9;
  --orange:#ff6500;
  --purple:#7b2dbb;
  --yellow:#ffad1a;
  --pink:#f11159;
  --green:#259237;
  --muted:#616c82;
  --line:#e5e9ef;
  --shadow:0 9px 24px rgba(18,46,86,.10);
  --radius:22px;
}

*{box-sizing:border-box}

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  overflow-x:hidden;
}

body{
  margin:0;
  overflow-x:hidden;
  background:#f4f5f7;
  color:var(--navy);
  font-family:"Poppins",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}

a{color:inherit}

.booking-page{
  width:min(100%,900px);
  margin:0 auto;
  padding:20px 30px 34px;
  background:#fff;
}

/* HEADER */
.topbar{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  min-height:86px;
  gap:16px;
  border-bottom:1px solid #eef1f5;
}

.back-link{
  justify-self:start;
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:#1b2742;
  text-decoration:none;
  font-size:1.03rem;
  font-weight:500;
}

.back-arrow{
  color:#0863c9;
  font-size:2rem;
  line-height:1;
}

.brand{
  display:block;
}

.brand img{
  display:block;
  width:220px;
  max-width:34vw;
  height:auto;
}

.share-button{
  justify-self:end;
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  background:transparent;
  cursor:pointer;
}

.share-button svg{
  width:34px;
  height:34px;
  fill:none;
  stroke:#ef7200;
  stroke-width:2.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}

/* HERO */
.booking-hero{
  padding:26px 0 24px;
  text-align:center;
}

.hero-title-row{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:16px;
}

.calendar-icon{
  width:58px;
  height:58px;
  display:grid;
  place-items:center;
}

.calendar-icon svg{
  width:58px;
  height:58px;
  fill:none;
  stroke:#0964c9;
  stroke-width:4.2;
  stroke-linecap:round;
  stroke-linejoin:round;
}

.booking-hero h1{
  margin:0;
  font-size:clamp(2.4rem,6vw,4rem);
  line-height:1;
  letter-spacing:-.045em;
  font-weight:800;
}

.booking-hero p{
  margin:16px 0 0;
  font-size:clamp(1.03rem,2.7vw,1.35rem);
  line-height:1.48;
  color:#151f38;
}

/* CATEGORIES */
.categories{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px;
  margin-bottom:30px;
}

.category-card{
  min-width:0;
  min-height:205px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:12px;
  padding:18px 12px 20px;
  border:1px solid #edf0f4;
  border-radius:22px;
  background:#fff;
  text-align:center;
  text-decoration:none;
  box-shadow:var(--shadow);
}

.category-png{
  display:block;
  width:118px;
  max-width:82%;
  height:118px;
  object-fit:contain;
}

.category-card strong{
  font-size:1.55rem;
  line-height:1.2;
  letter-spacing:-.03em;
}

/* SECTIONS */
.business-section{
  margin-top:28px;
}

.section-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:14px;
}

.section-heading h2{
  margin:0;
  display:flex;
  align-items:center;
  gap:10px;
  font-size:clamp(1.55rem,4vw,2.15rem);
  line-height:1.15;
  letter-spacing:-.035em;
}

.section-heading>a{
  flex:none;
  color:var(--orange);
  text-decoration:none;
  font-size:1.05rem;
  font-weight:600;
}

.section-heading>a span{
  font-size:1.55rem;
  vertical-align:-2px;
}

.section-icon{
  width:45px;
  height:45px;
  display:grid;
  place-items:center;
  border-radius:50%;
  color:#fff;
  font-size:1.35rem;
}

.section-icon.orange{background:var(--orange)}
.section-icon.purple{background:var(--purple)}
.section-icon.yellow{background:var(--yellow)}
.section-icon.pink{background:var(--pink)}
.section-icon.green{background:var(--green)}

.business-list{
  display:grid;
  gap:14px;
}

.business-card{
  display:grid;
  grid-template-columns:minmax(250px,45%) 1fr;
  overflow:hidden;
  min-height:180px;
  border:1px solid #edf0f4;
  border-radius:20px;
  background:#fff;
  box-shadow:var(--shadow);
}

.business-photo{
  width:100%;
  height:100%;
  min-height:180px;
  object-fit:cover;
}

.business-info{
  min-width:0;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  gap:14px;
  padding:20px 18px 16px;
}

.business-info h3{
  margin:0;
  font-size:clamp(1.6rem,4vw,2.15rem);
  line-height:1.06;
  letter-spacing:-.04em;
}

.business-info p{
  margin:8px 0 0;
  color:#5b667a;
  font-size:1.02rem;
  line-height:1.35;
}

.book-button{
  align-self:stretch;
  min-height:56px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:16px;
  padding:10px 16px;
  border-radius:10px;
  color:#fff;
  text-decoration:none;
  font-size:1.05rem;
  font-weight:700;
}

.book-button span{
  margin-left:auto;
  font-size:1.8rem;
  line-height:1;
}

.orange-btn{background:var(--orange)}
.purple-btn{background:var(--purple)}
.yellow-btn{background:#e89400}
.pink-btn{background:var(--pink)}
.green-btn{background:var(--green)}

/* DOWNLOAD */
.app-download{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:22px;
  margin-top:38px;
  padding:24px;
  border:1px solid #dfe8f4;
  border-radius:24px;
  background:linear-gradient(135deg,#fff,#eef7ff);
  box-shadow:var(--shadow);
}

.eyebrow{
  color:var(--orange);
  font-size:.78rem;
  font-weight:800;
  letter-spacing:.08em;
}

.app-download h2{
  margin:4px 0 7px;
  color:#0a53aa;
  font-size:1.8rem;
}

.app-download p{
  margin:0;
  max-width:390px;
  color:#435575;
  font-size:.98rem;
}

.store-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}

.store-link{
  min-width:190px;
  min-height:64px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:8px 12px;
  border:2px solid var(--orange);
  border-radius:12px;
  background:#fff;
  color:#111;
  text-decoration:none;
}

.store-link .apple{
  font-size:2rem;
}

.store-link .play{
  color:#2da5df;
  font-size:1.35rem;
}

.store-link small,
.store-link strong{
  display:block;
  line-height:1.05;
}

.store-link small{
  font-size:.6rem;
}

.store-link strong{
  font-size:1rem;
  font-weight:600;
}

.footer{
  padding:26px 0 0;
  text-align:center;
  color:#425372;
  font-size:.82rem;
}

.footer p{
  margin:2px 0;
}

/* MOBILE */
@media(max-width:680px){
  .booking-page{
    padding:14px 14px 26px;
  }

  .topbar{
    min-height:72px;
  }

  .back-link span:last-child{
    display:none;
  }

  .back-arrow{
    font-size:2.2rem;
  }

  .brand img{
    width:172px;
    max-width:43vw;
  }

  .share-button{
    width:40px;
    height:40px;
  }

  .share-button svg{
    width:29px;
    height:29px;
  }

  .booking-hero{
    padding:24px 0 22px;
  }

  .calendar-icon,
  .calendar-icon svg{
    width:48px;
    height:48px;
  }

  .booking-hero h1{
    font-size:2.6rem;
  }

  .booking-hero p{
    font-size:1rem;
  }

  .categories{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:9px;
  }

  .category-card{
    min-height:158px;
    padding:12px 6px 14px;
    border-radius:18px;
  }

  .category-png{
    width:82px;
    height:82px;
    max-width:90%;
  }

  .category-card strong{
    font-size:1rem;
  }

  .business-section{
    margin-top:24px;
  }

  .section-heading h2{
    font-size:1.42rem;
  }

  .section-heading>a{
    font-size:.88rem;
  }

  .section-icon{
    width:38px;
    height:38px;
    font-size:1.08rem;
  }

  .business-card{
    grid-template-columns:44% 56%;
    min-height:150px;
    border-radius:17px;
  }

  .business-photo{
    min-height:150px;
  }

  .business-info{
    padding:14px 12px 12px;
    gap:10px;
  }

  .business-info h3{
    font-size:1.28rem;
  }

  .business-info p{
    margin-top:5px;
    font-size:.84rem;
  }

  .book-button{
    min-height:50px;
    padding:8px 10px;
    font-size:.82rem;
  }

  .book-button span{
    font-size:1.5rem;
  }

  .app-download{
    flex-direction:column;
    align-items:stretch;
    padding:20px;
  }

  .store-row{
    grid-template-columns:1fr 1fr;
  }

  .store-link{
    min-width:0;
  }
}

@media(max-width:430px){
  .categories{
    gap:7px;
  }

  .category-card{
    min-height:148px;
    padding:10px 4px 12px;
  }

  .category-png{
    width:74px;
    height:74px;
  }

  .category-card strong{
    font-size:.92rem;
  }

  .business-card{
    grid-template-columns:42% 58%;
  }

  .business-info h3{
    font-size:1.12rem;
  }

  .business-info p{
    font-size:.76rem;
  }

  .book-button{
    font-size:.72rem;
  }
}

@media(prefers-reduced-motion:reduce){
  *{
    scroll-behavior:auto!important;
    transition:none!important;
  }
}

/* CATEGORY PNG OVERRIDES */
@media(max-width:680px){
  .categories{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:9px;
  }

  .category-card{
    min-height:158px;
    padding:12px 6px 14px;
    border-radius:18px;
  }

  .category-png{
    width:82px;
    height:82px;
    max-width:90%;
  }

  .category-card strong{
    font-size:1rem;
  }
}

@media(max-width:430px){
  .categories{
    gap:7px;
  }

  .category-card{
    min-height:148px;
    padding:10px 4px 12px;
  }

  .category-png{
    width:74px;
    height:74px;
  }

  .category-card strong{
    font-size:.92rem;
  }
}

@media(max-width:420px){
  .brand img{
    width:150px;
    max-width:49vw;
  }
}


/* SECTION CATEGORY ICONS */
.section-category-icon{
  width:46px;
  height:46px;
  flex:none;
  object-fit:contain;
  border-radius:50%;
}

.show-all-button{
  flex:none;
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:4px 0;
  border:0;
  background:transparent;
  color:var(--orange);
  font:inherit;
  font-size:1.05rem;
  font-weight:600;
  cursor:pointer;
}

.show-all-button span{
  font-size:1.55rem;
  line-height:1;
}

.show-all-button:focus-visible{
  outline:3px solid rgba(255,101,0,.35);
  outline-offset:4px;
  border-radius:8px;
}

/* APP MODAL */
body.modal-open{
  overflow:hidden;
}

.app-modal{
  position:fixed;
  inset:0;
  z-index:2000;
  display:none;
  align-items:center;
  justify-content:center;
  padding:20px;
}

.app-modal.is-open{
  display:flex;
}

.app-modal-backdrop{
  position:absolute;
  inset:0;
  background:rgba(4,17,45,.62);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
}

.app-modal-dialog{
  position:relative;
  z-index:1;
  width:min(100%,560px);
  max-height:calc(100dvh - 40px);
  overflow-y:auto;
  padding:34px 30px 30px;
  border-radius:26px;
  background:#fff;
  box-shadow:0 24px 70px rgba(0,24,70,.28);
  text-align:center;
}

.app-modal-close{
  position:absolute;
  top:12px;
  right:14px;
  width:44px;
  height:44px;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  border-radius:50%;
  background:#f4f6f9;
  color:#152543;
  font-size:2rem;
  line-height:1;
  cursor:pointer;
}

.app-modal-logo{
  display:block;
  width:190px;
  max-width:60%;
  height:auto;
  margin:0 auto 18px;
}

.app-modal-dialog h2{
  margin:0;
  color:#0a346f;
  font-size:clamp(1.65rem,5vw,2.15rem);
  line-height:1.15;
  letter-spacing:-.035em;
}

.app-modal-dialog p{
  margin:18px auto 24px;
  max-width:460px;
  color:#3d4e6c;
  font-size:1.05rem;
  line-height:1.55;
}

.app-modal-store-buttons{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}

.app-modal-store-buttons .store-link{
  min-width:0;
  width:100%;
}

@media(max-width:680px){
  .section-category-icon{
    width:40px;
    height:40px;
  }

  .show-all-button{
    font-size:.88rem;
  }

  .app-modal-dialog{
    padding:32px 20px 24px;
  }

  .app-modal-store-buttons{
    grid-template-columns:1fr;
  }

  .app-modal-logo{
    width:170px;
  }
}

@media(max-width:430px){
  .section-category-icon{
    width:36px;
    height:36px;
  }

  .app-modal{
    padding:12px;
  }

  .app-modal-dialog{
    max-height:calc(100dvh - 24px);
    border-radius:22px;
  }
}


/* DYNAMIC MERCHANTS */
.business-photo-wrap{
  position:relative;
  min-width:0;
  overflow:hidden;
  background:#f5f7fa;
}

.business-photo-wrap .business-photo{
  display:block;
  width:100%;
  height:100%;
}



.merchant-message{
  padding:24px 20px;
  border:1px solid #dfe7f1;
  border-radius:18px;
  background:#f7faff;
  color:#345175;
  text-align:center;
  font-size:1rem;
  line-height:1.5;
}

.merchant-message-error{
  border-color:#ffd5c3;
  background:#fff8f4;
  color:#8a3d1c;
}

.merchant-book-button{
  border:0;
  cursor:pointer;
  font-family:inherit;
}

@media(max-width:680px){
  
}

@media(max-width:430px){
  
}


/* MERCHANT LOGO AS MAIN IMAGE */
.business-photo-wrap{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:20px;
  background:#fff;
}

.business-photo-wrap .business-photo{
  width:100%;
  height:100%;
  min-height:150px;
  object-fit:contain;
  background:#fff;
}

.business-info{
  justify-content:center;
}

.business-info h3{
  margin-bottom:16px;
}

@media(max-width:680px){
  .business-photo-wrap{
    padding:14px;
  }

  .business-photo-wrap .business-photo{
    min-height:125px;
  }
}

@media(max-width:430px){
  .business-photo-wrap{
    padding:10px;
  }

  .business-photo-wrap .business-photo{
    min-height:110px;
  }
}


/* MERCHANT CARD - LOGO FULL WIDTH + FULL WIDTH CTA */
.business-card{
  display:flex;
  flex-direction:column;
  width:100%;
  min-height:0;
  overflow:hidden;
  border:1px solid #edf0f4;
  border-radius:20px;
  background:#fff;
  box-shadow:var(--shadow);
}

.business-photo-wrap{
  width:100%;
  display:block;
  padding:0;
  overflow:hidden;
  background:#fff;
}

.business-photo-wrap .business-photo{
  display:block;
  width:100%;
  height:auto;
  min-height:0;
  max-height:none;
  object-fit:contain;
  background:#fff;
}

.business-card > .book-button{
  width:100%;
  align-self:stretch;
  margin:0;
  min-height:62px;
  border-radius:0 0 20px 20px;
  padding:13px 20px;
  font-size:1.05rem;
}

.business-card > .book-button span{
  margin-left:auto;
}

@media(max-width:680px){
  .business-card{
    border-radius:18px;
  }

  .business-card > .book-button{
    min-height:58px;
    border-radius:0 0 18px 18px;
    font-size:.95rem;
  }
}

@media(max-width:430px){
  .business-card > .book-button{
    min-height:56px;
    padding:11px 14px;
    font-size:.88rem;
  }
}


/* RISTOPUB DYNAMIC SECTION */
#ristopub .business-card > .book-button{
  background:var(--purple);
}


/* CTA PRENOTA TAVOLO - COLORE UNICO */
.business-card > .book-button,
.orange-btn,
.purple-btn,
.yellow-btn,
.pink-btn,
.green-btn,
#ristopub .business-card > .book-button{
  background:#ff6500 !important;
  color:#fff !important;
}


/* PANINOTECA DYNAMIC SECTION */
#paninoteca .business-card > .book-button{
  background:#ff6500 !important;
  color:#fff !important;
}


/* BUSINESS GRID - 2 ESERCENTI PER RIGA */
.business-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
}

.business-card{
  width:100%;
  min-width:0;
}

@media(max-width:680px){
  .business-list{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
  }

  .business-card > .book-button{
    font-size:.82rem;
    padding:10px 8px;
  }
}

@media(max-width:430px){
  .business-list{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }

  .business-card > .book-button{
    min-height:52px;
    font-size:.72rem;
    padding:9px 6px;
  }
}


/* CARD UNIFORMI - STESSA ALTEZZA, LOGO CENTRATO */
.business-list{
  align-items:stretch;
}

.business-card{
  height:100%;
  display:flex;
  flex-direction:column;
}

.business-photo-wrap{
  flex:1 1 auto;
  min-height:220px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px;
  background:#fff;
}

.business-photo-wrap .business-photo{
  display:block;
  width:100%;
  height:100%;
  max-height:220px;
  object-fit:contain;
  object-position:center;
  margin:auto;
  background:#fff;
}

.business-card > .book-button{
  flex:0 0 auto;
  margin-top:auto;
}

@media(max-width:680px){
  .business-photo-wrap{
    min-height:170px;
    padding:12px;
  }

  .business-photo-wrap .business-photo{
    max-height:170px;
  }
}

@media(max-width:430px){
  .business-photo-wrap{
    min-height:145px;
    padding:10px;
  }

  .business-photo-wrap .business-photo{
    max-height:145px;
  }
}


/* CARD MERCHANT - IMMAGINE BANNER */
.business-photo-wrap{
  padding:0;
  overflow:hidden;
  background:#f4f5f7;
}

.business-photo-wrap .business-photo{
  width:100%;
  height:220px;
  max-height:none;
  min-height:220px;
  object-fit:cover;
  object-position:center;
  margin:0;
}

@media(max-width:680px){
  .business-photo-wrap .business-photo{
    height:170px;
    min-height:170px;
    max-height:none;
  }
}

@media(max-width:430px){
  .business-photo-wrap .business-photo{
    height:145px;
    min-height:145px;
    max-height:none;
  }
}


/* 94015 - LOGO SOVRAPPOSTO AL BANNER */
.merchant-banner-logo-box{
  position:absolute;
  top:50%;
  left:50%;
  width:104px;
  height:104px;
  transform:translate(-50%,-50%);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px;
  border-radius:18px;
  background:#fff;
  box-shadow:0 7px 22px rgba(0,0,0,.20);
  z-index:2;
}

.merchant-banner-logo{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
}

@media(max-width:680px){
  .merchant-banner-logo-box{
    width:82px;
    height:82px;
    padding:8px;
    border-radius:15px;
  }
}

@media(max-width:430px){
  .merchant-banner-logo-box{
    width:70px;
    height:70px;
    padding:7px;
    border-radius:13px;
  }
}


/* CLICK SUL BANNER MERCHANT */
button.business-photo-wrap{
  position:relative;
  width:100%;
  display:block;
  padding:0;
  border:0;
  background:#fff;
  cursor:pointer;
  font:inherit;
}

button.business-photo-wrap:focus-visible{
  outline:4px solid rgba(255,101,0,.45);
  outline-offset:-4px;
}

/* BOOKING MODAL */
.booking-modal{
  position:fixed;
  inset:0;
  z-index:2500;
  display:none;
  align-items:center;
  justify-content:center;
  padding:18px;
}

.booking-modal.is-open{
  display:flex;
}

.booking-modal-backdrop{
  position:absolute;
  inset:0;
  background:rgba(4,17,45,.68);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
}

.booking-modal-dialog{
  position:relative;
  z-index:1;
  width:min(100%,620px);
  max-height:calc(100dvh - 36px);
  overflow-y:auto;
  padding:28px;
  border-radius:26px;
  background:#fff;
  box-shadow:0 24px 80px rgba(0,23,70,.30);
  overscroll-behavior:contain;
}

.booking-modal-close{
  position:absolute;
  top:12px;
  right:12px;
  z-index:4;
  width:44px;
  height:44px;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  border-radius:50%;
  background:#f2f4f8;
  color:#132542;
  font-size:2rem;
  line-height:1;
  cursor:pointer;
}

.booking-modal-head{
  display:flex;
  align-items:center;
  gap:16px;
  padding-right:42px;
  margin-bottom:22px;
}

.booking-merchant-logo{
  width:86px;
  height:86px;
  flex:none;
  object-fit:contain;
  padding:8px;
  border:1px solid #e4e8ee;
  border-radius:18px;
  background:#fff;
}

.booking-eyebrow{
  display:block;
  margin-bottom:3px;
  color:#ff6500;
  font-size:.76rem;
  font-weight:800;
  letter-spacing:.08em;
}

.booking-modal-head h2{
  margin:0;
  color:#0a346f;
  font-size:clamp(1.55rem,5vw,2rem);
  line-height:1.1;
  letter-spacing:-.035em;
}

.booking-modal-head p{
  margin:6px 0 0;
  color:#647087;
  font-size:.9rem;
}

.booking-loading,
.booking-error{
  padding:18px;
  border-radius:15px;
  text-align:center;
}

.booking-loading{
  background:#f5f8fc;
  color:#47607f;
}

.booking-error{
  margin-bottom:16px;
  border:1px solid #ffd3c0;
  background:#fff5f0;
  color:#8e3714;
}

.booking-form{
  display:grid;
  gap:17px;
}

.booking-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}

.booking-field{
  display:grid;
  gap:7px;
  margin:0;
  border:0;
  padding:0;
}

.booking-field > span,
.booking-field legend{
  color:#14294a;
  font-size:.95rem;
  font-weight:700;
}

.booking-field small{
  font-weight:500;
  color:#738097;
}

.booking-field input,
.booking-field select,
.booking-field textarea{
  width:100%;
  min-height:54px;
  padding:12px 14px;
  border:1.5px solid #d7dee8;
  border-radius:12px;
  background:#fff;
  color:#132542;
  font:inherit;
  font-size:1rem;
  outline:none;
}

.booking-field textarea{
  min-height:92px;
  resize:vertical;
}

.booking-field input:focus,
.booking-field select:focus,
.booking-field textarea:focus{
  border-color:#ff6500;
  box-shadow:0 0 0 3px rgba(255,101,0,.12);
}

.booking-choice-row{
  display:flex;
  flex-wrap:wrap;
  gap:9px;
}

.booking-choice{
  cursor:pointer;
}

.booking-choice input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}

.booking-choice span{
  display:block;
  padding:11px 15px;
  border:1.5px solid #d7dee8;
  border-radius:999px;
  background:#fff;
  color:#314765;
  font-weight:600;
}

.booking-choice input:checked + span{
  border-color:#ff6500;
  background:#fff5ed;
  color:#c94f00;
}

.booking-turns{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
}

.booking-turn-choice{
  cursor:pointer;
}

.booking-turn-choice input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}

.booking-turn-choice > span{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  min-height:70px;
  padding:9px;
  border:1.5px solid #d8dfe8;
  border-radius:12px;
  background:#fff;
  text-align:center;
}

.booking-turn-choice strong{
  color:#18345d;
  font-size:.9rem;
}

.booking-turn-choice small{
  margin-top:3px;
  color:#6f7c90;
}

.booking-turn-choice input:checked + span{
  border-color:#ff6500;
  background:#fff4eb;
  box-shadow:0 0 0 2px rgba(255,101,0,.08);
}

.booking-no-turns{
  grid-column:1/-1;
  padding:15px;
  border-radius:12px;
  background:#f7f8fa;
  color:#657186;
  text-align:center;
}

.booking-hours{
  border:1px solid #e4e8ee;
  border-radius:12px;
  background:#fafbfc;
}

.booking-hours summary{
  padding:13px 14px;
  color:#32506f;
  font-weight:700;
  cursor:pointer;
}

.booking-hours > div{
  padding:0 14px 14px;
  color:#5f6c81;
  white-space:pre-line;
  font-size:.9rem;
  line-height:1.5;
}

.booking-divider{
  height:1px;
  background:#edf0f4;
}

.booking-privacy{
  display:flex;
  align-items:flex-start;
  gap:10px;
  color:#5d6980;
  font-size:.78rem;
  line-height:1.45;
}

.booking-privacy input{
  width:20px;
  height:20px;
  flex:none;
  margin-top:1px;
  accent-color:#ff6500;
}

.booking-submit{
  width:100%;
  min-height:60px;
  border:0;
  border-radius:13px;
  background:#ff6500;
  color:#fff;
  font:inherit;
  font-size:1.02rem;
  font-weight:800;
  cursor:pointer;
  box-shadow:0 8px 18px rgba(255,101,0,.20);
}

.booking-submit:disabled{
  opacity:.65;
  cursor:wait;
}

.booking-note{
  margin:0;
  color:#778398;
  text-align:center;
  font-size:.78rem;
}

.booking-success{
  padding:18px 0 4px;
  text-align:center;
}

.booking-success-icon{
  width:78px;
  height:78px;
  display:grid;
  place-items:center;
  margin:0 auto 16px;
  border-radius:50%;
  background:#16a66a;
  color:#fff;
  font-size:2.4rem;
  font-weight:800;
}

.booking-success h3{
  margin:0;
  color:#103665;
  font-size:1.65rem;
}

.booking-success p{
  margin:12px auto 20px;
  color:#53637a;
  line-height:1.5;
}

.booking-success-close{
  min-width:180px;
  min-height:50px;
  border:2px solid #ff6500;
  border-radius:11px;
  background:#fff;
  color:#d95700;
  font:inherit;
  font-weight:800;
  cursor:pointer;
}

@media(max-width:680px){
  .booking-modal{
    padding:10px;
  }

  .booking-modal-dialog{
    max-height:calc(100dvh - 20px);
    padding:22px 16px 20px;
    border-radius:22px;
  }

  .booking-modal-head{
    gap:12px;
    padding-right:36px;
  }

  .booking-merchant-logo{
    width:68px;
    height:68px;
    border-radius:14px;
  }

  .booking-grid{
    grid-template-columns:1fr 1fr;
    gap:9px;
  }

  .booking-turns{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(max-width:410px){
  .booking-modal-head{
    align-items:flex-start;
  }

  .booking-merchant-logo{
    width:60px;
    height:60px;
  }

  .booking-modal-head h2{
    font-size:1.35rem;
  }

  .booking-grid{
    grid-template-columns:1fr;
  }
}


/* FIX MODULO PRENOTAZIONE - NESSUNO SCROLL ORIZZONTALE */
.booking-modal,
.booking-modal-dialog,
.booking-form,
.booking-grid,
.booking-field,
.booking-turns,
.booking-choice-row,
#bookingTimeMount{
  max-width:100%;
  min-width:0;
}

.booking-modal-dialog{
  overflow-x:hidden !important;
}

.booking-form input,
.booking-form select,
.booking-form textarea{
  min-width:0;
  max-width:100%;
}

.booking-grid{
  width:100%;
}

.booking-turns{
  width:100%;
}

/* Su mobile evitiamo qualunque elemento a due colonne che possa forzare la larghezza */
@media(max-width:520px){
  .booking-grid{
    grid-template-columns:1fr;
  }

  .booking-turns{
    grid-template-columns:1fr 1fr;
  }
}


/* MODULO PRENOTAZIONE - CONTENIMENTO RIGOROSO NEI MARGINI */
.booking-modal-dialog{
  width:min(calc(100vw - 24px),620px) !important;
  max-width:calc(100vw - 24px) !important;
  overflow-x:hidden !important;
  box-sizing:border-box;
}

.booking-modal-dialog *,
.booking-modal-dialog *::before,
.booking-modal-dialog *::after{
  box-sizing:border-box;
  max-width:100%;
}

.booking-form{
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:hidden;
}

.booking-grid{
  width:100%;
  max-width:100%;
  min-width:0;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
}

.booking-field,
.booking-time-only,
#bookingTimeMount,
#bookingTurnField,
#bookingAreaField{
  width:100%;
  max-width:100%;
  min-width:0;
}

.booking-field input,
.booking-field select,
.booking-field textarea,
.booking-time-only input{
  display:block;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  margin:0;
}

#bookingDate,
#bookingTime{
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
}

.booking-turns{
  width:100%;
  max-width:100%;
  min-width:0;
}

.booking-turn-choice{
  min-width:0;
}

.booking-turn-choice > span{
  width:100%;
  max-width:100%;
  min-width:0;
}

.booking-choice-row{
  width:100%;
  max-width:100%;
  min-width:0;
}

.booking-choice{
  flex:1 1 0;
  min-width:0;
}

.booking-choice span{
  width:100%;
  text-align:center;
}

@media(max-width:560px){
  .booking-modal{
    padding:10px !important;
  }

  .booking-modal-dialog{
    width:calc(100vw - 20px) !important;
    max-width:calc(100vw - 20px) !important;
    padding:22px 16px 20px !important;
  }

  .booking-grid{
    grid-template-columns:1fr !important;
  }

  .booking-turns{
    grid-template-columns:1fr 1fr;
  }
}

@media(max-width:380px){
  .booking-modal-dialog{
    width:calc(100vw - 14px) !important;
    max-width:calc(100vw - 14px) !important;
    padding-left:12px !important;
    padding-right:12px !important;
  }

  .booking-turns{
    grid-template-columns:1fr;
  }
}


/* FIX DEFINITIVO CAMPO DATA PRENOTAZIONE */
.booking-date-field{
  grid-column:1 / -1;
  width:100%;
  max-width:100%;
  min-width:0;
}

.booking-date-field input[type="date"],
#bookingDate{
  display:block;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
  margin:0 !important;
  padding:12px 14px !important;
  overflow:hidden;
  -webkit-appearance:none;
  appearance:none;
}

/* Safari / iOS: impedisce al controllo nativo della data di imporre una larghezza minima */
#bookingDate::-webkit-date-and-time-value{
  min-width:0;
  text-align:left;
}

#bookingDate::-webkit-datetime-edit{
  min-width:0;
  padding:0;
}

#bookingDate::-webkit-datetime-edit-fields-wrapper{
  min-width:0;
}

#bookingDate::-webkit-calendar-picker-indicator{
  flex:none;
  margin-left:6px;
}

/* La griglia non può mai far crescere il campo oltre la modale */
.booking-grid{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  overflow:hidden;
}

.booking-grid > *{
  min-width:0 !important;
  max-width:100% !important;
}

/* Su mobile tutti i campi principali diventano a colonna singola */
@media(max-width:680px){
  .booking-grid{
    grid-template-columns:1fr !important;
  }

  .booking-date-field{
    grid-column:auto;
  }
}

/* Ulteriore protezione per viewport stretti */
@media(max-width:430px){
  .booking-modal-dialog{
    padding-left:14px !important;
    padding-right:14px !important;
  }

  #bookingDate{
    font-size:16px !important;
  }
}


/* AVVISO WHATSAPP - EVIDENZA MASSIMA */
.booking-note{
  margin:4px 0 0;
  padding:14px 16px;
  border:2px solid #25d366;
  border-radius:14px;
  background:#f0fff5;
  color:#173d2a;
  text-align:center;
  font-size:.95rem;
  line-height:1.45;
  font-weight:700;
  box-shadow:0 5px 14px rgba(37,211,102,.10);
}

.booking-note::before{
  content:"WHATSAPP";
  display:block;
  margin-bottom:5px;
  color:#128c4a;
  font-size:.78rem;
  font-weight:800;
  letter-spacing:.08em;
}

@media(max-width:430px){
  .booking-note{
    padding:13px 12px;
    font-size:.88rem;
  }
}


/* FIX DEFINITIVO ORARIO DESIDERATO */
#bookingTimeMount{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  overflow:hidden !important;
}

.booking-time-row{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  overflow:hidden !important;
}

.booking-time-only{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  overflow:hidden !important;
}

.booking-time-only > span{
  min-width:0 !important;
  max-width:100% !important;
}

.booking-time-only input[type="time"],
#bookingTime{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
  margin:0 !important;
  padding:12px 14px !important;
  border:1.5px solid #d7dee8 !important;
  border-radius:12px !important;
  overflow:hidden !important;
  -webkit-appearance:none;
  appearance:none;
}

/* WebKit/Safari: impedisce larghezze intrinseche del controllo time */
#bookingTime::-webkit-date-and-time-value{
  min-width:0 !important;
  text-align:left;
}

#bookingTime::-webkit-datetime-edit{
  min-width:0 !important;
  padding:0 !important;
}

#bookingTime::-webkit-datetime-edit-fields-wrapper{
  min-width:0 !important;
}

.booking-modal-dialog{
  contain:inline-size;
}

@media(max-width:680px){
  #bookingTimeMount,
  .booking-time-row,
  .booking-time-only,
  #bookingTime{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
  }

  #bookingTime{
    font-size:16px !important;
  }
}


/* MOBILE KEYBOARD / FOCUS MANAGEMENT */
.booking-modal-dialog{
  overflow-y:auto !important;
  overflow-x:hidden !important;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scroll-padding-top:90px;
  scroll-padding-bottom:300px;
}

.booking-modal-dialog input,
.booking-modal-dialog select,
.booking-modal-dialog textarea{
  scroll-margin-top:90px;
  scroll-margin-bottom:280px;
}

@supports(height:100dvh){
  .booking-modal-dialog{
    max-height:calc(100dvh - 20px);
  }
}

@media(max-width:680px){
  .booking-modal-dialog{
    max-height:calc(100dvh - 20px);
    scroll-padding-bottom:340px;
  }

  .booking-modal-dialog input,
  .booking-modal-dialog select,
  .booking-modal-dialog textarea{
    scroll-margin-bottom:320px;
  }
}


/* TURNO / ORARIO - VISIBILITÀ CORRETTA */
.booking-modal [hidden]{
  display:none !important;
}

#bookingTurnField[hidden]{
  display:none !important;
}


/* =========================================================
   SCONTO PRENOTAZIONE TAVOLO
   merchants.sconto_tavolo
   ========================================================= */
.business-photo-wrap{
  position:relative;
}

.merchant-discount-badge{
  position:absolute;
  z-index:8;
  top:12px;
  left:12px;
  display:flex;
  align-items:center;
  gap:8px;
  padding:7px 10px 7px 8px;
  border-radius:999px;
  background:#ff6500;
  color:#fff;
  box-shadow:0 8px 18px rgba(0,0,0,.22);
  pointer-events:none;
}

.merchant-discount-badge strong{
  display:grid;
  place-items:center;
  min-width:42px;
  height:32px;
  padding:0 7px;
  border-radius:999px;
  background:#fff;
  color:#ff6500;
  font-size:1rem;
  font-weight:900;
  line-height:1;
}

.merchant-discount-badge span{
  font-size:.72rem;
  font-weight:900;
  letter-spacing:.025em;
  white-space:nowrap;
}

.merchant-discount-line{
  display:flex;
  align-items:center;
  gap:8px;
  width:100%;
  margin:6px 0 10px;
  padding:8px 10px;
  border-radius:11px;
  background:#fff3ea;
  color:#b74400;
  font-size:.78rem;
  line-height:1.3;
  font-weight:700;
}

.merchant-discount-line-icon{
  flex:0 0 28px;
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#ff6500;
  color:#fff;
  font-size:.85rem;
  font-weight:900;
}

.booking-discount-alert{
  display:flex;
  align-items:center;
  gap:12px;
  margin:0 20px 16px;
  padding:12px 14px;
  border:2px solid #ff6500;
  border-radius:14px;
  background:#fff3ea;
  color:#9b3b00;
}

.booking-discount-alert[hidden]{
  display:none !important;
}

.booking-discount-icon{
  flex:0 0 44px;
  width:44px;
  height:44px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#ff6500;
  color:#fff;
  font-size:1.2rem;
  font-weight:900;
}

.booking-discount-alert div{
  min-width:0;
}

.booking-discount-alert strong{
  display:block;
  margin-bottom:2px;
  color:#c44b00;
  font-size:.83rem;
  font-weight:900;
  letter-spacing:.03em;
}

.booking-discount-alert span#bookingDiscountText{
  display:block;
  font-size:.82rem;
  line-height:1.35;
  font-weight:700;
}

@media(max-width:560px){
  .merchant-discount-badge{
    top:9px;
    left:9px;
    gap:6px;
    padding:6px 8px 6px 6px;
  }

  .merchant-discount-badge strong{
    min-width:38px;
    height:29px;
    font-size:.92rem;
  }

  .merchant-discount-badge span{
    font-size:.66rem;
  }

  .booking-discount-alert{
    margin:0 14px 14px;
    padding:10px 11px;
  }
}


/* =========================================================
   ELENCO MERCHANT: UNA CARD PER RIGA
   ========================================================= */
.business-list,
.merchant-list,
.merchants-list,
.category-business-list,
.business-grid,
.merchant-grid{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:16px !important;
  width:100% !important;
}

.business-card,
.merchant-card{
  width:100% !important;
  max-width:none !important;
  min-width:0 !important;
  grid-column:1 / -1 !important;
}

@media(min-width:700px){
  .business-list,
  .merchant-list,
  .merchants-list,
  .category-business-list,
  .business-grid,
  .merchant-grid{
    grid-template-columns:1fr !important;
  }
}



/* =========================================================
   CARD MERCHANT - MODELLO ORIGINALE RIPRISTINATO
   ========================================================= */
.business-list{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:20px !important;
  width:100% !important;
  align-items:stretch !important;
}

.business-card.merchant-card-modern{
  display:block !important;
  width:100% !important;
  max-width:none !important;
  min-width:0 !important;
  height:auto !important;
  min-height:0 !important;
  overflow:hidden !important;
  border:1px solid #e8ebf0 !important;
  border-radius:24px !important;
  background:#fff !important;
  box-shadow:0 12px 30px rgba(17,43,83,.13) !important;
  grid-column:1 / -1 !important;
}

.merchant-card-modern .business-photo-wrap{
  position:relative !important;
  display:block !important;
  width:100% !important;
  min-height:0 !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  overflow:hidden !important;
  background:#f4f5f7 !important;
  cursor:pointer !important;
}

.merchant-card-modern .business-photo{
  display:block !important;
  width:100% !important;
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  aspect-ratio:3 / 2 !important;
  object-fit:cover !important;
  object-position:center !important;
  margin:0 !important;
}

.merchant-card-bottom{
  display:grid !important;
  grid-template-columns:minmax(190px,30%) minmax(0,1fr) !important;
  gap:26px !important;
  align-items:stretch !important;
  padding:0 24px 24px !important;
  background:#fff !important;
}

.merchant-card-logo-box{
  min-height:220px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:20px !important;
  border-radius:0 0 24px 24px !important;
  background:#fff !important;
  box-shadow:0 8px 22px rgba(18,38,67,.15) !important;
  overflow:hidden !important;
}

.merchant-card-logo{
  display:block !important;
  width:100% !important;
  height:100% !important;
  max-width:190px !important;
  max-height:170px !important;
  object-fit:contain !important;
  object-position:center !important;
}

.merchant-card-content{
  min-width:0 !important;
  display:flex !important;
  flex-direction:column !important;
  justify-content:center !important;
  padding-top:18px !important;
}

.merchant-card-content h3{
  margin:0 !important;
  color:#071a42 !important;
  font-size:clamp(2rem,5vw,3.15rem) !important;
  line-height:1.04 !important;
  letter-spacing:-.045em !important;
  font-weight:800 !important;
  overflow-wrap:anywhere !important;
}

.merchant-card-address{
  display:flex !important;
  align-items:flex-start !important;
  gap:12px !important;
  margin:14px 0 18px !important;
  color:#1f2633 !important;
  font-size:clamp(1rem,2.5vw,1.38rem) !important;
  line-height:1.28 !important;
  font-weight:700 !important;
}

.merchant-pin{
  flex:none !important;
  color:#ff6500 !important;
  font-size:1.3rem !important;
  line-height:1.1 !important;
}

.merchant-card-cta{
  width:100% !important;
  min-height:76px !important;
  margin-top:auto !important;
  padding:12px 24px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:18px !important;
  border:0 !important;
  border-radius:12px !important;
  background:#ff6500 !important;
  color:#fff !important;
  box-shadow:0 7px 18px rgba(255,101,0,.22) !important;
  font-size:clamp(1.25rem,3vw,2rem) !important;
  font-weight:800 !important;
  line-height:1 !important;
  cursor:pointer !important;
}

.merchant-calendar-icon{
  width:48px !important;
  height:48px !important;
  flex:none !important;
  display:grid !important;
  place-items:center !important;
}

.merchant-calendar-icon svg{
  width:44px !important;
  height:44px !important;
  fill:none !important;
  stroke:#fff !important;
  stroke-width:2.6 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
}

.merchant-banner-logo-box,
.merchant-banner-logo{
  display:none !important;
}

/* Sconto: resta visibile ma non altera il layout originale */
.merchant-card-modern .merchant-discount-line{
  margin:0 0 10px !important;
}

@media(max-width:680px){
  .business-list{
    grid-template-columns:1fr !important;
    gap:18px !important;
  }

  .business-card.merchant-card-modern{
    border-radius:20px !important;
  }

  .merchant-card-modern .business-photo{
    aspect-ratio:3 / 2 !important;
  }

  .merchant-card-bottom{
    grid-template-columns:minmax(118px,31%) minmax(0,1fr) !important;
    gap:14px !important;
    padding:0 14px 14px !important;
  }

  .merchant-card-logo-box{
    min-height:150px !important;
    padding:12px !important;
    border-radius:0 0 18px 18px !important;
  }

  .merchant-card-logo{
    max-width:120px !important;
    max-height:115px !important;
  }

  .merchant-card-content{
    padding-top:12px !important;
  }

  .merchant-card-content h3{
    font-size:clamp(1.42rem,6vw,2rem) !important;
  }

  .merchant-card-address{
    gap:7px !important;
    margin:9px 0 12px !important;
    font-size:clamp(.82rem,3.4vw,1rem) !important;
  }

  .merchant-card-cta{
    min-height:58px !important;
    padding:9px 12px !important;
    gap:9px !important;
    border-radius:10px !important;
    font-size:clamp(.95rem,4vw,1.18rem) !important;
  }

  .merchant-calendar-icon{
    width:34px !important;
    height:34px !important;
  }

  .merchant-calendar-icon svg{
    width:32px !important;
    height:32px !important;
  }
}

@media(max-width:430px){
  .business-list{
    grid-template-columns:1fr !important;
    gap:16px !important;
  }

  .merchant-card-modern .business-photo{
    aspect-ratio:3 / 2 !important;
  }

  .merchant-card-bottom{
    grid-template-columns:105px minmax(0,1fr) !important;
    gap:11px !important;
    padding:0 11px 11px !important;
  }

  .merchant-card-logo-box{
    min-height:136px !important;
    padding:9px !important;
    border-radius:0 0 15px 15px !important;
  }

  .merchant-card-logo{
    max-width:98px !important;
    max-height:100px !important;
  }

  .merchant-card-content{
    padding-top:10px !important;
  }

  .merchant-card-content h3{
    font-size:1.28rem !important;
  }

  .merchant-card-address{
    margin:7px 0 10px !important;
    font-size:.78rem !important;
    line-height:1.25 !important;
  }

  .merchant-card-cta{
    min-height:52px !important;
    padding:8px 9px !important;
    gap:7px !important;
    font-size:.90rem !important;
  }

  .merchant-calendar-icon{
    width:29px !important;
    height:29px !important;
  }

  .merchant-calendar-icon svg{
    width:28px !important;
    height:28px !important;
  }
}


/* =========================================================
   BADGE SCONTO MERCHANT - VERSIONE PIÙ GRANDE
   ========================================================= */
.merchant-discount-badge{
  top:18px !important;
  left:18px !important;
  gap:12px !important;
  padding:11px 16px 11px 11px !important;
  border-radius:18px !important;
  box-shadow:0 10px 24px rgba(0,0,0,.24) !important;
}

.merchant-discount-badge strong{
  min-width:72px !important;
  height:52px !important;
  padding:0 12px !important;
  border-radius:14px !important;
  font-size:1.55rem !important;
  font-weight:900 !important;
}

.merchant-discount-badge span{
  font-size:.95rem !important;
  line-height:1.15 !important;
  font-weight:900 !important;
  letter-spacing:.02em !important;
}

@media(max-width:680px){
  .merchant-discount-badge{
    top:13px !important;
    left:13px !important;
    gap:9px !important;
    padding:9px 12px 9px 9px !important;
    border-radius:15px !important;
  }

  .merchant-discount-badge strong{
    min-width:60px !important;
    height:44px !important;
    padding:0 10px !important;
    font-size:1.28rem !important;
    border-radius:12px !important;
  }

  .merchant-discount-badge span{
    font-size:.82rem !important;
  }
}

@media(max-width:430px){
  .merchant-discount-badge{
    top:10px !important;
    left:10px !important;
    gap:8px !important;
    padding:8px 10px 8px 8px !important;
    border-radius:13px !important;
  }

  .merchant-discount-badge strong{
    min-width:54px !important;
    height:40px !important;
    font-size:1.15rem !important;
    border-radius:10px !important;
  }

  .merchant-discount-badge span{
    font-size:.74rem !important;
  }
}
