/* Astramagis — stili condivisi (estratti da index.html, fonte unica per le pagine del funnel) */
html { scroll-behavior: smooth; font-size: 17px; }
body { background: #040409; color: #ece9f5; overflow-x: hidden; }

/* cosmic mesh background */
.mesh { position: fixed; inset: -20% -10% auto -10%; height: 120vh; z-index: 0; pointer-events: none; filter: blur(60px); opacity: .16; }
.orb { position: absolute; border-radius: 9999px; mix-blend-mode: screen; }
.orb-1 { width: 46vw; height: 46vw; left: -8vw; top: -6vw; background: radial-gradient(circle at 30% 30%, #8b6cff, transparent 70%); animation: drift1 22s ease-in-out infinite; }
.orb-2 { width: 38vw; height: 38vw; right: -6vw; top: 4vw; background: radial-gradient(circle at 60% 40%, #6cc7ff, transparent 70%); animation: drift2 26s ease-in-out infinite; }
.orb-3 { width: 40vw; height: 40vw; left: 28vw; top: 30vw; background: radial-gradient(circle at 50% 50%, #e9c46a, transparent 72%); opacity:.38; animation: drift3 30s ease-in-out infinite; }
@keyframes drift1 { 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(6vw,4vw) scale(1.08)} }
@keyframes drift2 { 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(-5vw,5vw) scale(1.12)} }
@keyframes drift3 { 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(-4vw,-6vw) scale(1.06)} }

#stars { position: fixed; inset: 0; z-index: 0; pointer-events: none; }
.twinkle { position:absolute; background:#fff; border-radius:9999px; opacity:.0; animation: tw 4s ease-in-out infinite; }
@keyframes tw { 0%,100%{opacity:.05; transform:scale(.6)} 50%{opacity:.9; transform:scale(1)} }

.grain { position: fixed; inset: 0; z-index: 50; pointer-events:none; opacity:.035;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>"); }

#spot { position: fixed; inset: 0; z-index: 30; pointer-events: none; opacity: 0; transition: opacity .5s ease;
  background: radial-gradient(circle 300px at var(--mx, 50%) var(--my, 50%), rgba(150,120,255,.14) 0%, rgba(150,120,255,.05) 34%, transparent 62%); }
.spot-on #spot { opacity: 1; }

.aurora { position: fixed; inset: 0; z-index: 0; pointer-events: none; opacity: .18; overflow: hidden; }
.aurora::before { content: ''; position: absolute; top: -25%; left: -20%; width: 140%; height: 75%;
  background: linear-gradient(100deg, transparent, rgba(139,108,255,.28), rgba(108,199,255,.18), rgba(233,196,106,.22), transparent);
  filter: blur(90px); transform: rotate(-8deg); animation: auroraMove 26s ease-in-out infinite; }
@keyframes auroraMove { 0%,100%{ transform: rotate(-8deg) translateX(-6%); } 50%{ transform: rotate(-5deg) translateX(9%); } }

#dust { position: fixed; inset: 0; z-index: 0; pointer-events: none; }

/* titoli a gradiente + shimmer — bianco→giallo→viola→bianco: palindromo (inizia e finisce bianco)
   → si ripete senza giunture e nessun "finale duro" del viola. */
.text-grad { background: linear-gradient(110deg,#fff 0%,#f4d58d 33%,#8b6cff 66%,#fff 100%); background-size: 200% auto;
  -webkit-background-clip:text; background-clip:text; color:transparent; animation: shimmer 11s linear infinite; }
@keyframes shimmer { to { background-position: 200% center; } }

.inset-hi { box-shadow: inset 0 1px 1px rgba(255,255,255,.14); -webkit-backdrop-filter: blur(20px) saturate(1.1); backdrop-filter: blur(20px) saturate(1.1); }

/* reveal on scroll */
.reveal { opacity:0; transform: translateY(40px); filter: blur(8px);
  transition: opacity .9s cubic-bezier(.32,.72,0,1), transform .9s cubic-bezier(.32,.72,0,1), filter .9s cubic-bezier(.32,.72,0,1); }
.reveal.in { opacity:1; transform: translateY(0); filter: blur(0); }

.spin-slow { animation: spin 40s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.float { animation: float 7s ease-in-out infinite; }
@keyframes float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-14px)} }

/* bottone shine */
.btn-shine { position: relative; overflow: hidden; background: linear-gradient(110deg, #f4d58d 0%, #e9c46a 42%, #b79bff 100%); box-shadow: 0 6px 22px -10px rgba(183,155,255,.6); }
.btn-shine::before { content: ''; position: absolute; top: 0; left: 0; width: 55%; height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.55), transparent);
  transform: translateX(-180%) skewX(-18deg); pointer-events: none; animation: shineSweep 3.8s ease-in-out infinite; }
@keyframes shineSweep { 0%{ transform: translateX(-180%) skewX(-18deg);} 50%,100%{ transform: translateX(320%) skewX(-18deg);} }
.cta-glow { animation: ctaPulse 2.6s ease-in-out infinite; }
@keyframes ctaPulse { 0%,100%{box-shadow:0 0 24px -6px rgba(233,196,106,.25)} 50%{box-shadow:0 0 40px 0 rgba(233,196,106,.55)} }

/* border-glow segui-cursore */
.glow { position: relative; overflow: hidden; }
.glow::after { content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; opacity: 0; transition: opacity .45s ease; mix-blend-mode: screen;
  background: radial-gradient(220px circle at var(--gx,50%) var(--gy,50%), rgba(244,213,141,.18), rgba(139,108,255,.10) 40%, transparent 62%); }
.glow:hover::after { opacity: 1; }

/* ---------- stesa (oracolo) — condivisa tra prova/oracolo/responso ---------- */
.st-chip{padding:8px 16px;border-radius:999px;border:1px solid rgba(233,196,106,.22);background:rgba(255,255,255,.02);color:rgba(255,255,255,.6);font-size:13px;cursor:pointer;transition:color .4s,background .4s,border-color .4s;font-family:inherit}
.st-chip:hover{color:#fff;border-color:rgba(233,196,106,.4)}
.st-chip.on{background:rgba(233,196,106,.14);border-color:#e9c46a;color:#f4d58d}
.st-dom{width:min(440px,92%);background:rgba(255,255,255,.04);border:1px solid rgba(233,196,106,.18);border-radius:14px;color:#ece9f5;font-size:15px;padding:13px 16px;font-family:inherit;text-align:center}
.st-dom::placeholder{color:rgba(255,255,255,.35)}
.st-dom:focus{outline:none;border-color:rgba(233,196,106,.5)}
/* ---------- form di nascita (oroscopo · tema natale): caselle e tasti allineati, stessa larghezza ---------- */
.astra-form .st-dom{width:100%;text-align:left;min-height:52px;box-sizing:border-box}
.astra-form input[type=date].st-dom,.astra-form input[type=time].st-dom{min-height:52px}
.astra-form .st-row{display:flex;gap:.5rem}
.astra-form .st-row .st-dom{flex:1}
.astra-form .st-mini{display:inline-flex;align-items:center;justify-content:center;min-height:52px;flex:0 0 auto;padding:0 18px;border-radius:14px;border:1px solid rgba(233,196,106,.3);background:rgba(255,255,255,.03);color:rgba(255,255,255,.82);font-size:14px;font-family:inherit;cursor:pointer;transition:background .3s,border-color .3s;white-space:nowrap}
.astra-form .st-mini:hover{background:rgba(255,255,255,.07);border-color:rgba(233,196,106,.5)}
.astra-form .st-go{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:52px;border-radius:14px}
.lock{opacity:.7;cursor:not-allowed}
.st-stage{position:relative;max-width:760px;margin:0 auto}
.st-slot{position:absolute;border-radius:10px;border:1px dashed rgba(233,196,106,.14);transform:translate(-50%,-50%)}
.st-card{position:absolute;left:0;top:0;perspective:1200px;transition:transform .8s cubic-bezier(.22,.61,.36,1);will-change:transform;filter:drop-shadow(0 16px 26px rgba(0,0,0,.6))}
.st-flipper{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.4,.1,.2,1)}
.st-card.flip .st-flipper{transform:rotateY(180deg)}
.st-side{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:9px;overflow:hidden;background:#060611}
.st-side img{width:100%;height:100%;display:block}
.st-front{transform:rotateY(180deg)}
.st-scaler{position:absolute;top:0;left:0;width:240px;height:360px;transform-origin:top left}
.st-face{position:relative;width:240px;height:360px;overflow:hidden;background:radial-gradient(72% 56% at 50% 44%, #1b1533 0%, #0d0d20 56%, #060611 100%)}
.st-face.rev{transform:rotate(180deg)}
.st-face .st-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.st-face .st-frame{position:absolute;inset:0;width:100%;height:100%}
.st-face .st-band{position:absolute;left:8%;right:8%;display:flex;align-items:center;justify-content:center}
.st-face .st-band.top{top:2%;height:13.5%}
.st-face .st-band.bot{bottom:2%;height:13.5%}
.st-face .st-ttl{font-family:Fraunces,serif;color:#eecd80;letter-spacing:.2em;font-weight:400;text-shadow:0 1px 2px #000;white-space:nowrap}
.st-face .st-ttl.t{font-size:15px}
.st-face .st-ttl.n{font-size:15px;letter-spacing:.18em}
.st-lettura{opacity:0;transform:translateY(8px);transition:opacity .6s,transform .6s}
.st-lettura.on{opacity:1;transform:none}

/* ---------- muro / paywall ---------- */
.veil-lock{position:relative}
.veil-lock>.veil-blur{filter:blur(7px);opacity:.5;pointer-events:none;user-select:none}
.veil-gate{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;
  background:radial-gradient(120% 90% at 50% 40%, rgba(10,10,24,.2), rgba(6,6,17,.86));border-radius:18px}

/* paywall "ad assaggio": mostra l'apertura, sfuma la profondità, CTA sotto (stile Co-Star) */
.veil-taste{ position:relative; max-height: var(--peek, 360px); overflow:hidden;
  -webkit-mask-image: linear-gradient(180deg,#000 0%,#000 52%,transparent 100%);
          mask-image: linear-gradient(180deg,#000 0%,#000 52%,transparent 100%); }
.veil-taste-cta{ position:relative; z-index:2; margin-top:-2.5rem; text-align:center; padding:0 1rem 1rem; }
@media (prefers-reduced-motion: reduce){ .veil-taste{ /* resta sfumato, ok */ } }

/* tsoft (rivelazione soft) */
.tsoft{opacity:0;transform:translateY(20px);pointer-events:none;transition:opacity .9s cubic-bezier(.32,.72,0,1), transform .9s cubic-bezier(.32,.72,0,1)}
.tsoft.show{opacity:1;transform:translateY(0);pointer-events:auto}

@media (prefers-reduced-motion: reduce){
  .orb,.twinkle,.spin-slow,.float,.cta-glow,.aurora::before,.text-grad,.btn-shine::before{animation:none!important}
  .reveal{transition:none;opacity:1;transform:none;filter:none}
  .tsoft{transition:none}
}
