@font-face{
  font-family:'PrincessAllie';
  src:url('../assets/fonts/princessallie.woff2') format('woff2');
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Poppins'; font-style:normal; font-weight:400; font-display:swap;
  src:url('../assets/fonts/poppins-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Poppins'; font-style:normal; font-weight:400; font-display:swap;
  src:url('../assets/fonts/poppins-400-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Poppins'; font-style:normal; font-weight:500; font-display:swap;
  src:url('../assets/fonts/poppins-500-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Poppins'; font-style:normal; font-weight:500; font-display:swap;
  src:url('../assets/fonts/poppins-500-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Poppins'; font-style:normal; font-weight:600; font-display:swap;
  src:url('../assets/fonts/poppins-600-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Poppins'; font-style:normal; font-weight:600; font-display:swap;
  src:url('../assets/fonts/poppins-600-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Poppins'; font-style:normal; font-weight:700; font-display:swap;
  src:url('../assets/fonts/poppins-700-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Poppins'; font-style:normal; font-weight:700; font-display:swap;
  src:url('../assets/fonts/poppins-700-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

:root{
  --accent:      #b249ff;
  --accent-2:    #ff4d8d;
  --bg:          #0a0611;
  --text:        #f2eef8;
  --text-dim:    #a79cb8;
  --card-border: rgba(255, 255, 255, .10);
  --police:       'Poppins', 'Segoe UI', system-ui, sans-serif;
  --police-titre: 'PrincessAllie', 'Poppins', cursive;
}

*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0 }

button, input{ font-family:inherit }

html,body{ height:100% }

body{
  cursor:url('../assets/images/curseur-licorne.png') 2 2, auto;
}
a, button, input, .discord.clickable, #enter{
  cursor:url('../assets/images/curseur-licorne.png') 2 2, pointer;
}

body{
  font-family:var(--police);
  color:var(--text);
  background:var(--bg);
  overflow:hidden;
  display:grid;
  place-items:center;
  -webkit-font-smoothing:antialiased;
}

body::before{
  content:'';
  position:fixed; inset:-20%;
  z-index:-3;
  background:
    radial-gradient(45% 45% at 20% 25%, rgba(178,73,255,.35), transparent 60%),
    radial-gradient(40% 40% at 80% 70%, rgba(255, 77,141,.28), transparent 60%),
    radial-gradient(50% 50% at 50% 50%, rgba( 60, 20,120,.30), transparent 70%),
    var(--bg);
  animation: drift 24s ease-in-out infinite alternate;
}
@keyframes drift{
  from{ transform:translate3d(-3%,-2%,0) scale(1)    }
  to  { transform:translate3d( 3%, 2%,0) scale(1.12) }
}

#bg-video{
  position:fixed; inset:0;
  width:100%; height:100%;
  object-fit:cover;
  z-index:-2;
  pointer-events:none;
  opacity:0;
  transition:opacity 1.2s ease;
}

#bg-video.ready{ opacity:.82 }

.scrim{
  position:fixed; inset:0;
  z-index:-1;
  pointer-events:none;
  background:
    radial-gradient(ellipse at center, transparent 34%, rgba(0,0,0,.5) 100%),
    linear-gradient(rgba(6,3,12,.14), rgba(6,3,12,.26));
}

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

#trail{
  position:fixed; inset:0;
  z-index:90;
  pointer-events:none;
  will-change:transform;
  contain:strict;
}

#enter{
  position:fixed; inset:0;
  z-index:100;
  display:grid; place-items:center;
  gap:1rem;
  cursor:pointer;
  background:rgba(6,3,12,.72);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  transition:opacity .7s ease, visibility .7s;
}
#enter.hidden{ opacity:0; visibility:hidden }

#enter .label{
  font-size:clamp(1.1rem, 4vw, 1.6rem);
  letter-spacing:.32em;
  text-transform:uppercase;
  color:var(--text-dim);
  animation:pulse 2.4s ease-in-out infinite;
}
#enter .sub{
  font-size:.72rem; letter-spacing:.18em;
  text-transform:uppercase;
  color:rgba(167,156,184,.5);
}
@keyframes pulse{ 0%,100%{opacity:.55} 50%{opacity:1} }

.card{
  position:relative;
  width:min(92vw, 460px);
  padding:0 1rem;
  text-align:center;
  text-shadow:0 2px 14px rgba(0,0,0,.85), 0 0 40px rgba(0,0,0,.6);
  transform-style:preserve-3d;
  transition:transform .35s cubic-bezier(.2,.8,.2,1);
  opacity:0;
  animation:rise .9s .25s cubic-bezier(.2,.9,.25,1) forwards;
}
@keyframes rise{
  from{ opacity:0; transform:translateY(26px) scale(.97) }
  to  { opacity:1; transform:none }
}

.avatar{
  position:relative;
  width:118px; height:118px;
  margin:0 auto 1.2rem;
  border-radius:50%;
  padding:3px;
  background:linear-gradient(135deg, var(--accent), var(--accent-2));
  box-shadow:0 0 42px rgba(255,77,141,.5), 0 14px 40px rgba(0,0,0,.6);
  animation:float 5s ease-in-out infinite;
}
@keyframes float{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(-7px)} }

.avatar img,
.avatar .fallback{
  width:100%; height:100%;
  border-radius:50%;
  object-fit:cover;
  display:block;
  background:#160d24;
}
.avatar .fallback{
  display:grid; place-items:center;
  font-size:2.6rem; font-weight:700;
  color:var(--text);
  letter-spacing:.05em;
}
.avatar img[hidden]{ display:none }

.avatar::after{
  content:'';
  position:absolute; right:5px; bottom:5px;
  width:20px; height:20px;
  border-radius:50%;
  background:#39d98a;
  border:3px solid #0d0716;
}

.name{
  font-family:var(--police-titre);
  font-size:3.3rem;
  font-weight:400;
  letter-spacing:.03em;
  line-height:1.1;
  background:linear-gradient(100deg, #fff 10%, var(--accent) 50%, var(--accent-2) 90%);
  background-size:200% auto;
  -webkit-background-clip:text; background-clip:text;
  color:transparent;
  animation:shine 6s linear infinite;
  filter:drop-shadow(0 3px 10px rgba(0,0,0,.9)) drop-shadow(0 0 24px rgba(255,77,141,.5));
}
@keyframes shine{ to{ background-position:200% center } }

.tagline{
  display:flex; align-items:center; justify-content:center;
  gap:.45rem;
  margin-top:.5rem;
  height:26px;
  font-size:.9rem;
  color:var(--text-dim);
  letter-spacing:.04em;
  white-space:nowrap;
}

#tag-img{
  height:22px;
  width:auto;
  max-width:46px;
  object-fit:contain;
  flex:none;
  opacity:0;
  transition:opacity .3s ease;
}

#tag-img.on{ opacity:var(--opacite-cible, 1) }
#tag-img.invert{ filter:invert(1); --opacite-cible:.88 }

.caret{
  display:inline-block;
  width:2px; height:1em;
  background:var(--accent);
  vertical-align:-2px;
  animation:clignote 1s steps(1) infinite;
}
@keyframes clignote{ 50%{ opacity:0 } }

.discord{
  position:relative;
  display:none;
  align-items:center;
  gap:.7rem;
  margin-top:1.4rem;
  padding:.65rem .8rem;
  text-align:left;
  border-radius:15px;
  border:1px solid transparent;
  background:
    linear-gradient(rgba(24,15,38,.72), rgba(24,15,38,.72)) padding-box,
    linear-gradient(100deg, #b249ff, #ff4d8d, #ffc2de, #ff4d8d, #b249ff) border-box;
  background-size:100% 100%, 200% 100%;
  animation:dcBordure 9s linear infinite;

  backdrop-filter:blur(16px) saturate(140%);
  -webkit-backdrop-filter:blur(16px) saturate(140%);
  text-shadow:none;
  box-shadow:0 14px 38px rgba(0,0,0,.5);
}
.discord.on{ display:flex }

.discord::before{
  content:'';
  position:absolute; inset:-7px;
  z-index:-1;
  border-radius:21px;
  background:radial-gradient(closest-side, rgba(255,77,141,.55), transparent);
  filter:blur(11px);
  animation:dcRespire 4.5s ease-in-out infinite;
  pointer-events:none;
}

@keyframes dcBordure{ to{ background-position:0 0, 200% 0 } }
@keyframes dcRespire{ 0%,100%{ opacity:.45 } 50%{ opacity:.9 } }

.discord.clickable{ cursor:pointer }
.discord.clickable:hover::before{ animation:none; opacity:1 }

.dc-avatar{ position:relative; flex:none; width:46px; height:46px }
.dc-avatar img{
  width:100%; height:100%;
  display:block;
  border-radius:13px;
  object-fit:cover;
  background:#1c1329;
}
.dc-dot{
  position:absolute; right:-4px; bottom:-4px;
  width:15px; height:15px;
  border-radius:50%;
  border:3px solid #17102a;
  background:#747f8d;
  transition:background .3s;
}

.dc-body{ flex:1; min-width:0 }

.dc-name{
  font-size:.8rem; font-weight:600;
  color:var(--text);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.dc-line, .dc-sub{
  font-size:.71rem;
  color:var(--text-dim);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  margin-top:.12rem;
}
.dc-line b{ color:#f2eef8; font-weight:600 }

.dc-bar{
  height:3px;
  margin-top:.4rem;
  border-radius:2px;
  background:rgba(255,255,255,.13);
  overflow:hidden;
}
.dc-bar span{
  display:block; height:100%; width:0;
  border-radius:2px;
  background:linear-gradient(90deg, var(--accent), var(--accent-2));
  transition:width .5s linear;
}

.dc-art{
  flex:none;
  width:46px; height:46px;
  display:none;
  border-radius:11px;
  object-fit:cover;
}
.dc-art.on{ display:block }

.localisation{
  display:flex; align-items:center; justify-content:center;
  gap:.35rem;
  margin-top:.75rem;
  font-size:.82rem;
  letter-spacing:.03em;
  color:var(--text-dim);
}
.localisation svg{
  width:15px; height:15px;
  flex:none;
  color:var(--accent-2);
  filter:drop-shadow(0 0 7px rgba(255,77,141,.8));
}

.compteur{
  display:none;
  align-items:center;
  gap:.4rem;
  margin-top:.9rem;
  padding:.35rem .85rem;
  border-radius:999px;
  font-size:.72rem;
  letter-spacing:.07em;
  color:#ffd3e6;
  text-shadow:none;
  background:rgba(255,77,141,.13);
  border:1px solid rgba(255,77,141,.34);
  box-shadow:0 0 20px rgba(255,77,141,.25), inset 0 1px 0 rgba(255,255,255,.12);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.compteur.on{ display:inline-flex }

.compteur b{ font-weight:600; color:#fff }
.compteur svg{
  width:13px; height:13px;
  flex:none;
  color:#ff4d8d;
  animation:battement 1.7s ease-in-out infinite;
}
@keyframes battement{
  0%,100%{ transform:scale(1)    }
  14%    { transform:scale(1.28) }
  28%    { transform:scale(1)    }
  42%    { transform:scale(1.16) }
}

.socials{
  display:grid;
  grid-template-columns:repeat(6, auto);
  justify-content:center;
  gap:.75rem;
  margin-top:1.6rem;
}

.social{
  position:relative;
  display:block;
  width:52px; height:52px;
  text-decoration:none;
  cursor:pointer;
  transition:transform .28s cubic-bezier(.2,.9,.25,1);
}
.social img{
  position:relative;
  z-index:1;
  display:block;
  width:100%; height:100%;
  object-fit:contain;
  filter:drop-shadow(0 5px 12px rgba(0,0,0,.45));
  transition:filter .28s ease;
}
.social:hover,
.social:focus-visible{
  transform:translateY(-7px) scale(1.09);
  outline:none;
}
.social:hover img,
.social:focus-visible img{
  filter:drop-shadow(0 12px 22px rgba(255,77,141,.6));
}
.social:active{ transform:translateY(-3px) scale(1.03) }

.fx-halo .social::before{
  content:'';
  position:absolute; inset:-16%;
  z-index:0;
  border-radius:50%;
  background:radial-gradient(circle, rgba(255,77,141,.65), transparent 68%);
  filter:blur(8px);
  opacity:.4;
  transition:opacity .32s ease, transform .32s ease;
}
.fx-halo .social:hover::before,
.fx-halo .social:focus-visible::before{ opacity:1; transform:scale(1.28) }

@property --tour{ syntax:'<angle>'; initial-value:0deg; inherits:false }

.fx-ring .social::before{
  content:'';
  position:absolute; inset:-14%;
  z-index:0;
  border-radius:50%;
  background:conic-gradient(from var(--tour),
             var(--accent), var(--accent-2), #ffd9ec, var(--accent));
  filter:blur(7px);
  opacity:0;
  animation:tourner 4s linear infinite;
  transition:opacity .32s ease;
}
.fx-ring .social:hover::before,
.fx-ring .social:focus-visible::before{ opacity:.95 }
@keyframes tourner{ to{ --tour:360deg } }

.fx-float .social img{ animation:flotter 3.6s ease-in-out infinite }
.fx-float .social:nth-child(1) img{ animation-delay:0s    }
.fx-float .social:nth-child(2) img{ animation-delay:.22s  }
.fx-float .social:nth-child(3) img{ animation-delay:.44s  }
.fx-float .social:nth-child(4) img{ animation-delay:.66s  }
.fx-float .social:nth-child(5) img{ animation-delay:.88s  }
.fx-float .social:nth-child(6) img{ animation-delay:1.1s  }
@keyframes flotter{ 0%,100%{ transform:translateY(0) } 50%{ transform:translateY(-5px) } }

.social::after{
  content:attr(data-tip);
  position:absolute; bottom:calc(100% + 10px); left:50%;
  z-index:2;
  padding:.32rem .6rem;
  font-size:.68rem; letter-spacing:.1em; text-transform:uppercase;
  white-space:nowrap;
  color:var(--text);
  background:rgba(20,13,32,.95);
  border:1px solid var(--card-border);
  border-radius:8px;
  opacity:0; transform:translate(-50%, 6px);
  transition:opacity .2s, transform .2s;
  pointer-events:none;
}
.social:hover::after,
.social:focus-visible::after{ opacity:1; transform:translate(-50%, 0) }

.footer{
  margin-top:1.8rem;
  font-size:.65rem; letter-spacing:.22em; text-transform:uppercase;
  color:rgba(167,156,184,.35);
}
.footer a{
  color:rgba(255,77,141,.55);
  text-decoration:none;
  border-bottom:1px solid rgba(255,77,141,.25);
  transition:color .25s, border-color .25s, text-shadow .25s;
}
.footer a:hover,
.footer a:focus-visible{
  color:var(--accent-2);
  border-color:rgba(255,77,141,.6);
  text-shadow:0 0 12px rgba(255,77,141,.7);
  outline:none;
}

.player{
  display:none;
  align-items:center;
  gap:.5rem;
  margin-top:1rem;

  padding:.65rem .8rem;
  border-radius:15px;
  border:1px solid transparent;
  text-shadow:none;
  background:
    linear-gradient(rgba(24,15,38,.72), rgba(24,15,38,.72)) padding-box,
    linear-gradient(100deg, #b249ff, #ff4d8d, #ffc2de, #ff4d8d, #b249ff) border-box;
  background-size:100% 100%, 200% 100%;
  animation:dcBordure 9s linear infinite;
  backdrop-filter:blur(16px) saturate(140%);
  -webkit-backdrop-filter:blur(16px) saturate(140%);
  box-shadow:0 14px 38px rgba(0,0,0,.5);
}
.player.show{ display:flex }

.player button{
  flex:none;
  display:grid; place-items:center;
  width:32px; height:32px;
  border:none; border-radius:9px;
  color:var(--text-dim);
  background:rgba(255,255,255,.06);
  cursor:pointer;
  transition:color .2s, background .2s;
}
.player button:hover{ color:#fff; background:rgba(255,77,141,.24) }
.player button svg{ width:15px; height:15px }

.player .title{
  flex:1; min-width:0;
  text-align:left;
  font-size:.68rem; letter-spacing:.05em;
  color:var(--text-dim);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}

input[type=range]{
  -webkit-appearance:none; appearance:none;
  flex:none;
  width:64px; height:4px;
  border-radius:2px;
  background:rgba(255,255,255,.14);
  cursor:pointer;
}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;
  width:11px; height:11px;
  border-radius:50%;
  background:var(--accent);
  box-shadow:0 0 8px rgba(178,73,255,.8);
}
input[type=range]::-moz-range-thumb{
  width:11px; height:11px; border:none;
  border-radius:50%;
  background:var(--accent);
}

@media (max-width: 420px){
  .card{ padding:0 .4rem }
  .name{ font-size:2.7rem }
  .avatar{ width:104px; height:104px }
  .socials{ grid-template-columns:repeat(3, auto); gap:.9rem }
  .social{ width:58px; height:58px }
  input[type=range]{ width:52px }
}

@media (prefers-reduced-motion: reduce){
  *{ animation:none !important; transition-duration:.01ms !important }
}
