/* Shared public polish hooks for AiCupid pages. Most layout styling lives inline with Tailwind utilities. */
.ac-gradient-text {
  background: linear-gradient(135deg, #fff 0%, #fbcfe8 46%, #bae6fd 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.profile-art-focus,
.preview-art,
.wardrobe-avatar {
  object-position: var(--profile-focus-x, 50%) var(--profile-focus-y, 0%);
}

.media-vault-image,
.chat-generated-image {
  object-position: 50% 0%;
}

.aicupid-language {
  position: relative;
  z-index: 80;
  color: #fff;
}

.aicupid-language summary {
  display: inline-flex;
  max-width: 10rem;
  min-height: 2.5rem;
  cursor: pointer;
  list-style: none;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 999px;
  background: rgba(255, 255, 255, .08);
  padding: .55rem .85rem;
  font-size: .8rem;
  font-weight: 900;
  line-height: 1;
}

.aicupid-language summary span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.aicupid-language summary::-webkit-details-marker {
  display: none;
}

.aicupid-language img {
  height: 1rem;
  width: 1.35rem;
  flex: 0 0 auto;
  border-radius: .18rem;
  object-fit: cover;
}

.aicupid-language__menu {
  position: absolute;
  right: 0;
  top: calc(100% + .5rem);
  display: grid;
  width: min(18rem, calc(100vw - 2rem));
  max-height: min(26rem, 72vh);
  overflow-y: auto;
  border: 1px solid rgba(255, 255, 255, .14);
  border-radius: 1rem;
  background: rgba(10, 10, 16, .96);
  padding: .45rem;
  box-shadow: 0 1.5rem 4rem rgba(0, 0, 0, .45);
}

.aicupid-language__menu form {
  margin: 0;
}

.aicupid-language__menu a,
.aicupid-language__menu button {
  display: grid;
  width: 100%;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: .65rem;
  border: 0;
  border-radius: .75rem;
  background: transparent;
  color: rgba(255, 255, 255, .82);
  padding: .65rem .7rem;
  text-align: left;
  text-decoration: none;
  font: inherit;
  cursor: pointer;
}

.aicupid-language__menu a:hover,
.aicupid-language__menu a.is-active,
.aicupid-language__menu button:hover,
.aicupid-language__menu button.is-active {
  background: rgba(255, 255, 255, .10);
  color: #fff;
}

.aicupid-language__menu small {
  display: block;
  color: rgba(255, 255, 255, .48);
  font-size: .68rem;
  font-weight: 800;
  line-height: 1.25;
}

.aicupid-rail__secondary .aicupid-language__menu {
  left: 0;
  right: auto;
}

@media (max-width: 640px) {
  .aicupid-language {
    flex: 0 0 auto;
  }

  .aicupid-language summary {
    max-width: 7.75rem;
    min-height: 2.25rem;
    gap: .42rem;
    padding: .48rem .7rem;
    font-size: .76rem;
  }

  .aicupid-language img {
    height: .9rem;
    width: 1.2rem;
  }

  .aicupid-language__menu {
    position: fixed;
    top: calc(env(safe-area-inset-top, 0px) + 4.75rem);
    left: 1rem;
    right: 1rem;
    width: auto;
    max-height: min(22rem, calc(100dvh - 6.5rem));
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .25rem;
    border-radius: 1rem;
    padding: .4rem;
    overscroll-behavior: contain;
  }

  .aicupid-language__menu a,
  .aicupid-language__menu button {
    min-height: 3.25rem;
    gap: .5rem;
    padding: .55rem .6rem;
  }

  .aicupid-language__menu small {
    font-size: .62rem;
  }
}

@media (max-width: 720px) {
  .profile-art-focus,
  .preview-art,
  .wardrobe-avatar,
  .media-vault-image,
  .chat-generated-image {
    object-position: 50% 0%;
  }
}

.ac-legal-body {
  background:
    radial-gradient(circle at 10% 5%, rgba(255, 79, 163, .18), transparent 28rem),
    radial-gradient(circle at 84% 14%, rgba(56, 189, 248, .14), transparent 26rem),
    radial-gradient(circle at 50% 96%, rgba(110, 231, 183, .08), transparent 28rem),
    linear-gradient(135deg, #07070b 0%, #0d1018 48%, #170d16 100%);
  overflow-x: hidden;
}

.ac-legal-bg-wall {
  position: fixed;
  top: 1.25rem;
  right: max(1rem, calc((100vw - 1180px) / 2));
  z-index: 2;
  display: grid;
  grid-template-columns: repeat(6, minmax(6.5rem, 1fr));
  grid-auto-rows: 7.5rem;
  gap: .55rem;
  width: min(66rem, calc(100vw - 2rem));
  height: 28rem;
  border: 1px solid rgba(255, 255, 255, .10);
  border-radius: 2rem;
  background: rgba(255, 255, 255, .035);
  box-shadow: 0 2rem 6rem rgba(0, 0, 0, .74), inset 0 0 0 1px rgba(255, 255, 255, .035);
  opacity: .42;
  overflow: hidden;
  padding: .75rem;
  filter: blur(1.15px) saturate(90%) brightness(68%);
  transform: rotate(-1.5deg);
  pointer-events: none;
}

.ac-legal-bg-wall::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(5, 5, 8, .58), rgba(5, 5, 8, .22) 42%, rgba(5, 5, 8, .55)),
    linear-gradient(180deg, rgba(5, 5, 8, .18), rgba(5, 5, 8, .64));
}

.ac-legal-bg-wall img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--profile-focus-x, 50%) var(--profile-focus-y, 0%);
  border-radius: .9rem;
}

.ac-legal-bg-wall img:nth-child(2n) {
  grid-row: span 2;
}

.ac-legal-bg-wall img:nth-child(5n) {
  grid-column: span 2;
}

.ac-legal-shade {
  position: fixed;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(90deg, rgba(5, 5, 8, .98), rgba(5, 5, 8, .92) 42%, rgba(5, 5, 8, .82)),
    linear-gradient(180deg, rgba(5, 5, 8, .35), rgba(5, 5, 8, .88) 30rem, rgba(5, 5, 8, .97)),
    radial-gradient(circle at 82% 14%, rgba(255, 79, 163, .15), transparent 24rem);
  pointer-events: none;
}

.ac-legal-page {
  position: relative;
  z-index: 10;
  margin: 0 auto;
  width: 100%;
  max-width: 72rem;
  padding: 1.25rem 1rem 4rem;
}

.ac-legal-document {
  max-width: 58rem;
}

.ac-legal-nav {
  position: relative;
  z-index: 10;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .85rem;
  margin-bottom: 1.25rem;
}

.ac-legal-nav-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
}

.ac-policy-shell {
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 1.25rem;
  background: rgba(8, 10, 15, .92);
  box-shadow: 0 1.75rem 5rem rgba(0, 0, 0, .46);
  overflow: hidden;
}

.ac-policy-hero {
  border-bottom: 1px solid rgba(255, 255, 255, .10);
  padding: clamp(1.2rem, 3.5vw, 2.1rem);
  background:
    radial-gradient(circle at 8% 0%, rgba(255, 79, 163, .16), transparent 18rem),
    linear-gradient(180deg, rgba(255, 255, 255, .035), transparent);
}

.ac-policy-kicker {
  display: inline-flex;
  align-items: center;
  border: 1px solid rgba(251, 207, 232, .24);
  border-radius: 999px;
  background: rgba(255, 79, 163, .10);
  color: #ffd7ea;
  padding: .5rem .75rem;
  font-size: .74rem;
  font-weight: 900;
  letter-spacing: .08em;
  line-height: 1;
  text-transform: uppercase;
}

.ac-policy-title {
  margin-top: .95rem;
  max-width: 18ch;
  color: #fff;
  font-size: clamp(2rem, 5.2vw, 3.5rem);
  font-weight: 950;
  letter-spacing: 0;
  line-height: 1.02;
}

.ac-policy-effective {
  margin-top: .9rem;
  color: rgba(255, 255, 255, .62);
  font-size: .92rem;
  font-weight: 700;
}

.ac-policy-summary {
  margin-top: 1rem;
  max-width: 62ch;
  color: rgba(255, 255, 255, .72);
  font-size: 1rem;
  line-height: 1.72;
}

.ac-policy-prose {
  padding: clamp(1.15rem, 3.5vw, 2.15rem);
  color: rgba(255, 255, 255, .75);
  font-size: 1rem;
  line-height: 1.76;
}

.ac-policy-prose h2 {
  margin: 2rem 0 .75rem;
  color: #fff;
  font-size: clamp(1.3rem, 2.6vw, 1.85rem);
  font-weight: 950;
  letter-spacing: 0;
  line-height: 1.18;
}

.ac-policy-prose h2:first-child {
  margin-top: 0;
}

.ac-policy-prose p {
  margin: .85rem 0;
  max-width: 72ch;
}

.ac-policy-prose ul,
.ac-policy-prose ol {
  display: grid;
  gap: .55rem;
  margin: .9rem 0 1rem;
  max-width: 72ch;
  padding-left: 1.2rem;
}

.ac-policy-prose li {
  padding-left: .2rem;
}

.ac-policy-prose a {
  color: #fbcfe8;
  font-weight: 800;
  text-decoration: underline;
  text-decoration-color: rgba(251, 207, 232, .32);
  text-underline-offset: .22rem;
}

.ac-policy-prose a:hover {
  color: #fff;
  text-decoration-color: rgba(255, 255, 255, .7);
}

.ac-legal-back {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255, 79, 163, .42);
  border-radius: 999px;
  background: rgba(255, 79, 163, .16);
  color: #ffe4f1;
  font-size: .88rem;
  font-weight: 950;
  min-height: 2.75rem;
  padding: .68rem 1.05rem;
  text-decoration: none;
}

.ac-legal-back:hover {
  background: rgba(255, 79, 163, .26);
  color: #fff;
}

.ac-legal-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255, 255, 255, .15);
  border-radius: 999px;
  background: rgba(255, 255, 255, .07);
  color: rgba(255, 255, 255, .84);
  font-size: .86rem;
  font-weight: 900;
  min-height: 2.65rem;
  padding: .65rem 1rem;
  text-decoration: none;
}

.ac-legal-button:hover {
  background: rgba(255, 255, 255, .12);
  color: #fff;
}

.ac-legal-button-primary {
  border-color: rgba(255, 79, 163, .45);
  background: rgba(255, 79, 163, .20);
  color: #ffe4f1;
}

.ac-legal-center-shell {
  border: 1px solid rgba(255, 255, 255, .10);
  border-radius: 1.35rem;
  background: rgba(8, 10, 15, .70);
  box-shadow: 0 1.75rem 5rem rgba(0, 0, 0, .40);
  overflow: hidden;
}

.ac-legal-center-hero {
  padding: clamp(1.25rem, 4vw, 2.6rem);
  border-bottom: 1px solid rgba(255, 255, 255, .10);
  background:
    radial-gradient(circle at 10% 5%, rgba(255, 79, 163, .18), transparent 20rem),
    radial-gradient(circle at 88% 12%, rgba(56, 189, 248, .10), transparent 20rem),
    linear-gradient(180deg, rgba(255, 255, 255, .035), transparent);
}

.ac-legal-center-title {
  margin-top: .9rem;
  max-width: 13ch;
  color: #fff;
  font-size: clamp(2.35rem, 6vw, 4.3rem);
  font-weight: 950;
  letter-spacing: 0;
  line-height: 1;
}

.ac-legal-center-copy {
  margin-top: 1rem;
  max-width: 60ch;
  color: rgba(255, 255, 255, .74);
  font-size: clamp(1rem, 2vw, 1.12rem);
  line-height: 1.72;
}

.ac-legal-center-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin-top: 1.35rem;
}

.ac-legal-category {
  padding: clamp(1.1rem, 3vw, 1.55rem);
  border-top: 1px solid rgba(255, 255, 255, .08);
}

.ac-legal-category:first-child {
  border-top: 0;
}

.ac-legal-category-head {
  display: grid;
  gap: .45rem;
  margin-bottom: 1rem;
}

.ac-legal-category-title {
  color: #fff;
  font-size: clamp(1.35rem, 3vw, 2rem);
  font-weight: 950;
  letter-spacing: 0;
  line-height: 1.15;
}

.ac-legal-category-copy {
  max-width: 66ch;
  color: rgba(255, 255, 255, .63);
  font-size: .95rem;
  line-height: 1.65;
}

.ac-legal-card-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .8rem;
}

.ac-legal-card {
  display: flex;
  min-height: 9rem;
  flex-direction: column;
  justify-content: space-between;
  border: 1px solid rgba(255, 255, 255, .10);
  border-radius: .95rem;
  background: rgba(255, 255, 255, .045);
  color: #fff;
  padding: 1rem;
  text-decoration: none;
  transition: background-color 180ms ease, border-color 180ms ease, transform 180ms ease;
}

.ac-legal-card:hover {
  transform: translateY(-2px);
  border-color: rgba(251, 207, 232, .42);
  background: rgba(255, 255, 255, .075);
}

.ac-legal-card-title {
  display: block;
  color: #fff;
  font-size: 1.08rem;
  font-weight: 950;
  letter-spacing: 0;
  line-height: 1.2;
}

.ac-legal-card-copy {
  display: block;
  margin-top: .55rem;
  color: rgba(255, 255, 255, .64);
  font-size: .9rem;
  line-height: 1.55;
}

.ac-legal-card-cta {
  margin-top: .9rem;
  color: #ffd7ea;
  font-size: .78rem;
  font-weight: 950;
  letter-spacing: .08em;
  text-transform: uppercase;
}

@media (max-width: 720px) {
  .ac-legal-bg-wall {
    top: .75rem;
    left: .75rem;
    right: .75rem;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-auto-rows: 5.8rem;
    width: auto;
    height: 18rem;
    border-radius: 1.25rem;
    opacity: .22;
    padding: .5rem;
    transform: rotate(-1deg);
  }

  .ac-legal-bg-wall img:nth-child(n+10) {
    display: none;
  }

  .ac-policy-shell {
    border-radius: 1rem;
  }

  .ac-legal-page {
    padding: .85rem .85rem 3rem;
  }

  .ac-legal-nav,
  .ac-legal-nav-actions,
  .ac-legal-center-actions {
    align-items: stretch;
    width: 100%;
  }

  .ac-legal-back,
  .ac-legal-button {
    flex: 1 1 auto;
    min-width: min(100%, 9rem);
  }

  .ac-legal-card-grid {
    grid-template-columns: 1fr;
  }

  .ac-legal-center-title {
    max-width: 10ch;
  }
}

.ac-utility-body {
  background:
    radial-gradient(circle at 16% 6%, rgba(255, 79, 163, .20), transparent 28rem),
    radial-gradient(circle at 88% 4%, rgba(56, 189, 248, .13), transparent 26rem),
    linear-gradient(145deg, #07070b 0%, #101017 48%, #1b0d1a 100%);
  overflow-x: hidden;
}

.ac-utility-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  contain: paint;
}

.ac-utility-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(5, 5, 8, .38), rgba(5, 5, 8, .82) 56%, rgba(5, 5, 8, .94)),
    radial-gradient(circle at center, transparent 0, rgba(0, 0, 0, .42) 72%);
}

.ac-utility-bg__wash {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 8% 16%, rgba(255, 79, 163, .18), transparent 24rem),
    radial-gradient(circle at 94% 18%, rgba(56, 189, 248, .14), transparent 24rem),
    radial-gradient(circle at 50% 100%, rgba(255, 255, 255, .05), transparent 26rem);
  filter: blur(10px);
}

.ac-utility-bg__profile {
  position: absolute;
  display: block;
  width: min(22vw, 15rem);
  aspect-ratio: 3 / 4;
  border-radius: 1.8rem;
  object-fit: cover;
  opacity: .08;
  filter: blur(10px) saturate(.82) brightness(.62);
  transform: rotate(var(--utility-tilt, -6deg));
  box-shadow: 0 36px 90px rgba(0, 0, 0, .55);
}

.ac-utility-bg__profile--1 {
  --utility-tilt: -8deg;
  left: max(1rem, 6vw);
  top: 8vh;
}

.ac-utility-bg__profile--2 {
  --utility-tilt: 7deg;
  right: max(1rem, 7vw);
  top: 12vh;
}

.ac-utility-bg__profile--3 {
  --utility-tilt: -2deg;
  right: 18vw;
  bottom: -5rem;
}

.ac-auth-shell {
  min-height: 100vh;
  position: relative;
  z-index: 10;
}

@media (max-width: 720px) {
  .ac-utility-bg__profile {
    width: min(7.25rem, calc(50vw - 1rem));
    border-radius: 1.25rem;
    opacity: .045;
    filter: blur(8px) saturate(.75) brightness(.58);
    transform: none;
    box-shadow: 0 24px 60px rgba(0, 0, 0, .48);
  }

  .ac-utility-bg__profile--1 {
    left: 1rem;
    top: 9rem;
  }

  .ac-utility-bg__profile--2 {
    right: 1rem;
    top: 2rem;
  }

  .ac-utility-bg__profile--3 {
    display: none;
  }
}

.aicupid-brand-logo {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  object-fit: contain;
}

.aicupid-logo-beta-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  line-height: 0;
  vertical-align: middle;
}

.aicupid-logo-beta-stamp {
  position: absolute;
  right: -.9rem;
  top: -.55rem;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255, 255, 255, .85);
  border-radius: 999px;
  background: #facc15;
  color: #18181b;
  padding: .18rem .38rem;
  font-size: .58rem;
  font-weight: 950;
  letter-spacing: 0;
  line-height: 1;
  text-transform: uppercase;
  box-shadow: 0 8px 18px rgba(0, 0, 0, .35);
  transform: rotate(-10deg);
  pointer-events: none;
}

.aicupid-disabled-cta {
  cursor: not-allowed;
  filter: grayscale(1);
  opacity: .58;
  pointer-events: none;
}

.cupid-media {
  display: block;
  position: relative;
  background: #09090b;
}

.cupid-media__image,
.cupid-media__video {
  position: absolute;
  inset: 0;
  height: 100%;
  width: 100%;
}

.cupid-media__image {
  opacity: 1;
  z-index: 1;
}

.cupid-media__video {
  opacity: 0;
  z-index: 2;
  transition: opacity 220ms ease;
}

.cupid-media.is-video-ready .cupid-media__image {
  opacity: 0;
  visibility: hidden;
  z-index: 0;
}

.cupid-media.is-video-ready .cupid-media__video {
  opacity: 1;
  z-index: 3;
}

.cupid-media.is-video-failed .cupid-media__video,
.cupid-media.is-coming-soon .cupid-media__video {
  display: none;
}

.cupid-media.is-video-failed .cupid-media__image,
.cupid-media.is-coming-soon .cupid-media__image {
  opacity: 1;
  visibility: visible;
  z-index: 1;
}

.cupid-media.is-coming-soon .cupid-media__image,
.cupid-media.is-media-failed .cupid-media__image {
  filter: grayscale(1) saturate(.55) brightness(.72);
}

.cupid-media__coming {
  align-items: center;
  background: rgba(9, 9, 11, .62);
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 999px;
  bottom: .8rem;
  color: rgba(255, 255, 255, .86);
  display: inline-flex;
  font-size: .68rem;
  font-weight: 900;
  gap: .35rem;
  left: .8rem;
  letter-spacing: .14em;
  padding: .38rem .64rem;
  position: absolute;
  text-transform: uppercase;
  z-index: 5;
}

.cupid-media__badge {
  align-items: center;
  background: rgba(0, 0, 0, .48);
  border-radius: 999px;
  color: #ffd0e8;
  display: inline-flex;
  font-size: .65rem;
  font-weight: 900;
  gap: .3rem;
  letter-spacing: .14em;
  padding: .3rem .52rem;
  position: absolute;
  left: .75rem;
  text-transform: uppercase;
  top: .75rem;
  z-index: 5;
}

.cupid-media__pulse {
  background: #ff4fa3;
  border-radius: 999px;
  box-shadow: 0 0 10px rgba(255, 79, 163, .9);
  height: .34rem;
  width: .34rem;
}
