/* =========================================================
   viviTortoreto — Stili custom
   Dipende da Bootstrap 5.3 (vendor/bootstrap/bootstrap.min.css)
   ========================================================= */

/* -------- Design tokens -------- */
:root{
  --vivi-red:#e8362a;    --vivi-red-d:#c62b20;
  --vivi-blue:#18bef2;   --vivi-blue-d:#18bef2;
  --vivi-green:#5aa832;  --vivi-green-d:#478726;
  --vivi-orange:#e8912a; --vivi-orange-d:#c07422;
  --vivi-purple:#7c5fd1; --vivi-purple-d:#5f47a8;
  --vivi-cream:#f0eee9;  --vivi-sand:#faf8f4;
  --vivi-ink:#2a2620;    --vivi-muted:#7d776c; --vivi-line:#e2ddd4;
}

/* -------- Base -------- */
*{scroll-behavior:smooth;}
body{/*background:var(--vivi-cream);*/color:var(--vivi-ink);
     font-family:"Source Sans 3",system-ui,-apple-system,sans-serif;overflow-x:clip;font-size: 1.1rem;}
h1,h2,h3,h4,.font-display{font-family:"Baloo 2","Source Sans 3",sans-serif;font-weight:700;letter-spacing:-.01em;}

.border-0{
  border: 0!important;
}

/* -------- Text helpers -------- */
.eyebrow{font:700 .72rem/1 "Source Sans 3",sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--vivi-muted);}
.text-muted-2{color:var(--vivi-muted)!important;}
.hashtag{font-family:"Kalam",cursive;}
.heart{color:var(--vivi-red);}

.lead{font-weight: normal;}

/* -------- Brand utilities -------- */
.bg-sand{background:var(--vivi-sand);}
.bg-cream{background:var(--vivi-cream);}
.bg-emotion{background:#fff5f4;}
.bg-water{background:#f3fbff;}
.bg-nature{background:#f6fbef;}
.bg-vivi-red{background:var(--vivi-red);}
.bg-vivi-blue{background:var(--vivi-blue);}
.bg-vivi-green{background:var(--vivi-green);}

/* -------- Logo -------- */
.vivi-logo{font-family:"Baloo 2",sans-serif;font-weight:700;font-size:1.35rem;line-height:1;text-decoration:none;white-space:nowrap;}
.vivi-logo .g{color:var(--vivi-green);}
.vivi-logo .b{color:var(--vivi-blue);}
.vivi-logo.on-dark .g,
.vivi-logo.on-dark .b{color:#fff;}

/* -------- Buttons -------- */
.btn-vivi-red,.btn-vivi-blue,.btn-vivi-green{border-radius:50rem;font-weight:700;color:#fff;border:none;padding:.6rem 1.4rem;}
.btn-vivi-red{background:var(--vivi-red);}
.btn-vivi-red:hover{background:var(--vivi-red-d);color:#fff;}
.btn-vivi-blue{background:var(--vivi-blue);}
.btn-vivi-blue:hover{background:var(--vivi-blue-d);color:#fff;}
.btn-vivi-green{background:var(--vivi-green);}
.btn-vivi-green:hover{background:var(--vivi-green-d);color:#fff;}
.btn-outline-cream{border:1.5px solid rgba(255,255,255,.85);color:#fff;border-radius:50rem;font-weight:700;padding:.55rem 1.2rem;line-height: 1.8em;}
.btn-outline-cream:hover{background:#fff;color:var(--vivi-ink);}

/* -------- Pills / filters -------- */
.vivi-pill{display:inline-flex;align-items:center;padding:.35rem .85rem;border-radius:50rem;
  border:1.4px solid var(--vivi-line);color:var(--vivi-muted);background:#fff;font-weight:600;font-size:.85rem;
  cursor:pointer;transition:.15s;text-decoration:none;}
.vivi-pill:hover{border-color:var(--vivi-ink);color:var(--vivi-ink);}
.vivi-pill.active{border-color:var(--vivi-red);color:var(--vivi-red);background:#fff5f4;}
.vivi-pill.active-blue{border-color:var(--vivi-blue);color:var(--vivi-blue);background:#f3fbff;}

/* -------- Photo placeholders -------- */
.vivi-ph{background:linear-gradient(135deg,#e9e4db 0%,#f4f0e9 100%);color:#a49e92;
  display:flex;align-items:center;justify-content:center;text-align:center;
  font:600 .8rem/1.3 "Source Sans 3",sans-serif;border-radius:.9rem;overflow:hidden;/*padding:.5rem;*/
  border:1px solid rgba(0,0,0,.04);}
.vivi-ph-nobott{
  border-radius: .9rem .9rem 0 0;
}
.vivi-ph small{opacity:.75;font-weight:500;}
.vivi-ph--1-1{aspect-ratio:1;}
.vivi-ph--4-3{aspect-ratio:4/3;}
.vivi-ph img{max-width: 100%;height: auto; object-fit: cover;}

/* -------- Sections & cards -------- */
.section{padding:3.5rem 0;}
.section-tight{padding:2.4rem 0;}
.vivi-card{background:#fff;border:1px solid var(--vivi-line);border-radius:1rem;overflow:hidden;height:100%;
  transition:transform .18s, box-shadow .18s;}
.vivi-card:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(0,0,0,.08);}
.vivi-card--flat,.vivi-card--flat:hover{transform:none;box-shadow:none;transition:none;}
.vivi-card h5{color:#000;font-weight: bolder;font-size: 1.2rem;}
.vivi-card .fl{color:var(--vivi-blue); text-decoration: underline;}


/* -------- Top navbar -------- */
.navbar-top{z-index:1040;}

/* -------- Hero -------- */
.vivi-hero{position:relative;color:#fff;overflow:hidden;}
.vivi-hero-shell{min-height:min(74vh,540px);display:flex;align-items:flex-end;max-width: 2500px;margin:auto;}
.vivi-hero-shell img{min-height: 100%}
.vivi-hero .vivi-ph{border-radius:0;height:100%;position:absolute;inset:0;}
.vivi-hero-inner{position:relative;z-index:2;}
.vivi-hero::after{content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(0,0,0,.28) 0%,rgba(0,0,0,0) 35%,rgba(0,0,0,.55) 100%);}
.hero-nav{position:absolute;top:0;left:0;right:0;z-index:3;}

/* -------- Horizontal scroller -------- */
.hscroll{display:flex;gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:.5rem;-webkit-overflow-scrolling:touch;}
.hscroll::-webkit-scrollbar{height:6px;}
.hscroll::-webkit-scrollbar-thumb{background:#d8d3ca;border-radius:3px;}
.hscroll > *{scroll-snap-align:start;flex:0 0 auto;}

/* -------- Calendar (day-picker) -------- */
/* Settimana: L M M G V S D (lunedì-prima) — vedi vt_render_calendar_month in index.php */
.vivi-cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.4rem;width:100%;}
.vivi-cal .day{min-width:0;display:flex;align-items:center;justify-content:center;
  min-height:54px;padding:.4rem;border-radius:.6rem;
  background:#fff;border:1px solid var(--vivi-line);
  color:var(--vivi-ink);font-family:inherit;font-weight:600;font-size:.95rem;line-height:1;}
.vivi-cal .day.head{background:transparent;border:none;color:var(--vivi-muted);
  font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  min-height:0;padding:.25rem 0;}
.vivi-cal .day.empty{background:transparent;border-color:transparent;pointer-events:none;}
.vivi-cal .day .day-num{display:inline-block;line-height:1;}

/* Giorno cliccabile */
.vivi-cal .day-btn{cursor:pointer;transition:background .15s, border-color .15s, color .15s, transform .1s;}
.vivi-cal .day-btn:hover{border-color:var(--vivi-ink);}
.vivi-cal .day-btn:active{transform:scale(.97);}
.vivi-cal .day-btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(43,167,214,.3);}
/* Giorni con almeno un evento: sfondo opaco distinto dal bianco e dal selezionato */
.vivi-cal .day-btn.has-events{background:#f3fbff;border-color:var(--vivi-blue);}
.vivi-cal .day-btn.selected,
.vivi-cal .day-btn.selected.has-events{background:var(--vivi-blue);border-color:var(--vivi-blue);color:#fff;}

/* Navigazione mese */
.vivi-cal-nav{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;}
.vivi-cal-nav-title{font-family:"Baloo 2","Source Sans 3",sans-serif;font-weight:700;font-size:1.4rem;
  color:var(--vivi-ink);margin:0;text-transform:capitalize;}
.vivi-cal-nav-btn{background:transparent;border:0;padding:.4rem .55rem;color:var(--vivi-muted);
  cursor:pointer;border-radius:.5rem;transition:background .12s, color .12s;
  display:inline-flex;align-items:center;justify-content:center;}
.vivi-cal-nav-btn:hover:not(:disabled){background:var(--vivi-sand);color:var(--vivi-ink);}
.vivi-cal-nav-btn:disabled{opacity:.25;cursor:default;}

/* Colonna eventi (header cliccabile + carousel) */
/* Altezza allineata a .vivi-cal-nav (dominata dai bottoni ← →) */
.ev-header-wrap{position:relative;margin-bottom:1rem;min-height:2.4rem;display:flex;align-items:center;}
.ev-header{font-family:"Baloo 2","Source Sans 3",sans-serif;font-weight:700;font-size:1.15rem;
  line-height:1.3;color:var(--vivi-ink);text-transform:capitalize;}
.ev-header-btn{display:inline-flex;align-items:center;gap:.55rem;padding:.3rem .6rem;margin:-.3rem -.6rem;
  background:transparent;border:0;border-radius:.5rem;cursor:pointer;color:var(--vivi-ink);
  transition:background .12s;}
.ev-header-btn:hover{background:var(--vivi-sand);}
.ev-header-btn:focus-visible{outline:none;background:var(--vivi-sand);box-shadow:0 0 0 3px rgba(43,167,214,.28);}
#viviEventsHeaderBtn{
  background: transparent!important;
}
/*.ev-header-icon{color:var(--vivi-muted);flex:0 0 auto;position: absolute;right: 3em;top: 8px;}*/
.ev-header-icon{
  color:#fff;
  flex:0 0 auto;
  position: absolute;
  right: 3em;
  top: 50%;
  transform: translateY(-50%);
  background: var(--vivi-blue);
  padding: 0.4em;
  width: 1.8em;
  height: 1.8em;
  border-radius: 50%;
  overflow: visible;
}
/* Sovrappone l'input al bottone: iOS Safari apre il picker nativo solo con un tap reale
   sull'input stesso, non con showPicker()/click()/focus() invocati via JS. */
/*.ev-datepicker-input{position:absolute;top:0;left:0;width:100%;height:100%;
  opacity:0;border:0;padding:0;margin:0;background:transparent;color:transparent;
  font-size:16px;cursor:pointer;-webkit-appearance:none;appearance:none;
  -webkit-tap-highlight-color:transparent;z-index:2;}*/
.ev-datepicker-input{position:absolute;top:0;left:0;width:88%;height:100%;
  opacity:0;border:0;padding:0;margin:0;background:transparent;color:transparent;
  font-size:16px;cursor:pointer;-webkit-appearance:none;appearance:none;
  -webkit-tap-highlight-color:transparent;z-index:2;}

/* Modale calendario (usato in index-new.php su mobile). Il widget .vivi-cal-widget
   viene spostato qui via JS quando la viewport è < 992px. Su desktop il modale è
   completamente disabilitato: il widget torna nella sidebar. */
.vivi-cal-modal{position:fixed;inset:0;z-index:1060;display:none;
  align-items:center;justify-content:center;padding:1rem;}
.vivi-cal-modal.open{display:flex;}
.vivi-cal-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.55);
  animation:vt-fade-in .18s ease-out;}
.vivi-cal-modal-card{position:relative;z-index:1;background:#fff;border-radius:1rem;
  padding:1.5rem 1.25rem 1.25rem;max-width:min(420px,100%);width:100%;
  max-height:calc(100vh - 2rem);overflow-y:auto;
  box-shadow:0 20px 40px rgba(0,0,0,.28);animation:vt-modal-in .18s ease-out;}
.vivi-cal-modal-close{position:absolute;top:.5rem;right:.5rem;background:transparent;
  border:0;padding:.4rem;color:var(--vivi-muted);cursor:pointer;border-radius:.5rem;
  display:inline-flex;align-items:center;justify-content:center;transition:background .12s, color .12s;}
.vivi-cal-modal-close:hover{background:var(--vivi-sand);color:var(--vivi-ink);}
.vivi-cal-modal-body .vivi-cal-nav{margin-bottom:.75rem;}
body.vivi-modal-open{overflow:hidden;}
@keyframes vt-fade-in{from{opacity:0}to{opacity:1}}
@keyframes vt-modal-in{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
@media (min-width:992px){
  .vivi-cal-modal{display:none !important;}
}

.ev-list{display:grid;grid-template-columns:1fr;gap:.75rem;}
@media (min-width:992px){
  .ev-list{grid-template-columns:repeat(2,minmax(0,1fr));}
}
.ev-card{background:#fff;border:1px solid var(--vivi-line);border-radius:.9rem;padding:1rem 1.1rem;
  box-shadow:0 4px 14px rgba(0,0,0,.05);}
.ev-card-title{font-family:"Baloo 2","Source Sans 3",sans-serif;font-weight:700;
  font-size:1rem;line-height:1.3;color:var(--vivi-ink);margin:.35rem 0 .65rem;}
.ev-list-empty{padding:2rem 1rem;text-align:center;color:var(--vivi-muted);
  border:1px dashed var(--vivi-line);border-radius:.9rem;background:#fff;font-size:.9rem;}

/* Carousel eventi (Owl) */
.ev-carousel{position:relative;}
.ev-carousel.owl-carousel .owl-stage{display:flex;}
.ev-carousel.owl-carousel .owl-item{display:flex;}
.ev-carousel.owl-carousel .owl-item > .ev-slide{width:100%;height: min-content;padding-bottom:10px}
.ev-carousel .ev-slide{padding:0 .25rem;}
/* Dimezza la durata di animate.css (default 1s) sulle slide del carousel eventi */
.ev-carousel .owl-item.animated{-webkit-animation-duration:.5s;animation-duration:.5s;}
/* Altezza del wrapper gestita via JS, con transizione fluida in parallelo alla fade */
.ev-carousel .owl-stage-outer{transition:height .45s ease;}

.ev-carousel .owl-nav{position:absolute;top:-2.95rem;right:-.3rem;display:flex;gap:.15rem;margin:0;}
.ev-carousel .owl-nav .owl-prev,
.ev-carousel .owl-nav .owl-next{background:transparent;border:0;margin:0;padding:.3rem .45rem;
  color:var(--vivi-muted);border-radius:.5rem;transition:background .12s, color .12s;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;}
.ev-carousel .owl-nav .owl-prev:hover,
.ev-carousel .owl-nav .owl-next:hover{background:var(--vivi-sand);color:var(--vivi-ink);}
.ev-carousel .owl-nav .disabled{opacity:.25;pointer-events:none;}

/* Da lg in su il calendario è il selettore: nascondo frecce e disattivo header cliccabile */
@media (min-width:992px){
  .ev-carousel .owl-nav{display:none;}
  .ev-header-btn{pointer-events:none;cursor:default;padding:0;margin:0;background:transparent;}
  .ev-header-btn:hover,.ev-header-btn:focus-visible{background:transparent;box-shadow:none;}
  .ev-header-icon{display:none;}
  .ev-datepicker-input{display:none;}
}

/* Legenda (chip colorati) */
.legend-dot{display:inline-block;width:.9rem;height:.9rem;border-radius:.25rem;vertical-align:middle;background:#ccc;}
.legend-dot--red{background:var(--vivi-red);}
.legend-dot--blue{background:var(--vivi-blue);}
.legend-dot--green{background:var(--vivi-green);}
.legend-dot--orange{background:var(--vivi-orange);}
.legend-dot--purple{background:var(--vivi-purple);}

/* Chip categoria + lista dt/dd (riutilizzati nelle event card) */
.vivi-pop-cat{display:inline-flex;align-items:center;gap:.45rem;margin-bottom:.5rem;padding:.2rem .55rem;
  border-radius:50rem;background:var(--vivi-sand);
  font-size:.63rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--vivi-muted);}
.vivi-pop-cat .pop-dot{width:.5rem;height:.5rem;border-radius:50%;background:#ccc;flex:0 0 auto;}
.ev-red    .vivi-pop-cat .pop-dot{background:var(--vivi-red);}
.ev-blue   .vivi-pop-cat .pop-dot{background:var(--vivi-blue);}
.ev-green  .vivi-pop-cat .pop-dot{background:var(--vivi-green);}
.ev-orange .vivi-pop-cat .pop-dot{background:var(--vivi-orange);}
.ev-purple .vivi-pop-cat .pop-dot{background:var(--vivi-purple);}
.ev-red    .vivi-pop-cat{background:#fdecea;color:var(--vivi-red-d);}
.ev-blue   .vivi-pop-cat{background:#e6f5fb;color:var(--vivi-blue-d);}
.ev-green  .vivi-pop-cat{background:#eef6e5;color:var(--vivi-green-d);}
.ev-orange .vivi-pop-cat{background:#fdefdd;color:var(--vivi-orange-d);}
.ev-purple .vivi-pop-cat{background:#efeafa;color:var(--vivi-purple-d);}
.vivi-pop-list{display:grid;grid-template-columns:auto 1fr;column-gap:1rem;row-gap:.4rem;margin:0;}
.vivi-pop-list dt{margin:0;font-size:.62rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  color:var(--vivi-muted);align-self:center;}
.vivi-pop-list dd{margin:0;font-size:.9rem;font-weight:600;color:var(--vivi-ink);align-self:center;
  user-select:text;-webkit-user-select:text;}

@media(max-width:575px){
  .vivi-cal{gap:.3rem;}
  .vivi-cal .day{min-height:46px;padding:.25rem;font-size:.88rem;}
}

/* -------- Bento gallery -------- */
.bento{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:120px;gap:.75rem;}
.bento .vivi-ph{height:100%;}
.bento .b-hero{grid-column:span 2;grid-row:span 2;}
.bento .b-wide{grid-column:span 2;}
@media(max-width:575px){.bento{grid-auto-rows:90px;}}

/* -------- Event row -------- */
.ev-row{display:flex;gap:1rem;align-items:center;padding:.7rem 0;border-bottom:1px solid var(--vivi-line);}
.ev-row:last-child{border-bottom:none;}
.ev-date{flex:0 0 auto;width:56px;height:56px;border-radius:.7rem;background:var(--vivi-sand);
  border:1px solid var(--vivi-line);display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-weight:800;line-height:1;color:var(--vivi-ink);}
.ev-date small{font-size:.62rem;color:var(--vivi-muted);font-weight:700;margin-top:2px;}

/* -------- Reels -------- */
.reel{flex:0 0 auto;width:132px;aspect-ratio:9/16;}

/* -------- Sticky booking bar -------- */
.booking-bar{position:fixed;left:0;right:0;bottom:0;z-index:1030;background:#fff;
  border-top:1px solid var(--vivi-line);box-shadow:0 -6px 20px rgba(0,0,0,.08);padding:.6rem 0;}
body.has-bar{padding-bottom:76px;}

/* -------- Floating CTA -------- */
.fab{position:fixed;right:1.1rem;bottom:1.1rem;z-index:1030;box-shadow:0 8px 22px rgba(0,0,0,.22);}

/* -------- Footer -------- */
.vivi-footer a{color:rgba(255,255,255,.9);text-decoration:none;}
.vivi-footer a:hover{color:#fff;}
.vivi-footer .soc{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.18);
  display:inline-flex;align-items:center;justify-content:center;color:#fff;}

/* -------- Postcard builder -------- */
#cardCanvas{max-height:60vh;object-fit:contain;}
#dropzone{border:2px dashed var(--vivi-line);transition:.15s;}
#dropzone:hover,#dropzone.drag{border-color:var(--vivi-blue);background:var(--vivi-sand);}

/* -------- A11y / motion -------- */
@media (prefers-reduced-motion: reduce){*{transition:none!important;scroll-behavior:auto!important;}}
:focus-visible{outline:3px solid var(--vivi-blue);outline-offset:2px;}


.logotortoreto{ height:50px; }
.ilovetortoreto-top{ height:300px; margin-bottom: 30px}

.nounder{text-decoration: none;}


.sezione_scacchi .singriga,
.raccolta_eventi{display: grid; grid-template-columns: 50% 50%;}
.raccolta_eventi{gap: 1em}
.sezione_scacchi .singriga .gridimg img{
  display: block;
  object-fit: contain;
  width:100%;
}
.sezione_scacchi .singriga .gridtxt{
  padding: 3em 3em;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.lh-std{
  line-height: 1.2;
}

@media screen and (min-width: 992px){
  .sezione_scacchi .singriga:nth-child(odd) .gridimg{order:1}
  .sezione_scacchi .singriga:nth-child(even) .gridtxt{order:1}
}

@media screen and (max-width: 991px){
  .sezione_scacchi .singriga,
  .raccolta_eventi{grid-template-columns: 1fr;}
  .mob-less-padd{
    padding: 1.5em;
  }
  .ilovetortoreto-top {
    height: 190px;
    margin-bottom: 30px;
  }
}