/* ====== base ====== */
:root{
  --bg: #1a0710;
  --text: #fbf3f6;
  --muted: rgba(244,243,251,0.58);
  --glass: rgba(255,255,255,0.045);
  --glass-hover: rgba(255,255,255,0.09);
  --border: rgba(255,255,255,0.09);
  --p1: #ff2e74;   /* rose      */
  --p2: #ff5e62;   /* warm coral*/
  --p3: #ff8fb3;   /* blush     */
  --radius: 16px;
}

*{ box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

html, body{
  margin: 0;
  min-height: 100vh;
  color: var(--text);
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  overscroll-behavior: none;
}

/* the whole-page gradient lives here — deep, warm, romantic wine tones */
html{
  /* solid base colour first so iOS rubber-band / overscroll never shows white */
  background-color: #1a0710;
  background-image: linear-gradient(160deg, #1a0710 0%, #230b18 45%, #2c0c1c 100%);
  background-size: 200% 200%;
  animation: bgmove 30s ease-in-out infinite;
}
@keyframes bgmove{
  0%   { background-position: 0% 0%; }
  50%  { background-position: 100% 100%; }
  100% { background-position: 0% 0%; }
}

/* body stays transparent so the gradient + glows show through */
body{
  background: transparent;
  display: flex;
  justify-content: center;
  padding: 28px 18px calc(28px + env(safe-area-inset-bottom)) 18px;
}

/* ====== animated aurora background ====== */
.aurora{
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  background: transparent;   /* the colourful gradient is on <html>; this layer only adds moving glows */
}
.aurora-blob{
  position: absolute;
  width: 50vmax;
  height: 50vmax;
  border-radius: 50%;
  filter: blur(110px);
  mix-blend-mode: screen;
  will-change: transform;
}
/* two soft, restrained glows up top — rose & coral, gently breathing */
.a1{ background: var(--p1); top: -26%; left: -18%; opacity: 0.26; animation: drift1 26s ease-in-out infinite; }
.a2{ background: var(--p2); top: -22%; right: -20%; opacity: 0.20; animation: drift2 32s ease-in-out infinite; }
.a3{ display: none; }

@keyframes drift1{ 0%,100%{ transform: translate(0,0) scale(1);} 50%{ transform: translate(6%,6%) scale(1.08);} }
@keyframes drift2{ 0%,100%{ transform: translate(0,0) scale(1);} 50%{ transform: translate(-7%,4%) scale(1.06);} }

/* ====== card ====== */
.card{
  width: 100%;
  max-width: 440px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  animation: rise 0.55s cubic-bezier(0.2,0.8,0.2,1) both;
}
@keyframes rise{ from{ opacity:0; transform: translateY(16px);} to{ opacity:1; transform: translateY(0);} }

/* ====== cover banner (optional) ====== */
.cover{
  width: 100%;
  height: 132px;
  border-radius: 20px;
  margin-bottom: -46px;
  background-size: cover;
  background-position: center;
  display: none;
  -webkit-mask-image: linear-gradient(to bottom, #000 55%, transparent 100%);
          mask-image: linear-gradient(to bottom, #000 55%, transparent 100%);
}
.cover.show{ display: block; }

/* ====== avatar ====== */
.avatar-ring{
  position: relative;
  z-index: 1;
  width: 132px;
  height: 132px;
  border-radius: 50%;
  padding: 3px;
  margin-bottom: 13px;
  background: linear-gradient(130deg, var(--p1), var(--p2), var(--p3), var(--p1));
  background-size: 260% 260%;
  animation: shift 18s linear infinite;   /* calmer, slower shimmer */
  box-shadow: 0 12px 40px -10px rgba(255,46,116,0.5);
}
.avatar{
  width: 100%;
  height: 100%;
  border-radius: 50%;
  object-fit: cover;
  display: block;
  border: 3px solid #1a0710;
  background: #2a0e1a;
}

@keyframes shift{ to{ background-position: 300% 50%; } }

/* ====== identity ====== */
.name{
  font-size: clamp(21px, 5.2vw, 25px);
  font-weight: 800;
  letter-spacing: -0.02em;
  margin: 0 0 3px;
}
.username{
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 14px;
  font-weight: 500;
}
.bio{
  margin: 0 0 20px;
  color: var(--muted);
  font-size: 14.5px;
  line-height: 1.5;
  max-width: 330px;
}

/* ====== featured (top) button ====== */
.featured-wrap{
  position: relative;
  width: 100%;
  margin-bottom: 18px;
  padding-top: 10px; /* room for the floating badge so it never clips */
}
.featured-badge{
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  background: var(--bg);
  color: #fff;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 4px 12px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.18);
  box-shadow: 0 4px 14px rgba(0,0,0,0.4);
  white-space: nowrap;
}

.featured{
  position: relative;
  display: flex;
  align-items: center;
  gap: 14px;
  width: 100%;
  padding: 16px 18px;
  border-radius: var(--radius);
  text-decoration: none;
  color: #fff;
  overflow: hidden;
  isolation: isolate;
  background: linear-gradient(110deg, var(--p1), var(--p2) 55%, var(--p1));
  background-size: 220% 100%;
  animation: flow 6s ease-in-out infinite;
  box-shadow: 0 14px 40px -10px rgba(255,46,116,0.6), 0 0 0 1px rgba(255,255,255,0.08) inset;
  transition: transform 0.16s ease, box-shadow 0.16s ease;
}
@keyframes flow{ 0%,100%{ background-position: 0% 50%; } 50%{ background-position: 100% 50%; } }

.featured:active{ transform: scale(0.985); }
@media (hover:hover){
  .featured:hover{
    transform: translateY(-2px);
    box-shadow: 0 18px 48px -10px rgba(255,46,116,0.75), 0 0 0 1px rgba(255,255,255,0.12) inset;
  }
}

/* soft moving shine — subtle, not glitchy */
.featured::after{
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,0.28) 47%, rgba(255,255,255,0.05) 54%, transparent 64%);
  transform: translateX(-120%);
  animation: sweep 4.5s ease-in-out infinite;
}
@keyframes sweep{ 0%,100%{ transform: translateX(-120%);} 55%,80%{ transform: translateX(120%);} }

/* small square icon badge (used by non-Fanvue featured links) */
.featured-logo{
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  width: 42px;
  height: 42px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.16);
  backdrop-filter: blur(4px);
  margin-right: 12px;
  vertical-align: middle;
}
.featured-logo svg{ width: 24px; height: 24px; fill: #fff; }
.featured-title-text{ font-size: 17px; font-weight: 800; letter-spacing: -0.01em; vertical-align: middle; }

.featured-text{
  position: relative;
  z-index: 2;
  flex: 1 1 auto;
  text-align: left;
  min-width: 0;
}
.featured-title{
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 17px;
  font-weight: 800;
  letter-spacing: -0.01em;
}
/* the real Fanvue sparkle mark + wordmark lock-up */
.featured-mark{
  flex: 0 0 auto;
  height: 24px;
  width: 24px;
  display: block;
}
.featured-wordmark{
  display: block;
  height: 20px;
  width: auto;
  fill: #fff;
}
.featured-sub{
  display: block;
  font-size: 12.5px;
  font-weight: 500;
  color: rgba(255,255,255,0.82);
  margin-top: 1px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.featured-arrow{
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  fill: none;
  stroke: #fff;
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: 0.9;
}

@media (prefers-reduced-motion: reduce){
  html, .featured, .avatar-ring, .aurora-blob{ animation: none; }
  .featured::after{ display: none; }
}

/* ====== social icon row ====== */
.social-row{
  width: 100%;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 14px;
  margin-bottom: 18px;
}
.social{
  --brand: #fff;
  width: 54px;
  height: 54px;
  border-radius: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--glass);
  border: 1px solid var(--border);
  color: var(--text);
  transition: transform 0.16s ease, background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.social svg{ width: 23px; height: 23px; fill: currentColor; transition: color 0.2s ease; }
.social:active{ transform: scale(0.92); }
@media (hover:hover){
  .social:hover{
    transform: translateY(-3px);
    color: var(--brand);
    border-color: color-mix(in srgb, var(--brand) 55%, transparent);
    background: color-mix(in srgb, var(--brand) 14%, var(--glass));
    box-shadow: 0 10px 26px -8px color-mix(in srgb, var(--brand) 70%, transparent);
  }
}
/* instagram needs its signature gradient on hover */
@media (hover:hover){
  .social.ig:hover{
    color: #fff;
    border-color: transparent;
    background: linear-gradient(45deg,#feda75,#fa7e1e,#d62976,#962fbf,#4f5bd5);
    box-shadow: 0 10px 26px -8px rgba(214,41,118,0.75);
  }
}

/* ====== extra links ====== */
.links{
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.link{
  display: flex;
  align-items: center;
  gap: 14px;
  width: 100%;
  min-height: 56px;
  padding: 12px 18px;
  border-radius: var(--radius);
  background: var(--glass);
  border: 1px solid var(--border);
  color: var(--text);
  text-decoration: none;
  font-size: 15px;
  font-weight: 600;
  text-align: left;
  transition: transform 0.16s ease, background 0.2s ease, border-color 0.2s ease;
}
.link:active{ transform: scale(0.98); }
@media (hover:hover){
  .link:hover{ background: var(--glass-hover); border-color: rgba(255,255,255,0.2); transform: translateY(-2px); }
}
.link-icon{ flex: 0 0 auto; width: 22px; height: 22px; display:flex; align-items:center; justify-content:center; }
.link-icon svg{ width: 100%; height: 100%; fill: currentColor; }
.link-label{ flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.link-arrow{ flex: 0 0 auto; width: 16px; height: 16px; opacity: 0.4; fill:none; stroke: currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }

/* ====== footer ====== */
.footer{
  margin-top: 30px;
  font-size: 12px;
  color: rgba(244,243,251,0.32);
}

/* ====== small screens ====== */
@media (max-width: 360px){
  .social{ width: 50px; height: 50px; }
  .cover{ height: 112px; }
  .bio{ font-size: 14px; }
}
