@charset "UTF-8";

/* =================== TOKENS =================== */
:root,[data-theme="dark"]{
  --p:#D0BCFF; --op:#381E72; --pc:#4F378B; --opc:#EADDFF;
  --t:#EFB8C8; --tc:#633B48; --otc:#FFD8E4;
  --e:#F2B8B5; --oec:#F9DEDC;
  --bg:#141218; --osur:#E6E1E5; --osv:#CAC4D0;
  --out:#938F99; --outv:#49454F;
  --sc1:#1D1B20; --sc2:#211F26; --sc3:#2B2930; --sc4:#36343B;
  --inv:#E6E1E5; --oinv:#313033;
  --wa:#25D366; --wad:#128C7E;
  --sh:rgba(0,0,0,.55);
}
[data-theme="light"]{
  --p:#6750A4; --op:#fff; --pc:#EADDFF; --opc:#21005D;
  --t:#7D5260; --tc:#FFD8E4; --otc:#31111D;
  --e:#B3261E; --oec:#F9DEDC;
  --bg:#FEF7FF; --osur:#1D1B20; --osv:#49454F;
  --out:#79747E; --outv:#CAC4D0;
  --sc1:#F7F2FA; --sc2:#F3EDF7; --sc3:#ECE6F0; --sc4:#E6E0E9;
  --inv:#322F35; --oinv:#F5EFF7;
  --wa:#128C7E; --wad:#075E54;
  --sh:rgba(0,0,0,.12);
}

/* =================== BASE =================== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html,body{
  height:100%;
  overscroll-behavior:none;
  overflow:hidden;
  position:fixed;
  width:100%;
  /* Colore di sfondo dietro al notch */
  background:var(--bg);
}
body{
  background:var(--bg);color:var(--osur);
  font-family:'Nunito',sans-serif;font-size:15px;
  display:flex;align-items:center;justify-content:center;
  transition:background .3s,color .3s;
}
.ms{
  font-family:'Material Symbols Rounded';
  font-weight:400;font-style:normal;font-size:24px;
  font-variation-settings:'FILL' 1,'wght' 500,'GRAD' 0,'opsz' 24;
  line-height:1;display:inline-flex;user-select:none;
  vertical-align:middle;
}

/* =================== APP SHELL =================== */
.app{
  width:100%;max-width:430px;
  height:100dvh;height:100svh;
  background:var(--bg);
  display:flex;flex-direction:column;
  position:relative;overflow:hidden;
  box-shadow:0 0 60px rgba(103,80,164,.18);
  transition:background .3s;
  /* Safe area top (notch/Dynamic Island) */
  padding-top:env(safe-area-inset-top, 0px);
}

/* =================== STATUS BAR =================== */


/* =================== TOP BAR =================== */
.tbar{
  background:var(--sc1);padding:4px 12px 12px;
  flex-shrink:0;position:relative;z-index:10;
  transition:background .3s;
}
.tbar-row{display:flex;align-items:center;gap:4px;height:44px;}
.iBtn{
  width:40px;height:40px;border-radius:9999px;
  border:none;background:transparent;color:var(--osur);
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:background .15s,transform .2s cubic-bezier(.34,1.56,.64,1);
  flex-shrink:0;
}
.iBtn:hover{background:rgba(127,100,200,.1);}
.iBtn:active{transform:scale(.86);}
.iBtn .ms{font-size:22px;}
.logo{
  flex:1;text-align:center;
  font-family:'Nunito',sans-serif;font-size:24px;font-weight:900;font-style:italic;
  letter-spacing:-1px;line-height:1;
  background:linear-gradient(135deg,var(--p) 0%,#C084FC 55%,var(--t) 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
[data-theme="light"] .logo{
  background:linear-gradient(135deg,#6750A4,#9333EA,#7D5260);
  -webkit-background-clip:text;background-clip:text;
}

/* =================== PROGRESS BAR =================== */
.prog-wrap{
  padding:0 16px 10px;background:var(--sc1);
  flex-shrink:0;transition:background .3s;
}
.prog-info{
  display:flex;justify-content:space-between;align-items:center;
  margin-bottom:6px;
}
.prog-title{font-size:12px;font-weight:800;letter-spacing:.06em;color:var(--out);}
.prog-count{font-size:12px;font-weight:800;color:var(--p);}
.prog-track{
  height:4px;background:var(--sc4);border-radius:9999px;overflow:hidden;
}
.prog-fill{
  height:100%;border-radius:9999px;
  background:linear-gradient(90deg,var(--p),var(--t));
  transition:width .5s cubic-bezier(.34,1.2,.64,1);
}

/* =================== STEP AREA =================== */
.step-area{
  flex:1;position:relative;overflow:hidden;
}
.step{
  position:absolute;inset:0;
  display:flex;flex-direction:column;
  padding:clamp(12px,4vw,24px) clamp(14px,5vw,24px) 12px;
  opacity:0;pointer-events:none;
  z-index:0;
  transition:opacity .3s,transform .35s cubic-bezier(.2,0,0,1);
}
.step.active{opacity:1;pointer-events:auto;transform:translateX(0)!important;z-index:1;}
.step.from-right{transform:translateX(60px);}
.step.from-left{transform:translateX(-60px);}

/* step icon */
.step-ico{
  width:clamp(40px,10vw,56px);height:clamp(40px,10vw,56px);
  border-radius:clamp(12px,4vw,20px);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:clamp(8px,2vw,16px);flex-shrink:0;
  background:linear-gradient(135deg,var(--pc),var(--tc));
  transition:background .3s;
}
[data-theme="light"] .step-ico{background:linear-gradient(135deg,#6750A4,#7D5260);}
.step-ico .ms{font-size:28px;color:#fff;}

/* step text */
.step-q{
  font-size:clamp(20px,6vw,26px);font-weight:900;line-height:1.15;
  color:var(--osur);margin-bottom:4px;
  animation:fadeUp .35s cubic-bezier(.2,0,0,1) both;
}
.step-hint{
  font-size:13px;font-weight:600;color:var(--out);
  margin-bottom:clamp(10px,3vw,20px);line-height:1.5;
  animation:fadeUp .35s cubic-bezier(.2,0,0,1) .05s both;
}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:translateY(0);}}

/* =================== INPUT FIELDS =================== */
.field-wrap{
  flex:1;
  display:flex;
  flex-direction:column;
  gap:10px;
  overflow:hidden; /* default: nasconde overflow */
  min-height:0;    /* necessario per flex child con scroll */
}
/* Step con contenuto scrollabile (step 6 oggetti) */
.field-wrap.scrollable{
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
  /* Padding bottom per non tagliare l'ultimo elemento */
  padding-bottom:8px;
}
.field-wrap.scrollable::-webkit-scrollbar{display:none;}

/* filled text field */
.mf{position:relative;animation:fadeUp .35s cubic-bezier(.2,0,0,1) .1s both;}
.mf input,.mf select,.mf textarea{
  width:100%;background:var(--sc2);
  border:none;border-bottom:2px solid var(--out);
  border-radius:12px 12px 0 0;
  color:var(--osur);font-family:'Nunito',sans-serif;
  font-size:16px;font-weight:700;
  padding:22px 14px 8px;outline:none;-webkit-appearance:none;
  transition:border-color .18s,background .18s;
  caret-color:var(--p);
}
.mf input:focus,.mf select:focus,.mf textarea:focus{
  background:var(--sc3);border-bottom-color:var(--p);
}
.mf label{
  position:absolute;top:50%;left:14px;transform:translateY(-50%);
  font-size:16px;font-weight:700;color:var(--out);
  pointer-events:none;
  transition:top .2s cubic-bezier(.34,1.2,.64,1),font-size .2s,color .2s,transform .2s;
}
.mf.ta label{top:20px;transform:none;}
.mf input:focus~label,
.mf input:not(:placeholder-shown)~label,
.mf select:focus~label,.mf select.hv~label,
.mf textarea:focus~label,
.mf textarea:not(:placeholder-shown)~label{
  top:8px;font-size:11px;font-weight:800;
  color:var(--p);transform:none;letter-spacing:.04em;
}
.mf.ta textarea:focus~label,
.mf.ta textarea:not(:placeholder-shown)~label{top:6px;font-size:11px;font-weight:800;color:var(--p);}
.mf.wi input,.mf.wi select{padding-left:46px;}
.mf.wi label{left:46px;}
.mf .fi{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--out);pointer-events:none;transition:color .18s;}
.mf input:focus~.fi,.mf select:focus~.fi{color:var(--p);}
.mf.err input,.mf.err select,.mf.err textarea{border-bottom-color:var(--e);}
.mf.err label{color:var(--e)!important;}
.mf .sup{font-size:11px;font-weight:700;margin-top:4px;padding-left:14px;color:var(--out);display:none;}
.mf.err .sup{display:block;color:var(--e);}
.mf.wi.err .fi{color:var(--e);}
.fr2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
@media(max-width:360px){.fr2{grid-template-columns:1fr;}}

/* =================== CHOICE TILES =================== */
.tiles{display:flex;flex-direction:column;gap:8px;overflow-y:auto;flex:1;}
.tiles::-webkit-scrollbar{display:none;}
.tile{
  display:flex;align-items:center;gap:14px;
  background:var(--sc2);border-radius:16px;
  padding:14px 16px;cursor:pointer;
  border:2px solid transparent;
  transition:
    border-color .2s,background .2s,
    transform .22s cubic-bezier(.34,1.56,.64,1);
  animation:fadeUp .35s cubic-bezier(.2,0,0,1) both;
  flex-shrink:0;
}
.tile:nth-child(1){animation-delay:.05s;}
.tile:nth-child(2){animation-delay:.1s;}
.tile:nth-child(3){animation-delay:.15s;}
.tile:nth-child(4){animation-delay:.2s;}
.tile:nth-child(5){animation-delay:.25s;}
.tile:nth-child(6){animation-delay:.3s;}
.tile:hover{background:var(--sc3);transform:translateX(4px);}
.tile:active{transform:scale(.97);}
.tile.sel{border-color:var(--p);background:rgba(103,80,164,.15);}
[data-theme="light"] .tile.sel{background:rgba(103,80,164,.08);}
.tile-ico{
  width:40px;height:40px;border-radius:12px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:rgba(103,80,164,.2);color:var(--p);
  transition:background .2s,border-radius .3s cubic-bezier(.34,1.56,.64,1);
}
.tile.sel .tile-ico{background:rgba(103,80,164,.3);}
.tile-ico .ms{font-size:20px;}
.tile-lbl{font-size:15px;font-weight:800;color:var(--osur);}
.tile-sub{font-size:12px;font-weight:600;color:var(--out);}
.tile-check{
  margin-left:auto;flex-shrink:0;
  width:22px;height:22px;border-radius:9999px;
  border:2px solid var(--outv);
  display:flex;align-items:center;justify-content:center;
  transition:background .2s,border-color .2s,transform .3s cubic-bezier(.34,1.56,.64,1);
}
.tile.sel .tile-check{
  background:var(--p);border-color:var(--p);
  transform:scale(1.1) rotate(360deg);
}
.tile-check .ms{font-size:14px;color:var(--op);display:none;}
.tile.sel .tile-check .ms{display:flex;}

/* =================== CHIPS (multi-select) =================== */
.chips{display:flex;flex-wrap:wrap;gap:8px;animation:fadeUp .35s cubic-bezier(.2,0,0,1) .1s both;}
.chip{
  display:flex;align-items:center;gap:4px;
  height:36px;padding:0 14px;
  border:1.5px solid var(--outv);border-radius:8px;
  background:transparent;color:var(--osv);
  font-family:'Nunito',sans-serif;font-size:13px;font-weight:700;
  cursor:pointer;user-select:none;
  transition:background .18s,color .18s,border-color .18s,
    border-radius .3s cubic-bezier(.34,1.56,.64,1),
    padding .3s cubic-bezier(.34,1.56,.64,1),
    transform .18s cubic-bezier(.34,1.56,.64,1);
}
.chip:hover{background:rgba(103,80,164,.1);border-color:var(--p);color:var(--p);transform:translateY(-2px);}
.chip:active{transform:scale(.92);}
.chip.sel{background:rgba(103,80,164,.2);border-color:var(--p);color:var(--p);border-radius:9999px;padding:0 12px 0 8px;}
.chip .ck{font-family:'Material Symbols Rounded';font-variation-settings:'FILL' 1;font-size:16px;display:none;animation:ckIn .3s cubic-bezier(.34,1.56,.64,1) both;}
.chip.sel .ck{display:inline-flex;}
@keyframes ckIn{from{transform:scale(0) rotate(-180deg);}to{transform:scale(1) rotate(0);}}

/* =================== SLIDER =================== */
.sl-wrap{animation:fadeUp .35s cubic-bezier(.2,0,0,1) .1s both;}
.sl-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.sl-lbl{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--out);}
.sl-val{
  font-size:18px;font-weight:900;color:var(--p);
  background:rgba(103,80,164,.15);
  padding:4px 14px;border-radius:9999px;
  transition:transform .25s cubic-bezier(.34,1.56,.64,1);
}
.sl-val.pop{transform:scale(1.18);}
input[type=range]{
  -webkit-appearance:none;width:100%;height:6px;
  border-radius:9999px;background:var(--sc4);
  outline:none;cursor:pointer;border:none;padding:0;
}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:28px;height:28px;border-radius:50%;
  background:var(--p);
  box-shadow:0 0 0 0 rgba(103,80,164,.3);
  transition:box-shadow .18s,transform .2s cubic-bezier(.34,1.56,.64,1);
}
input[type=range]:hover::-webkit-slider-thumb{box-shadow:0 0 0 10px rgba(103,80,164,.15);transform:scale(1.1);}
input[type=range]:active::-webkit-slider-thumb{box-shadow:0 0 0 14px rgba(103,80,164,.2);transform:scale(.9);}
.sl-ends{display:flex;justify-content:space-between;font-size:11px;font-weight:700;color:var(--out);margin-top:8px;}

/* =================== SUMMARY (step finale) =================== */
.summary{
  background:var(--sc2);border-radius:20px;overflow:hidden;
  animation:fadeUp .35s cubic-bezier(.2,0,0,1) .1s both;
  flex:1;overflow-y:auto;
}
.summary::-webkit-scrollbar{display:none;}
.sum-row{
  display:flex;align-items:center;gap:12px;
  padding:13px 16px;
  border-bottom:1px solid var(--outv);
  transition:background .15s;
}
.sum-row:last-child{border-bottom:none;}
.sum-row:hover{background:var(--sc3);}
.sum-ico{
  width:32px;height:32px;border-radius:9999px;
  background:rgba(103,80,164,.18);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.sum-ico .ms{font-size:16px;color:var(--p);}
.sum-key{font-size:12px;font-weight:800;color:var(--out);}
.sum-val{font-size:14px;font-weight:700;color:var(--osur);}

/* =================== BOTTOM ACTIONS =================== */
.bact{
  flex-shrink:0;padding:10px 16px 16px;
  background:var(--bg);
  display:flex;gap:10px;align-items:center;
  transition:background .3s;
}
.btn-back{
  width:48px;height:52px;border-radius:9999px;
  border:1.5px solid var(--outv);background:transparent;
  color:var(--osur);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  transition:background .18s,transform .2s cubic-bezier(.34,1.56,.64,1),border-color .18s;
}
.btn-back:hover{background:var(--sc3);border-color:var(--p);}
.btn-back:active{transform:scale(.88);}
.btn-back .ms{font-size:22px;}
.btn-next{
  flex:1;height:52px;border:none;border-radius:9999px;
  background:linear-gradient(135deg,var(--p),var(--t));
  color:#fff;font-family:'Nunito',sans-serif;
  font-size:16px;font-weight:900;letter-spacing:.02em;
  cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;
  box-shadow:0 4px 20px rgba(103,80,164,.35);
  transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .2s;
  position:relative;overflow:hidden;
}
[data-theme="light"] .btn-next{background:linear-gradient(135deg,#6750A4,#7D5260);}
.btn-next::before{content:'';position:absolute;inset:0;background:#fff;opacity:0;transition:opacity .18s;border-radius:inherit;}
.btn-next:hover{transform:translateY(-3px) scale(1.01);box-shadow:0 8px 28px rgba(103,80,164,.5);}
.btn-next:hover::before{opacity:.07;}
.btn-next:active{transform:scale(.95);}
.btn-next.wa-style{
  background:linear-gradient(135deg,var(--wa),var(--wad));
  box-shadow:0 4px 20px rgba(37,211,102,.35);
  transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .2s;
}
.btn-next.wa-style:hover{box-shadow:0 8px 28px rgba(37,211,102,.5);}
.ripple-el{position:absolute;border-radius:50%;background:rgba(255,255,255,.25);transform:scale(0);animation:rpl .6s linear;pointer-events:none;}
@keyframes rpl{to{transform:scale(4);opacity:0;}}

/* =================== BOTTOM NAV =================== */
.bnav{
  flex-shrink:0;background:var(--sc1);
  border-top:1px solid var(--outv);
  display:flex;align-items:stretch;
  height:calc(68px + env(safe-area-inset-bottom, 0px));
  padding-bottom:env(safe-area-inset-bottom, 0px);
  transition:background .3s;
}

/* Fix iOS PWA standalone: classe aggiunta via JS con window.navigator.standalone */
.ios-standalone .bnav{
  padding-bottom:env(safe-area-inset-bottom, 34px);
  height:calc(68px + env(safe-area-inset-bottom, 34px));
}
.nitem{
  flex:1;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:3px;
  border:none;background:transparent;
  color:var(--out);cursor:pointer;
  transition:color .2s;position:relative;
  padding:10px 0 10px;
}
.nitem.act{color:var(--p);}
.nind{display:none;}
.npill{
  width:60px;height:34px;border-radius:9999px;
  display:flex;align-items:center;justify-content:center;
  background:transparent;
  transition:background .25s cubic-bezier(.34,1.56,.64,1),width .25s;
}
.nitem.act .npill{background:rgba(103,80,164,.18);width:68px;}
.npill .ms{
  font-size:30px;
  /* Fix: tutte le icone sempre filled -- evita il morphing FILL 0->1 scattoso */
  font-variation-settings:'FILL' 1,'wght' 400,'GRAD' 0,'opsz' 24;
  transition:transform .2s cubic-bezier(.34,1.56,.64,1), opacity .2s ease;
}
/* Icone non attive: stessa icona ma piu opaca, senza cambio FILL */
.nitem:not(.act) .npill .ms{
  opacity:.45;
  transform:scale(.9);
}
.nitem.act .npill .ms{
  opacity:1;
  transform:scale(1);
}
/* Hover fluido -- solo scala, niente font-variation */
@media(hover:hover){
  .nitem:hover .npill .ms{
    transform:scale(1.05);
    opacity:.75;
  }
  .nitem.act:hover .npill .ms{
    transform:scale(1.05);
    opacity:1;
  }
}
.nlbl{font-size:11px;font-weight:800;letter-spacing:.03em;}

/* =================== OTHER PAGES =================== */
.opage{
  position:absolute;inset:0;
  overflow-y:auto;padding:20px 20px 16px;
  opacity:0;pointer-events:none;scrollbar-width:none;
  z-index:0;
  transition:opacity .3s,transform .35s cubic-bezier(.2,0,0,1);
  transform:translateX(60px);
}
.opage::-webkit-scrollbar{display:none;}
.opage.active{opacity:1;pointer-events:auto;transform:translateX(0);z-index:1;}
.opage.from-left{transform:translateX(-60px);}

.oh{
  background:linear-gradient(145deg,var(--pc),var(--tc));
  border-radius:24px;padding:22px;margin-bottom:14px;
  position:relative;overflow:hidden;
}
[data-theme="light"] .oh{background:linear-gradient(145deg,#6750A4,#7D5260);}
.oh-wm{font-family:'Nunito',sans-serif;font-size:52px;font-weight:900;font-style:italic;color:rgba(255,255,255,.1);position:absolute;right:-6px;bottom:-10px;letter-spacing:-3px;pointer-events:none;line-height:1;}
.oh-ttl{font-size:22px;font-weight:900;color:var(--opc);margin-bottom:4px;}
[data-theme="light"] .oh-ttl{color:#fff;}
.oh-sub{font-size:13px;font-weight:600;color:var(--opc);opacity:.8;line-height:1.5;}
[data-theme="light"] .oh-sub{color:rgba(255,255,255,.85);}

.feat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;}
.feat{background:var(--sc2);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:8px;transition:transform .2s cubic-bezier(.34,1.56,.64,1),background .3s;}
.feat:hover{transform:translateY(-3px);}
.feat-i{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:18px;}
.fi-pu{background:rgba(103,80,164,.2);color:var(--p);}
.fi-pk{background:rgba(125,82,96,.2);color:var(--t);}
.fi-gr{background:rgba(37,211,102,.15);color:var(--wa);}
.fi-bl{background:rgba(33,150,243,.15);color:#64B5F6;}
.feat-ttl{font-size:13px;font-weight:800;color:var(--osur);}
.feat-dsc{font-size:11px;font-weight:600;color:var(--out);line-height:1.4;}

.t-card{background:var(--sc2);border-radius:18px;padding:16px;display:flex;align-items:center;gap:12px;margin-bottom:10px;transition:background .3s;}
.t-ava{width:46px;height:46px;border-radius:9999px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:900;color:#fff;}
.ta1{background:linear-gradient(135deg,var(--p),#9C27B0);}
.ta2{background:linear-gradient(135deg,var(--t),#E91E63);}
.t-nm{font-size:14px;font-weight:800;color:var(--osur);}
.t-rl{font-size:12px;font-weight:600;color:var(--out);}

.c-list{display:flex;flex-direction:column;gap:10px;}
.c-item{
  background:var(--sc2);border-radius:18px;
  display:flex;align-items:center;gap:12px;
  padding:14px 16px;cursor:pointer;
  text-decoration:none;color:inherit;
  transition:background .18s,transform .2s cubic-bezier(.34,1.56,.64,1);
}
.c-item:hover{transform:translateX(4px);}
.c-ico{width:42px;height:42px;border-radius:13px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:20px;}
.ci-wa{background:linear-gradient(135deg,#25D366,#128C7E);color:#fff;}
.ci-ml{background:linear-gradient(135deg,#EA4335,#FBBC05);color:#fff;}
.ci-wb{background:linear-gradient(135deg,#4285F4,#34A853);color:#fff;}
.ci-ig{background:linear-gradient(135deg,#E1306C,#833AB4);color:#fff;}
.c-lbl{font-size:13px;font-weight:800;color:var(--osur);}
.c-val{font-size:12px;font-weight:600;color:var(--out);}
.c-arr{margin-left:auto;color:var(--out);}

/* =================== SNACKBAR =================== */
.snack{
  position:fixed;bottom:80px;left:50%;
  transform:translateX(-50%) translateY(16px);opacity:0;
  background:var(--inv);color:var(--oinv);
  padding:12px 18px;border-radius:4px;
  font-size:13px;font-weight:700;z-index:999;white-space:nowrap;
  transition:opacity .28s,transform .28s cubic-bezier(.34,1.56,.64,1);
  pointer-events:none;box-shadow:0 4px 12px var(--sh);
}
.snack.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* -- INSTALL BANNER -- */
.install-overlay{
  position:fixed;inset:0;z-index:600;
  display:flex;align-items:flex-end;justify-content:center;
  opacity:0;pointer-events:none;
  transition:opacity .3s ease;
  background:rgba(0,0,0,.45);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
}
.install-overlay.show{opacity:1;pointer-events:auto;}
.install-sheet{
  background:var(--sc1);
  border-radius:24px 24px 0 0;
  padding:12px 20px 32px;
  width:100%;max-width:430px;
  transform:translateY(100%);
  transition:transform .4s cubic-bezier(.34,1.2,.64,1);
  box-shadow:0 -4px 24px rgba(0,0,0,.3);
}
.install-overlay.show .install-sheet{transform:translateY(0);}
.install-drag{
  width:32px;height:4px;border-radius:9999px;
  background:var(--outv);margin:0 auto 16px;
}
.install-row{display:flex;align-items:center;gap:14px;margin-bottom:14px;}
.install-ico{
  width:52px;height:52px;border-radius:16px;flex-shrink:0;
  background:rgba(103,80,164,.15);
  display:flex;align-items:center;justify-content:center;
}
.install-text{flex:1;}
.install-title{font-size:16px;font-weight:900;color:var(--osur);margin-bottom:2px;}
.install-sub{font-size:13px;font-weight:600;color:var(--out);line-height:1.4;}
.install-close{
  width:32px;height:32px;border-radius:9999px;
  border:none;background:var(--sc3);
  color:var(--out);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  transition:background .18s;
}
.install-close:hover{background:var(--sc4);}
.ios-step{
  display:flex;align-items:center;gap:12px;
  padding:10px 0;
  border-bottom:1px solid var(--outv);
  font-size:14px;font-weight:600;color:var(--osur);line-height:1.4;
}
.ios-step:last-child{border-bottom:none;}
.ios-num{
  width:26px;height:26px;border-radius:9999px;
  background:rgba(103,80,164,.2);color:var(--p);
  display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:900;flex-shrink:0;
}
.install-btn{
  width:100%;height:50px;margin-top:14px;
  border:none;border-radius:9999px;
  background:linear-gradient(135deg,var(--p),var(--t));
  color:#fff;font-family:'Nunito',sans-serif;
  font-size:15px;font-weight:900;
  cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;
  box-shadow:0 4px 16px rgba(103,80,164,.35);
  transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s;
}
.install-btn:hover{transform:scale(1.02);box-shadow:0 6px 22px rgba(103,80,164,.5);}
/* =================== INFO SIDE DRAWER =================== */
.info-overlay{
  position:fixed;inset:0;z-index:700;
  display:flex;align-items:stretch;justify-content:flex-end;
  opacity:0;pointer-events:none;
  background:rgba(0,0,0,0);
  transition:opacity .35s ease, background .35s ease;
}
.info-overlay.show{
  opacity:1;pointer-events:auto;
  background:rgba(0,0,0,.55);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
.info-drawer{
  width:88%;max-width:340px;
  height:100%;
  background:var(--bg);
  display:flex;flex-direction:column;
  border-radius:28px 0 0 28px;
  transform:translateX(110%);
  transition:transform .45s cubic-bezier(.2,0,0,1);
  box-shadow:-12px 0 48px rgba(0,0,0,.4);
  overflow:hidden;
}
.info-overlay.show .info-drawer{transform:translateX(0);}

/* ── Scrollable body ── */
.info-body{
  flex:1;
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
}
.info-body::-webkit-scrollbar{display:none;}

/* ── Hero banner (stile .oh) ── */
.info-hero{
  background:linear-gradient(145deg,var(--pc),var(--tc));
  padding:calc(env(safe-area-inset-top,0px) + 20px) 20px 20px;
  position:relative;overflow:hidden;
  flex-shrink:0;
}
[data-theme="light"] .info-hero{background:linear-gradient(145deg,#6750A4,#7D5260);}
.info-hero-wm{
  font-family:'Nunito',sans-serif;
  font-size:64px;font-weight:900;font-style:italic;
  color:rgba(255,255,255,.08);
  position:absolute;right:-8px;bottom:-12px;
  letter-spacing:-3px;pointer-events:none;line-height:1;
}
.info-hero-close{
  position:absolute;top:calc(env(safe-area-inset-top,0px) + 12px);right:14px;
  width:44px;height:44px;border-radius:9999px;
  border:none;background:rgba(255,255,255,.15);
  color:#fff;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .18s,transform .2s cubic-bezier(.34,1.56,.64,1);
  backdrop-filter:blur(4px);
  touch-action:manipulation;
}
.info-hero-close:hover{background:rgba(255,255,255,.28);}
.info-hero-close:active{transform:scale(.88);}
.info-hero-close .ms{font-size:18px;}
.info-hero-logo{
  font-family:'Nunito',sans-serif;
  font-size:32px;font-weight:900;font-style:italic;
  color:#fff;letter-spacing:-1px;line-height:1;
  margin-bottom:3px;
  animation:fadeUp .4s cubic-bezier(.2,0,0,1) both .05s;
}
.info-hero-version{
  display:inline-flex;align-items:center;gap:6px;
  background:rgba(255,255,255,.18);
  border-radius:9999px;padding:2px 10px;
  font-size:11px;font-weight:800;letter-spacing:.08em;
  color:#fff;margin-bottom:12px;
  animation:fadeUp .4s cubic-bezier(.2,0,0,1) both .1s;
}
.info-hero-desc{
  font-size:13px;font-weight:600;
  color:rgba(255,255,255,.82);line-height:1.6;
  animation:fadeUp .4s cubic-bezier(.2,0,0,1) both .15s;
}

/* ── Section divider (stile app) ── */
.info-divider{
  font-size:11px;font-weight:800;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--p);
  margin:16px 16px 8px;
  display:flex;align-items:center;gap:8px;
  animation:fadeUp .35s cubic-bezier(.2,0,0,1) both;
}
.info-divider .ms{font-size:13px;}
.info-divider-line{
  flex:1;height:1px;
  background:linear-gradient(to right,var(--outv),transparent);
}

/* ── List items (stile .c-item) ── */
.info-list{display:flex;flex-direction:column;gap:8px;padding:0 12px;}
.info-item{
  display:flex;align-items:center;gap:12px;
  background:var(--sc2);border-radius:18px;
  padding:14px 16px;
  text-decoration:none;color:inherit;
  transition:background .18s,transform .2s cubic-bezier(.34,1.56,.64,1);
  animation:fadeUp .35s cubic-bezier(.2,0,0,1) both;
}
.info-item:hover{background:var(--sc3);transform:translateX(4px);}
.info-item:active{transform:scale(.97);}
.info-item-ico{
  width:42px;height:42px;border-radius:13px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
}
.info-item-ico--shield{background:linear-gradient(135deg,var(--p),#9C27B0);}
.info-item-ico--gavel{background:linear-gradient(135deg,var(--t),#E91E63);}
.info-item-ico .ms{font-size:20px;color:#fff;}
.info-item-body{flex:1;}
.info-item-lbl{font-size:14px;font-weight:800;color:var(--osur);}
.info-item-sub{font-size:12px;font-weight:600;color:var(--out);}
.info-item-arr{font-size:20px;color:var(--out);}

/* ── Credits Spagoweb (stile .feat) ── */
.info-credits{
  margin:0 12px;
  background:var(--sc2);border-radius:20px;
  padding:16px;
  animation:fadeUp .35s cubic-bezier(.2,0,0,1) both .1s;
}
.info-credits-logo{margin-bottom:10px;display:flex;justify-content:center;}
.info-credits-logo img{height:128px;object-fit:contain;}
.info-credits-desc{
  font-size:12px;font-weight:600;color:var(--out);
  line-height:1.5;margin-bottom:14px;
}
.info-credits-links{display:flex;flex-direction:column;gap:8px;}
.info-credits-link{
  display:flex;align-items:center;gap:10px;
  background:var(--sc3);border-radius:12px;
  padding:10px 12px;
  font-size:13px;font-weight:700;
  color:var(--osur);text-decoration:none;
  transition:background .18s,transform .2s cubic-bezier(.34,1.56,.64,1);
}
.info-credits-link:hover{background:var(--sc4);transform:translateX(3px);}
.info-credits-link .ms{font-size:16px;color:var(--p);}

/* ── Footer ── */
.info-footer{
  padding:20px 20px calc(env(safe-area-inset-bottom,0px) + 16px);
  font-size:11px;font-weight:700;
  color:var(--out);opacity:.5;
  text-align:center;
}

/* =================== QUANTITY SELECTOR =================== */

/* Chip set dentro step scrollabile: padding per non tagliare bordi */
#chips-oggetti{
  padding:2px 2px 4px;
  margin-bottom:16px !important;
}
.qty-label-top{
  font-size:11px;font-weight:800;
  letter-spacing:.1em;text-transform:uppercase;
  color:var(--out);margin-bottom:12px;
}
.qty-selector{
  display:flex;
  align-items:flex-end;
  gap:8px;
  height:130px;
  padding:0 4px;
}
.qty-bar{
  flex:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-end;
  gap:6px;
  background:transparent;
  border:none;
  cursor:pointer;
  padding:0;
  -webkit-tap-highlight-color:transparent;
  outline:none;
}
.qty-bar-track{
  width:100%;
  border-radius:6px 6px 0 0;
  background:var(--sc3);
  overflow:hidden;
  position:relative;
  transition:background .2s ease;
  /* Altezze progressive: ogni blocco e piu alto del precedente */
}
.qty-bar:nth-child(1) .qty-bar-track{ height:32px; }
.qty-bar:nth-child(2) .qty-bar-track{ height:52px; }
.qty-bar:nth-child(3) .qty-bar-track{ height:72px; }
.qty-bar:nth-child(4) .qty-bar-track{ height:92px; }
.qty-bar:nth-child(5) .qty-bar-track{ height:112px; }

.qty-bar-fill{
  position:absolute;
  bottom:0;left:0;right:0;
  height:0%;
  border-radius:inherit;
  background:linear-gradient(to top, var(--p), var(--t));
  transition:height .4s cubic-bezier(.34,1.2,.64,1);
}

/* Stato attivo: fill al 100% + effetto glow */
.qty-bar.active .qty-bar-fill{
  height:100%;
}
.qty-bar.active .qty-bar-track{
  box-shadow:0 0 12px rgba(103,80,164,.35);
}

/* Stato "prima del selezionato" (illuminato parzialmente) */
.qty-bar.lit .qty-bar-fill{
  height:100%;
  background:linear-gradient(to top, var(--p), var(--t));
  opacity:.45;
}

/* Labels sotto i blocchi */
.qty-bar-lbl{
  font-size:10px;font-weight:800;
  color:var(--out);
  text-align:center;
  line-height:1.2;
  transition:color .2s ease;
  white-space:nowrap;
}
.qty-bar-range{
  font-size:9px;font-weight:700;
  color:var(--outv);
  text-align:center;
  transition:color .2s ease;
}
.qty-bar.active .qty-bar-lbl,
.qty-bar.lit .qty-bar-lbl{
  color:var(--p);
}
.qty-bar.active .qty-bar-range,
.qty-bar.lit .qty-bar-range{
  color:var(--p);
  opacity:.7;
}

/* Label descrittiva sotto il selettore */
.qty-selected-label{
  margin-top:12px;
  min-height:20px;
  text-align:center;
  font-size:13px;font-weight:800;
  color:var(--p);
  opacity:0;
  transform:translateY(6px);
  transition:opacity .3s ease, transform .3s cubic-bezier(.34,1.56,.64,1);
}
.qty-selected-label.vis{
  opacity:1;
  transform:translateY(0);
}

/* Hover preview sui blocchi quantita (solo desktop/hover) */


/* -- BLOCCA ROTAZIONE LANDSCAPE --
   hover:none = touch device (mobile/tablet), esclude desktop con mouse -- */
@media screen and (orientation: landscape) and (hover: none) and (pointer: coarse) {
  body::after {
    content: '';
    position: fixed;
    inset: 0;
    background: var(--bg, #141218);
    z-index: 9999;
    display: flex;
  }
  body::before {
    content: 'Ruota il dispositivo in verticale';
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Nunito', sans-serif;
    font-size: 16px;
    font-weight: 800;
    color: #E6E1E5;
    text-align: center;
    padding: 24px;
    pointer-events: none;
  }
}

/* =================== M3 CIRCULAR PROGRESS INDICATOR =================== */
.m3-spinner-overlay{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  z-index:50;
  pointer-events:none;
  opacity:0;
  transition:opacity .15s ease;
}
.m3-spinner-overlay.show{
  opacity:1;
}
/* Contenitore SVG */
.m3-spinner{
  width:48px;height:48px;
  animation:m3-spin 1.4s linear infinite;
}
/* Track (sfondo) */
.m3-spinner-track{
  fill:none;
  stroke:var(--sc4);
  stroke-width:4;
}
/* Indicatore attivo */
.m3-spinner-arc{
  fill:none;
  stroke:var(--p);
  stroke-width:4;
  stroke-linecap:round;
  stroke-dasharray:80 200;
  stroke-dashoffset:0;
  animation:m3-arc 1.4s ease-in-out infinite;
  transform-origin:center;
}
@keyframes m3-spin{
  0%  { transform:rotate(0deg); }
  100%{ transform:rotate(360deg); }
}
@keyframes m3-arc{
  0%  { stroke-dasharray:1 200;  stroke-dashoffset:0; }
  50% { stroke-dasharray:100 200; stroke-dashoffset:-30px; }
  100%{ stroke-dasharray:100 200; stroke-dashoffset:-130px; }
}

/* =================== HOME STEP 0 =================== */

/* Hero */
.home-hero{
  flex-shrink:0;
  margin-bottom:16px;
}
.home-hero-tag{
  display:inline-flex;align-items:center;gap:6px;
  background:rgba(103,80,164,.15);
  border:1px solid rgba(103,80,164,.3);
  border-radius:9999px;
  padding:4px 12px;
  font-size:11px;font-weight:800;
  letter-spacing:.06em;color:var(--p);
  margin-bottom:12px;
}
.home-hero-title{
  font-family:'Nunito',sans-serif;
  font-size:clamp(26px,8vw,34px);
  font-weight:900;line-height:1.1;
  color:var(--osur);
  margin-bottom:8px;
}
.home-hero-sub{
  font-size:13px;font-weight:600;
  color:var(--out);line-height:1.6;
}

/* Tile container */
.home-tiles{
  display:flex;flex-direction:column;
  gap:12px;
  flex:1;
  overflow-y:auto;
  scrollbar-width:none;
  padding-bottom:4px;
}
.home-tiles::-webkit-scrollbar{display:none;}

/* Singola tile */
.home-tile{
  background:var(--sc2);
  border-radius:20px;
  padding:16px;
  border:2px solid transparent;
  cursor:pointer;
  transition:
    border-color .2s ease,
    background .2s ease,
    transform .25s cubic-bezier(.34,1.56,.64,1);
  -webkit-tap-highlight-color:transparent;
}
.home-tile:hover{
  background:var(--sc3);
  transform:translateY(-2px);
}
.home-tile:active{ transform:scale(.98); }
.home-tile.sel{
  border-color:var(--p);
  background:rgba(103,80,164,.08);
}

/* Riga icona + testi */
.home-tile-left{
  display:flex;align-items:flex-start;gap:14px;
  margin-bottom:12px;
}
.home-tile-ico{
  width:44px;height:44px;border-radius:14px;flex-shrink:0;
  background:rgba(103,80,164,.18);color:var(--p);
  display:flex;align-items:center;justify-content:center;
  transition:border-radius .3s cubic-bezier(.34,1.56,.64,1);
}
.home-tile:hover .home-tile-ico{
  transform:scale(1.08);
}
.home-tile.sel .home-tile-ico{
  background:rgba(103,80,164,.25);
}
.home-tile-ico .ms{font-size:22px;}
.home-tile-lbl{
  font-size:17px;font-weight:900;
  color:var(--osur);margin-bottom:4px;
}
.home-tile-sub{
  font-size:13px;font-weight:600;
  color:var(--out);line-height:1.5;
}

/* Feature pills */
.home-tile-features{
  display:flex;flex-direction:column;gap:5px;
  margin-bottom:14px;
  padding-left:2px;
}
.home-tile-feat{
  display:flex;align-items:center;gap:6px;
  font-size:12px;font-weight:700;color:var(--osv);
}
.home-tile-feat .ms{
  font-size:15px;color:var(--p);
  font-variation-settings:'FILL' 1;
}

/* CTA in fondo alla tile */
.home-tile-cta{
  display:flex;align-items:center;justify-content:flex-end;gap:4px;
  font-size:13px;font-weight:800;
  color:var(--p);
  padding-top:10px;
  border-top:1px solid var(--outv);
}
.home-tile-cta .ms{
  transition:transform .2s cubic-bezier(.34,1.56,.64,1);
}
.home-tile:hover .home-tile-cta .ms{
  transform:translateX(4px);
}

/* =================== SPLASH SCREEN =================== */

/* Lo step 0 è fullscreen senza padding laterale/verticale */
#s0.step{
  padding:0;
  background:var(--bg);
  overflow:hidden;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
}
/* Quando lo step 0 è inattivo: completamente nascosto e sotto tutti gli altri step */
#s0.step:not(.active){
  opacity:0;
  pointer-events:none;
  visibility:hidden;  /* interrompe rendering blob/gradienti */
  z-index:-1;         /* sotto tutti gli altri step (z-index:0) */
  will-change:auto;   /* disabilita compositing layer quando inattivo */
}

/* Sfondo con blob animati */
.splash-bg{
  position:absolute;inset:0;
  pointer-events:none;
  overflow:hidden;
}
.splash-blob{
  position:absolute;
  border-radius:50%;
  filter:blur(60px);
  animation:blobDrift 8s ease-in-out infinite;
}
.splash-blob-1{
  width:280px;height:280px;
  background:rgba(103,80,164,.35);
  top:-60px;left:-60px;
  animation-delay:0s;
}
.splash-blob-2{
  width:220px;height:220px;
  background:rgba(125,82,96,.3);
  bottom:-40px;right:-40px;
  animation-delay:-3s;
}
.splash-blob-3{
  width:180px;height:180px;
  background:rgba(37,211,102,.1);
  top:40%;left:30%;
  animation-delay:-5s;
}
@keyframes blobDrift{
  0%,100%{transform:translate(0,0) scale(1);}
  33%    {transform:translate(20px,-20px) scale(1.08);}
  66%    {transform:translate(-15px,15px) scale(.95);}
}

/* Centro splash */
.splash-center{
  position:relative;z-index:1;
  flex:1;
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  padding:32px 24px;
  text-align:center;
}

/* Spazio logo centrale (immagine/SVG verrà inserita in seguito) */
.splash-logo-wrap{
  position:relative;
  display:flex;align-items:center;justify-content:center;
  margin-bottom:28px;
  min-height:80px;
  animation:genieIn .4s cubic-bezier(.34,1.56,.64,1) both .2s;
}
@keyframes genieIn{
  from{opacity:0;transform:scale(.6);}
  to  {opacity:1;transform:scale(1);}
}
.splash-logo{
  font-family:'Nunito',sans-serif;
  font-size:52px;font-weight:900;font-style:italic;
  letter-spacing:-2px;line-height:1;
  background:linear-gradient(135deg,var(--p) 0%,#C084FC 50%,var(--t) 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  animation:logoIn .8s cubic-bezier(.34,1.56,.64,1) both .2s;
}
@keyframes logoIn{
  from{opacity:0;transform:scale(.6);}
  to  {opacity:1;transform:scale(1);}
}
.splash-tagline{
  font-family:'Nunito',sans-serif;
  font-size:clamp(20px,6vw,26px);
  font-weight:900;
  color:var(--osur);
  line-height:1.2;
  margin-bottom:10px;
  animation:fadeUp .6s cubic-bezier(.2,0,0,1) both .5s;
}
.splash-sub{
  font-size:13px;font-weight:700;
  color:var(--out);
  letter-spacing:.04em;
  animation:fadeUp .6s cubic-bezier(.2,0,0,1) both .65s;
}

/* Hint swipe */
.splash-swipe-hint{
  position:relative;z-index:1;
  display:flex;flex-direction:column;
  align-items:center;gap:6px;
  padding-bottom:max(28px, env(safe-area-inset-bottom,28px));
  font-size:12px;font-weight:800;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--out);
  animation:fadeUp .6s cubic-bezier(.2,0,0,1) both .85s;
}
.splash-swipe-arrow{
  width:28px;height:28px;
  border-left:2.5px solid var(--out);
  border-bottom:2.5px solid var(--out);
  border-radius:2px;
  transform:rotate(-45deg) translateY(4px);
  animation:bounceUp 1.6s ease-in-out infinite 1s;
}
@keyframes bounceUp{
  0%,100%{transform:rotate(-45deg) translateY(4px);}
  50%    {transform:rotate(-45deg) translateY(-4px);}
}

/* =================== SERVICE BOTTOM SHEET =================== */
.service-sheet-overlay{
  position:fixed;inset:0;z-index:400;
  display:flex;align-items:flex-end;justify-content:center;
  background:rgba(0,0,0,0);
  pointer-events:none;
  transition:background .35s ease;
}
.service-sheet-overlay.show{
  background:rgba(0,0,0,.55);
  pointer-events:auto;
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
}
.service-sheet{
  background:var(--sc1);
  border-radius:28px 28px 0 0;
  padding:12px 20px max(24px,env(safe-area-inset-bottom,24px));
  width:100%;max-width:430px;
  transform:translateY(100%);
  transition:transform .45s cubic-bezier(.34,1.2,.64,1);
  box-shadow:0 -8px 32px rgba(0,0,0,.3);
}
.service-sheet-overlay.show .service-sheet{
  transform:translateY(0);
}
.service-sheet-drag{
  width:32px;height:4px;border-radius:9999px;
  background:var(--outv);margin:0 auto 20px;
}
.service-sheet-title{
  font-family:'Nunito',sans-serif;
  font-size:20px;font-weight:900;
  color:var(--osur);
  margin-bottom:16px;
  text-align:center;
}

/* Card servizio nel bottom sheet */
.svc-card{
  display:flex;align-items:center;gap:14px;
  padding:16px;
  background:var(--sc2);
  border-radius:18px;
  margin-bottom:10px;
  cursor:pointer;
  border:2px solid transparent;
  transition:
    background .18s ease,
    border-color .18s ease,
    transform .25s cubic-bezier(.34,1.56,.64,1);
  -webkit-tap-highlight-color:transparent;
}
.svc-card:last-child{margin-bottom:0;}
.svc-card:hover{background:var(--sc3);transform:translateX(4px);}
.svc-card:active{transform:scale(.97);}
.svc-card.sel{border-color:var(--p);}

.svc-card-ico{
  width:52px;height:52px;border-radius:16px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  color:#fff;
  transition:transform .2s cubic-bezier(.34,1.56,.64,1);
  box-shadow:0 4px 12px rgba(0,0,0,.25);
}
.svc-card:hover .svc-card-ico{transform:scale(1.08);}
.svc-card-ico .ms{font-size:26px;}

.svc-card-body{flex:1;}
.svc-card-lbl{
  font-size:17px;font-weight:900;
  color:var(--osur);margin-bottom:2px;
}
.svc-card-sub{
  font-size:13px;font-weight:600;color:var(--out);
}
.svc-card-arrow{
  font-size:22px;color:var(--out);flex-shrink:0;
  transition:transform .2s cubic-bezier(.34,1.56,.64,1), color .18s ease;
}
.svc-card:hover .svc-card-arrow{
  transform:translateX(4px);
  color:var(--p);
}

/* -- SPLASH PILL BUTTON -- */
.splash-pill-wrap{
  position:relative;z-index:1;
  display:flex;justify-content:center;
  padding-bottom:16px;
}
.splash-pill{
  display:inline-flex;align-items:center;gap:12px;
  padding:18px 36px;
  border:none;border-radius:9999px;
  background:linear-gradient(135deg, var(--p), var(--t));
  color:#fff;
  font-family:'Nunito',sans-serif;
  font-size:17px;font-weight:900;
  letter-spacing:.03em;
  cursor:pointer;
  position:relative;
  overflow:hidden;
  box-shadow:0 6px 32px rgba(103,80,164,.6), 0 2px 8px rgba(0,0,0,.25);
  animation:
    pillIn .6s cubic-bezier(.34,1.56,.64,1) both 1s,
    pillGlow 2.4s ease-in-out infinite 1.6s;
  -webkit-tap-highlight-color:transparent;
  transition:transform .2s cubic-bezier(.34,1.56,.64,1);
}
/* Shimmer sweep */
.splash-pill::before{
  content:'';
  position:absolute;
  top:0;left:-100%;
  width:60%;height:100%;
  background:linear-gradient(
    90deg,
    transparent,
    rgba(255,255,255,.4),
    transparent
  );
  animation:shimmer 2.4s ease-in-out infinite 1.6s;
  border-radius:inherit;
}
.splash-pill:hover { transform:scale(1.04); }
.splash-pill:active{ transform:scale(.96); }

.splash-pill-text{ position:relative;z-index:1; }
.splash-pill-icon{
  font-size:22px;
  position:relative;z-index:1;
  animation:arrowBounce 1.2s ease-in-out infinite 2s;
}

@keyframes pillIn{
  from{opacity:0;transform:scale(.7) translateY(16px);}
  to  {opacity:1;transform:scale(1)  translateY(0);}
}
@keyframes pillGlow{
  0%,100%{box-shadow:0 6px 32px rgba(103,80,164,.6), 0 2px 8px rgba(0,0,0,.25);}
  50%    {box-shadow:0 8px 48px rgba(103,80,164,.9), 0 0 0 8px rgba(103,80,164,.18), 0 2px 8px rgba(0,0,0,.25);}
}
@keyframes shimmer{
  0%  {left:-100%;}
  60%,100%{left:160%;}
}
@keyframes arrowBounce{
  0%,100%{transform:translateX(0);}
  50%    {transform:translateX(5px);}
}

/* -- CHIPS GRANDI (step oggetti) -- */
.chips-lg{
  gap:10px;
}
.chips-lg .chip{
  height:44px;
  padding:0 18px;
  font-size:15px;
  border-radius:10px;
  border-width:2px;
}
.chips-lg .chip.sel{
  border-radius:9999px;
  padding:0 16px 0 10px;
}
.chips-lg .chip .ck{
  font-size:18px;
}

/* ═══════════════════ QTY CAROUSEL ═══════════════════ */

.qty-carousel-wrap{
  position:relative;
  width:100%;
  overflow:hidden;
  height:380px;
  flex-shrink:0;
}

.qty-carousel{
  display:flex;
  gap:10px;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scroll-snap-stop:always;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  height:100%;
  padding:8px 18% 8px;
  scroll-padding-inline:18%;
  cursor:grab;
  touch-action:pan-x;
}
.qty-carousel:active{ cursor:grabbing; }
.qty-carousel::-webkit-scrollbar{ display:none; }

/* ── Card contenitore ── */
.qty-card{
  flex:0 0 80%;
  height:calc(90% - 16px);
  scroll-snap-align:center;
  background:var(--sc2);
  border-radius:20px;
  padding:10px 10px 8px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  border:none;
  position:relative;
  overflow:hidden;
  transition:
    transform .4s cubic-bezier(.34,1.56,.64,1),
    box-shadow .3s ease,
    opacity .35s ease;
  user-select:none;
  cursor:pointer;
  box-sizing:border-box;
}
.qty-card:not(.active){
  opacity:.5;
  transform:scale(.87);
}
.qty-card.active{
  opacity:1;
  transform:scale(1);
  box-shadow:0 6px 28px rgba(103,80,164,.3);
}

/* Shimmer all'attivazione */
.qty-card.active::after{
  content:'';
  position:absolute;inset:0;
  background:linear-gradient(120deg,transparent,rgba(255,255,255,.1),transparent);
  animation:cardShimmer .6s ease both;
  border-radius:inherit;
  pointer-events:none;
  z-index:3;
}

/* ── Contenitore vetro ── */
.qty-glass{
  /* Altezza esplicita = card - padding - gap - labels */
  /* card=304px, padding-top=10, padding-bottom=8, gap=8, labels≈52px → ~226px */
  flex:1;
  width:100%;
  min-height:180px; /* garantisce visibilità su schermi piccoli */
  background:var(--sc4);
  border-radius:12px;
  position:relative;
  overflow:hidden;
  border:1.5px solid var(--outv);
  transition:border-color .3s ease, box-shadow .3s ease;
}
.qty-card.active .qty-glass{
  border-color:var(--p);
  box-shadow:inset 0 0 12px rgba(103,80,164,.15);
}
/* Riflesso laterale vetro */
.qty-glass::after{
  content:'';
  position:absolute;
  top:0;left:8%;
  width:16%;height:100%;
  background:linear-gradient(to bottom,rgba(255,255,255,.1),transparent 60%);
  pointer-events:none;
  z-index:2;
}
/* Scala graduata sul vetro */
.qty-glass::before{
  content:'';
  position:absolute;
  top:15%;bottom:10%;right:8px;
  width:2px;
  background:repeating-linear-gradient(
    to bottom,
    var(--outv) 0px,
    var(--outv) 1px,
    transparent 1px,
    transparent 12px
  );
  pointer-events:none;
  z-index:2;
  opacity:.5;
}

/* ── Liquido ── */
.qty-liquid{
  position:absolute;
  bottom:0;left:0;right:0;
  height:0;
  background:linear-gradient(
    to top,
    var(--p) 0%,
    rgba(192,80,220,.75) 55%,
    rgba(239,184,200,.55) 100%
  );
  transition:height .85s cubic-bezier(.34,1.05,.64,1);
  z-index:1;
}
.qty-card.active .qty-liquid{
  /* altezza gestita da JS per garantire animazione sempre visibile */
}

/* ── Onda ── */
.qty-wave{
  position:absolute;
  top:-10px;left:-25%;
  width:150%;height:20px;
  background:rgba(103,80,164,.6);
  border-radius:50%;
  z-index:2;
}
.qty-card.active .qty-wave{
  animation:waveRock 2.2s ease-in-out infinite;
}
@keyframes waveRock{
  0%,100%{ transform:translateX(0)   scaleY(1);   }
  50%    { transform:translateX(8%)  scaleY(1.4); }
}

/* ── Labels sotto ── */
.qty-card-content{
  flex-shrink:0;
  display:flex;flex-direction:column;
  align-items:center;
  gap:3px;
  width:100%;
  position:relative;z-index:1;
}
.qty-card-lbl{
  font-size:14px;font-weight:900;
  color:var(--osur);
  text-align:center;
  line-height:1.1;
  transition:color .25s ease, font-size .3s cubic-bezier(.34,1.56,.64,1);
}
.qty-card:not(.active) .qty-card-lbl{
  color:var(--out);
  font-size:14px;
}
.qty-card.active .qty-card-lbl{ color:var(--p); font-size:20px; }

.qty-card-range{
  font-size:13px;font-weight:800;
  color:var(--p);
  background:rgba(103,80,164,.15);
  padding:2px 8px;border-radius:9999px;
  opacity:0;
  transform:translateY(4px);
  transition:opacity .25s ease .15s, transform .3s cubic-bezier(.34,1.56,.64,1) .15s;
  text-align:center;
}
.qty-card.active .qty-card-range{
  opacity:1;
  transform:translateY(0);
}

/* ── Dot indicators ── */
.qty-dots{
  display:flex;justify-content:center;gap:6px;
  padding:6px 0 2px;
}
.qty-dot{
  width:6px;height:6px;border-radius:9999px;
  background:var(--outv);
  transition:width .3s cubic-bezier(.34,1.56,.64,1), background .2s ease;
}
.qty-dot.active{
  width:20px;
  background:var(--p);
}

/* Fade laterale desktop */
@media(hover:hover){
  .qty-carousel-wrap::before,
  .qty-carousel-wrap::after{
    content:'';
    position:absolute;top:0;bottom:20px;
    width:20%;pointer-events:none;z-index:2;
  }
  .qty-carousel-wrap::before{
    left:0;
    background:linear-gradient(to right,var(--bg) 0%,transparent 80%);
    width:12%;
  }
  .qty-carousel-wrap::after{
    right:0;
    background:linear-gradient(to left,var(--bg) 0%,transparent 80%);
    width:12%;
  }
}

/* ═══════════════════ STILI MIGRATI DA INLINE ═══════════════════ */

/* Grid full-width per campi via */
.mf-full{ grid-column:1/3; }

/* Input uppercase (province) */
.input-uppercase{ text-transform:uppercase; }

/* field-wrap carousel step 12 */
.field-wrap--carousel{ overflow:hidden; gap:0; padding:0; }

/* mf ta flex */
.mf--flex{ flex:1; }

/* Textarea step descrizione */
.textarea--full{ min-height:140px; height:100%; }

/* svc-card-ico gradienti */
.svc-ico--trasloco{ background:linear-gradient(135deg,var(--p),#9C27B0); }
.svc-ico--sgombero{ background:linear-gradient(135deg,var(--t),#E91E63); }
.svc-ico--altro   { background:linear-gradient(135deg,#607D8B,#37474F); }

/* tile-ico canali */
.tile-ico--wa   { background:linear-gradient(135deg,#25D366,#128C7E); color:#fff; display:flex;align-items:center;justify-content:center; }
.tile-ico--sms  { background:linear-gradient(135deg,#2196F3,#1565C0); color:#fff; }
.tile-ico--email{ background:linear-gradient(135deg,#FFC107,#FF8F00); color:#fff; }

/* step-ico riepilogo */
.step-ico--done{ background:linear-gradient(135deg,var(--wa),var(--wad)); }

/* oh contatti con margine */
.oh--mb{ margin-bottom:16px; }

/* Section divider (chi siamo) */
.section-divider{
  font-size:11px; font-weight:800;
  letter-spacing:.12em; text-transform:uppercase;
  color:var(--p);
  margin-bottom:10px;
  display:flex; align-items:center; gap:8px;
}
.section-divider__icon{ font-size:13px; }
.section-divider__line{
  flex:1; height:1px;
  background:linear-gradient(to right,var(--outv),transparent);
}

/* Install banner icons */
.install-icon--main{ font-size:28px; color:var(--p); }
.ms--20{ font-size:20px; }

/* =================== STEP TOP ROW =================== */
.step-top{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:clamp(8px,2vw,16px);flex-shrink:0;
}
.step-top .step-ico{ margin-bottom:0; }

/* Badge servizio */
.svc-badge{
  display:flex;align-items:center;gap:8px;
  padding:6px 12px 6px 8px;border-radius:9999px;
  font-size:13px;font-weight:800;color:#fff;
  opacity:0;transform:scale(.7) translateX(10px);
  transition:opacity .35s cubic-bezier(.2,0,0,1),transform .4s cubic-bezier(.34,1.56,.64,1);
  pointer-events:none;
}
.svc-badge.visible{ opacity:1;transform:scale(1) translateX(0); }
.svc-badge .svc-badge-ico{
  width:28px;height:28px;border-radius:50%;
  background:rgba(255,255,255,.22);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.svc-badge .svc-badge-ico .ms{ font-size:16px;color:#fff; }
.svc-badge .svc-badge-lbl{ line-height:1;letter-spacing:.02em; }
.svc-badge--trasloco{ background:linear-gradient(135deg,var(--p),#9C27B0);box-shadow:0 3px 12px rgba(103,80,164,.35); }
.svc-badge--sgombero{ background:linear-gradient(135deg,var(--t),#E91E63);box-shadow:0 3px 12px rgba(125,82,96,.35); }
.svc-badge--altro   { background:linear-gradient(135deg,#607D8B,#37474F);box-shadow:0 3px 12px rgba(96,125,139,.35); }

/* =================== INSTALLED OVERLAY =================== */
.installed-overlay{
  position:fixed;inset:0;z-index:800;
  display:flex;align-items:center;justify-content:center;padding:24px;
  background:rgba(0,0,0,0);
  pointer-events:none;
  visibility:hidden;
  opacity:0;
  transition:background .4s ease, opacity .4s ease, visibility 0s linear .4s;
}
.installed-overlay.show{
  background:rgba(0,0,0,.65);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  pointer-events:auto;
  visibility:visible;
  opacity:1;
  transition:background .4s ease, opacity .4s ease, visibility 0s linear 0s;
}
.installed-sheet{
  position:relative;background:var(--sc1);border-radius:28px;
  padding:32px 24px 28px;width:100%;max-width:340px;
  text-align:center;overflow:hidden;
  transform:scale(.7) translateY(40px);opacity:0;
  transition:transform .5s cubic-bezier(.34,1.56,.64,1),opacity .35s ease;
  box-shadow:0 24px 60px rgba(0,0,0,.4);
}
.installed-overlay.show .installed-sheet{ transform:scale(1) translateY(0);opacity:1; }
.installed-canvas{
  position:absolute;inset:0;width:100%;height:100%;
  pointer-events:none;border-radius:inherit;
}
.installed-ico{
  position:relative;z-index:1;
  width:72px;height:72px;border-radius:22px;
  background:linear-gradient(135deg,var(--p),var(--t));
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 20px;box-shadow:0 8px 24px rgba(103,80,164,.45);
  animation:installedIcoPop .6s cubic-bezier(.34,1.56,.64,1) both .15s;
}
.installed-ico .ms{ font-size:36px;color:#fff; }
@keyframes installedIcoPop{
  from{transform:scale(0) rotate(-20deg);opacity:0;}
  to  {transform:scale(1) rotate(0);opacity:1;}
}
.installed-title{
  position:relative;z-index:1;font-size:22px;font-weight:900;
  color:var(--osur);margin-bottom:10px;
  animation:fadeUp .4s cubic-bezier(.2,0,0,1) both .3s;
}
.installed-sub{
  position:relative;z-index:1;font-size:14px;font-weight:600;
  color:var(--out);line-height:1.6;margin-bottom:26px;
  animation:fadeUp .4s cubic-bezier(.2,0,0,1) both .4s;
}
.installed-btn{
  position:relative;z-index:1;width:100%;height:52px;
  border:none;border-radius:9999px;
  background:linear-gradient(135deg,var(--p),var(--t));
  color:#fff;font-family:'Nunito',sans-serif;font-size:16px;font-weight:900;
  cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;
  box-shadow:0 4px 18px rgba(103,80,164,.4);
  transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s;
  animation:fadeUp .4s cubic-bezier(.2,0,0,1) both .5s;
}
.installed-btn:hover{ transform:scale(1.03);box-shadow:0 6px 24px rgba(103,80,164,.55); }
.installed-btn:active{ transform:scale(.96); }

/* =================== UPDATE OVERLAY =================== */
.update-overlay{
  position:fixed;inset:0;z-index:850;
  display:flex;align-items:flex-end;justify-content:center;
  background:rgba(0,0,0,0);
  pointer-events:none;
  visibility:hidden;
  opacity:0;
  transition:background .35s ease, opacity .35s ease, visibility 0s linear .35s;
  backdrop-filter:blur(0px);
  -webkit-backdrop-filter:blur(0px);
}
.update-overlay.show{
  background:rgba(0,0,0,.5);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  pointer-events:auto;
  visibility:visible;
  opacity:1;
  transition:background .35s ease, opacity .35s ease, visibility 0s linear 0s;
}
.update-sheet{
  background:var(--sc1);
  border-radius:28px 28px 0 0;
  padding:28px 24px max(28px,env(safe-area-inset-bottom,28px));
  width:100%;max-width:430px;
  transform:translateY(100%);
  transition:transform .45s cubic-bezier(.34,1.2,.64,1);
  box-shadow:0 -8px 32px rgba(0,0,0,.3);
  display:flex;flex-direction:column;align-items:center;
  text-align:center;gap:10px;
}
.update-overlay.show .update-sheet{
  transform:translateY(0);
}
.update-ico{
  width:60px;height:60px;border-radius:18px;
  background:linear-gradient(135deg,var(--p),var(--t));
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 20px rgba(103,80,164,.4);
  animation:updateIcoPop .5s cubic-bezier(.34,1.56,.64,1) both .2s;
  flex-shrink:0;
}
.update-ico .ms{font-size:30px;color:#fff;}
@keyframes updateIcoPop{
  from{transform:scale(0) rotate(-15deg);opacity:0;}
  to  {transform:scale(1) rotate(0);opacity:1;}
}
.update-title{
  font-size:19px;font-weight:900;
  color:var(--osur);
  animation:fadeUp .35s cubic-bezier(.2,0,0,1) both .25s;
}
.update-sub{
  font-size:13px;font-weight:600;color:var(--out);
  line-height:1.6;max-width:280px;
  animation:fadeUp .35s cubic-bezier(.2,0,0,1) both .3s;
}
.update-actions{
  display:flex;gap:10px;width:100%;margin-top:6px;
  animation:fadeUp .35s cubic-bezier(.2,0,0,1) both .35s;
}
.update-btn-later{
  flex:0 0 auto;height:50px;padding:0 22px;
  border:1.5px solid var(--outv);border-radius:9999px;
  background:transparent;color:var(--osur);
  font-family:'Nunito',sans-serif;font-size:15px;font-weight:800;
  cursor:pointer;
  transition:background .18s,border-color .18s,transform .2s cubic-bezier(.34,1.56,.64,1);
}
.update-btn-later:hover{background:var(--sc3);border-color:var(--p);}
.update-btn-later:active{transform:scale(.93);}
.update-btn-now{
  flex:1;height:50px;
  border:none;border-radius:9999px;
  background:linear-gradient(135deg,var(--p),var(--t));
  color:#fff;font-family:'Nunito',sans-serif;
  font-size:15px;font-weight:900;
  cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;
  box-shadow:0 4px 16px rgba(103,80,164,.35);
  transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s;
}
.update-btn-now:hover{transform:scale(1.02);box-shadow:0 6px 22px rgba(103,80,164,.5);}
.update-btn-now:active{transform:scale(.95);}
