body{margin:0;background:#FFFFFF;font-family:'Geist',system-ui,sans-serif;-webkit-font-smoothing:antialiased;color:#1D1D1F}
a{color:#4C1D95}a:hover{color:#2E1065}
.vv-grad{background:linear-gradient(90deg,#6D28D9 0%,#1D4ED8 40%,#0E7490 70%,#BE185D 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.vv-grad-soft{background:linear-gradient(90deg,#C4B5FD 0%,#93C5FD 45%,#67E8F9 70%,#F9A8D4 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.vv-face{-webkit-backface-visibility:hidden;backface-visibility:hidden}
.vv-3d{transform-style:preserve-3d}
.vv-metal{background:linear-gradient(100deg,#5F5F69 0%,#C9C9D1 14%,#F7F7F9 22%,#A3A3AE 36%,#E8E8ED 52%,#8B8B96 68%,#F2F2F5 80%,#6E6E78 100%);background-size:260% 100%}
@keyframes vvFloatA{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(60px,-40px) scale(1.12)}}
@keyframes vvFloatB{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-70px,50px) scale(1.08)}}
@keyframes vvFloatC{0%,100%{transform:translate(0,0) scale(1.05)}50%{transform:translate(40px,60px) scale(.95)}}
.vv-blobA{animation:vvFloatA 14s ease-in-out infinite}
.vv-blobB{animation:vvFloatB 17s ease-in-out infinite}
.vv-blobC{animation:vvFloatC 20s ease-in-out infinite}
@keyframes vvBob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,5px)}}
.vv-bob{animation:vvBob 1.8s ease-in-out infinite}
@keyframes vvToast{from{opacity:0;transform:translate(-50%,10px) scale(.96)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
.vv-toast{animation:vvToast .28s cubic-bezier(.2,.8,.2,1)}
@keyframes vvPulse{0%,100%{opacity:.55}50%{opacity:1}}
.vv-live{animation:vvPulse 1.6s ease-in-out infinite}
.vv-key{transition:transform .15s ease,background-color .2s ease}
.vv-key:hover{background-color:rgba(255,255,255,0.16)}
.vv-key:active{transform:scale(.95)}
.vv-btn{transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .25s ease,filter .2s ease}
.vv-btn:hover{transform:translateY(-2px);filter:brightness(1.06)}
.vv-btn:active{transform:translateY(0) scale(.98)}
.vv-card{transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s ease}
.vv-card:hover{transform:translateY(-6px)}
.vv-glass{position:relative;isolation:isolate;background:linear-gradient(140deg,rgba(255,255,255,0.52),rgba(255,255,255,0.2));-webkit-backdrop-filter:blur(26px) saturate(1.9) brightness(1.05);backdrop-filter:blur(26px) saturate(1.9) brightness(1.05);border:1px solid rgba(255,255,255,0.55);box-shadow:inset 0 1px 0 rgba(255,255,255,0.95),inset 0 -1px 0 rgba(255,255,255,0.35),inset 0 0 28px rgba(255,255,255,0.22),0 30px 70px -34px rgba(40,24,90,0.42)}
.vv-glass::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;background:radial-gradient(90% 75% at calc(var(--mx,0.5) * 100%) -12%,rgba(255,255,255,0.75),rgba(255,255,255,0) 62%);transition:background .2s linear}
.vv-glass::after{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1.5px;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,1),rgba(255,255,255,0.15) 32%,rgba(255,255,255,0) 52%,rgba(255,255,255,0.15) 70%,rgba(255,255,255,0.85));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.vv-glass.vv-dark{background:linear-gradient(140deg,rgba(255,255,255,0.16),rgba(255,255,255,0.04));border-color:rgba(255,255,255,0.22);-webkit-backdrop-filter:blur(26px) saturate(1.7);backdrop-filter:blur(26px) saturate(1.7);box-shadow:inset 0 1px 0 rgba(255,255,255,0.4),inset 0 0 30px rgba(255,255,255,0.06),0 40px 90px -40px rgba(0,0,0,0.6)}
.vv-glass.vv-dark::before{background:radial-gradient(90% 75% at calc(var(--mx,0.5) * 100%) -12%,rgba(255,255,255,0.22),rgba(255,255,255,0) 62%)}
.vv-glass.vv-dark::after{background:linear-gradient(135deg,rgba(255,255,255,0.6),rgba(255,255,255,0.05) 35%,rgba(255,255,255,0) 55%,rgba(255,255,255,0.4))}
@keyframes vvScan{0%{top:10px}50%{top:98px}100%{top:10px}}
.vv-scan{animation:vvScan 1.6s ease-in-out infinite}
@keyframes vvModalIn{from{opacity:0;transform:translateY(24px) scale(.97)}to{opacity:1;transform:none}}
.vv-modal{animation:vvModalIn .38s cubic-bezier(.2,.8,.2,1)}
@keyframes vvFade{from{opacity:0}to{opacity:1}}
.vv-fade{animation:vvFade .3s ease}
@keyframes vvRing{0%,100%{box-shadow:inset 0 0 0 2px rgba(124,58,237,0.8),0 0 0 0 rgba(124,58,237,0.35),0 40px 90px -30px rgba(91,33,182,0.5)}50%{box-shadow:inset 0 0 0 2px rgba(124,58,237,0.8),0 0 0 12px rgba(124,58,237,0),0 40px 90px -30px rgba(91,33,182,0.5)}}
.vv-ring{animation:vvRing 2.4s ease-in-out infinite}
.vv-chip{transition:transform .15s ease,background-color .2s ease,color .2s ease}
.vv-chip:active{transform:scale(.97)}
.vv-in-field{width:100%;box-sizing:border-box;min-height:54px;padding:14px 16px;border-radius:16px;border:1px solid rgba(29,29,31,0.14);background:rgba(255,255,255,0.82);font-family:inherit;font-size:17px;color:#1D1D1F;outline:none;transition:border-color .2s ease,box-shadow .2s ease}
.vv-in-field:focus{border-color:#7C3AED;box-shadow:0 0 0 4px rgba(124,58,237,0.18)}
.vv-in-field::placeholder{color:#8A8A96}
[data-reveal]{opacity:0;transform:translateY(48px);transition:opacity 1s cubic-bezier(.2,.8,.2,1),transform 1s cubic-bezier(.2,.8,.2,1)}
[data-reveal].vv-in{opacity:1;transform:none}

/* Ajustements téléphone */
.vv-touch{display:none}
@media (hover:none){.vv-touch{display:inline}.vv-mouse{display:none}}
@media (max-width:640px){
  .vv-bar{bottom:14px!important;padding:8px 8px 8px 18px!important;gap:10px!important}
  .vv-bar > div{font-size:14px!important}
  .vv-bar-l2{display:none}
  .vv-bob{display:none!important}
  .vv-bar a{min-height:46px!important;padding:0 20px!important;font-size:16px!important}
}

/* Fluidité */
.vv-blobA,.vv-blobB,.vv-blobC{will-change:transform}
@media (hover:none){
  .vv-glass{-webkit-backdrop-filter:blur(14px) saturate(1.5);backdrop-filter:blur(14px) saturate(1.5)}
  .vv-glass.vv-dark{-webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4)}
  .vv-glass::before{transition:none}
}
@media (prefers-reduced-motion: reduce){.vv-blobA,.vv-blobB,.vv-blobC,.vv-bob{animation:none}}
