:root{
  --bg:#f6fbff;
  --ink:#273747;
  --muted:#6b7d8e;
  --soft:#eaf6ff;
  --card:#ffffff;
  --line:rgba(83,117,147,.16);
  --line2:rgba(83,117,147,.24);
  --blue:#73c7ff;
  --mint:#8ee9c7;
  --lav:#b7a9ff;
  --pink:#ff9dc8;
  --yellow:#ffe4a1;
  --shadow:0 18px 44px rgba(68,103,132,.13);
  --shadow2:0 10px 26px rgba(68,103,132,.10);
  --sans:"IBM Plex Sans KR",system-ui,-apple-system,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,monospace;
  --display:"Playfair Display",serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  min-height:100vh;
  color:var(--ink);
  font-family:var(--sans);
  word-break:keep-all;
  background:
    radial-gradient(circle at 8% 6%,rgba(255,157,200,.28),transparent 23rem),
    radial-gradient(circle at 94% 8%,rgba(115,199,255,.28),transparent 25rem),
    radial-gradient(circle at 40% 112%,rgba(142,233,199,.22),transparent 32rem),
    linear-gradient(135deg,#fff7fb 0%,#f4fbff 48%,#f9fff8 100%);
  overflow-x:hidden;
}
button,input{font:inherit;color:inherit}
button{cursor:pointer}
img{max-width:100%;-webkit-user-drag:none}
.page-bg,.bubble-bg{position:fixed;inset:0;pointer-events:none}
.page-bg{
  z-index:-3;
  opacity:.55;
  background-image:
    linear-gradient(rgba(255,255,255,.70) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.70) 1px,transparent 1px);
  background-size:38px 38px;
}
.bubble-bg{
  z-index:-2;
  opacity:.28;
  background:
    radial-gradient(circle at 20% 22%,rgba(255,255,255,.9) 0 2px,transparent 3px),
    radial-gradient(circle at 75% 36%,rgba(255,255,255,.85) 0 2px,transparent 3px),
    radial-gradient(circle at 52% 82%,rgba(255,255,255,.85) 0 2px,transparent 3px);
  background-size:120px 120px,160px 160px,200px 200px;
}
.shell{width:min(1180px,calc(100% - 36px));margin:0 auto}
.topbar{
  position:sticky;
  top:0;
  z-index:30;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:13px clamp(16px,4vw,42px);
  border-bottom:1px solid rgba(255,255,255,.80);
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(16px);
  box-shadow:0 10px 28px rgba(68,103,132,.08);
}
.brand{
  display:flex;
  align-items:center;
  gap:11px;
  border:0;
  background:transparent;
  padding:0;
  text-align:left;
}
.brand-mark{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:15px;
  color:#fff;
  background:linear-gradient(135deg,var(--pink),var(--blue));
  box-shadow:0 10px 22px rgba(255,157,200,.24);
  font-family:var(--display);
  font-weight:800;
}
.brand-copy strong{
  display:block;
  font-weight:900;
  font-size:.98rem;
  letter-spacing:.02em;
}
.brand-copy em{
  display:block;
  margin-top:1px;
  color:#7e94a5;
  font-family:var(--mono);
  font-style:normal;
  font-size:.64rem;
}
.nav{display:flex;gap:7px}
.nav button,.filters button,.profile-nav button{
  border:1px solid rgba(255,255,255,.86);
  border-radius:999px;
  background:rgba(255,255,255,.72);
  padding:9px 13px;
  color:#4a5d6d;
  font-family:var(--mono);
  font-size:.72rem;
  font-weight:700;
  box-shadow:var(--shadow2);
}
.nav button:hover,.filters button:hover,.filters button.active{
  color:#fff;
  border-color:transparent;
  background:linear-gradient(135deg,var(--pink),var(--blue));
}
.hero{
  padding:38px 0 16px;
}
.hero-kicker,.label{
  margin:0 0 8px;
  color:#ff73ad;
  font-family:var(--mono);
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.14em;
}
.hero h1{
  margin:0;
  font-family:var(--display);
  font-size:clamp(3.4rem,10vw,8rem);
  line-height:.82;
  letter-spacing:-.06em;
  color:#263949;
  text-shadow:4px 4px 0 rgba(255,228,161,.78);
}
.hero h1 span{
  background:linear-gradient(90deg,var(--pink),var(--blue),var(--mint));
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.hero-sub{
  max-width:620px;
  margin:18px 0 0;
  color:#6e8090;
  line-height:1.7;
  font-weight:600;
}
.browse{
  margin-top:20px;
  border:1px solid rgba(255,255,255,.82);
  border-radius:32px;
  background:rgba(255,255,255,.62);
  box-shadow:var(--shadow);
  padding:22px;
}
.browse-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
}
.browse h2{
  margin:0;
  font-size:1.65rem;
  line-height:1.1;
  letter-spacing:-.05em;
}
.count{
  margin:0;
  color:#7c91a0;
  font-family:var(--mono);
  font-size:.78rem;
}
.search-box{
  height:54px;
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:16px;
  border:1px solid rgba(255,255,255,.88);
  border-radius:999px;
  background:rgba(255,255,255,.86);
  padding:0 18px;
  box-shadow:var(--shadow2);
}
.search-box span{color:#ff73ad;font-weight:900}
.search-box input{
  width:100%;
  border:0;
  outline:0;
  background:transparent;
  font-weight:800;
}
.search-box input::placeholder{color:#9bacb9}
.filters{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:13px;
}
.hint{
  margin:12px 0 0;
  color:#7c91a0;
  font-size:.86rem;
  font-weight:600;
}
.roster{padding:22px 0 34px}
.card-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:16px;
}
.char-card{
  position:relative;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.85);
  border-radius:28px;
  background:rgba(255,255,255,.74);
  box-shadow:var(--shadow);
  padding:0;
  text-align:left;
  transition:.18s ease;
  content-visibility:auto;
  contain-intrinsic-size:320px;
}
.char-card:hover{transform:translateY(-4px)}
.char-card:after{
  content:"";
  position:absolute;
  inset:auto 16px 0;
  height:5px;
  border-radius:999px 999px 0 0;
  background:linear-gradient(90deg,var(--pink),var(--blue),var(--mint));
}
.card-img{
  aspect-ratio:1216/704;
  overflow:hidden;
  background:#eef8ff;
}
.card-img img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.card-body{padding:14px 16px 19px}
.card-name{
  margin:0;
  font-size:1.18rem;
  line-height:1.18;
  font-weight:900;
  letter-spacing:-.045em;
}
.card-meta{
  margin:8px 0 0;
  color:#748899;
  font-size:.78rem;
  font-weight:700;
}
.chips{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:10px;
}
.chips span{
  border-radius:999px;
  background:#eef8ff;
  color:#526b7c;
  padding:5px 8px;
  font-size:.66rem;
  font-weight:800;
}
.overlay{
  position:fixed;
  inset:0;
  z-index:50;
  display:none;
  place-items:center;
  padding:18px;
  background:rgba(38,55,71,.42);
  backdrop-filter:blur(10px);
  overflow:auto;
}
.overlay.show{display:grid}
.profile-card{
  position:relative;
  width:min(1120px,100%);
  max-height:calc(100dvh - 36px);
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(360px,.82fr);
  overflow:hidden;
  border:1px solid rgba(255,255,255,.86);
  border-radius:34px;
  background:rgba(255,255,255,.92);
  box-shadow:0 30px 100px rgba(54,79,102,.24);
}
.close-btn{
  position:absolute;
  top:14px;
  right:14px;
  z-index:5;
  width:42px;
  height:42px;
  border:1px solid rgba(255,255,255,.88);
  border-radius:50%;
  background:rgba(255,255,255,.84);
  color:#516879;
  font-weight:900;
}
.visual-side{
  padding:18px;
  background:
    radial-gradient(circle at 20% 8%,rgba(255,157,200,.22),transparent 20rem),
    radial-gradient(circle at 80% 0%,rgba(115,199,255,.20),transparent 20rem),
    #f6fbff;
}
.image-frame{
  position:relative;
  overflow:hidden;
  border-radius:26px;
  background:#eef8ff;
  aspect-ratio:1216/704;
}
.image-frame img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
}
.image-frame span{
  position:absolute;
  left:12px;
  bottom:12px;
  border-radius:999px;
  background:rgba(255,255,255,.84);
  padding:7px 10px;
  color:#5d7385;
  font-family:var(--mono);
  font-size:.7rem;
  font-weight:800;
}
.emotion-tabs{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
  margin-top:12px;
}
.emotion-tabs button{
  border:1px solid rgba(255,255,255,.88);
  border-radius:16px;
  background:rgba(255,255,255,.68);
  padding:9px 6px;
  color:#566b7d;
  font-size:.74rem;
  font-weight:800;
}
.emotion-tabs button.active{
  color:#fff;
  background:linear-gradient(135deg,var(--pink),var(--blue));
}
.info-side{
  overflow:auto;
  padding:clamp(24px,4vw,38px);
}
.info-side h3{
  margin:0;
  font-size:clamp(2.1rem,4.3vw,3.8rem);
  line-height:1.02;
  letter-spacing:-.075em;
  font-weight:900;
}
.profile-meta{
  margin:10px 0 0;
  color:#748899;
  font-weight:800;
}
.keyword-line{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  margin-top:13px;
}
.keyword-line span{
  border-radius:999px;
  background:#eef8ff;
  color:#516b7c;
  padding:6px 9px;
  font-size:.72rem;
  font-weight:800;
}
.detail-grid{
  display:grid;
  gap:10px;
  margin-top:18px;
}
.detail-grid section{
  border:1px solid rgba(255,255,255,.88);
  border-radius:22px;
  background:rgba(255,255,255,.62);
  padding:14px 16px;
  box-shadow:0 10px 24px rgba(68,103,132,.07);
}
.detail-grid b{
  display:block;
  color:#ff73ad;
  font-size:.78rem;
  margin-bottom:6px;
}
.detail-grid p{
  margin:0;
  color:#5e7283;
  line-height:1.65;
}
.profile-nav{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin-top:16px;
}
.profile-nav button{
  background:linear-gradient(135deg,var(--pink),var(--blue));
  color:#fff;
}
.footer{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:22px 0 34px;
  color:#758899;
  font-family:var(--mono);
  font-size:.72rem;
}
@media (max-width:1040px){
  .card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:760px){
  .page-bg,.bubble-bg{display:none}
  body{background:linear-gradient(135deg,#fff7fb,#f4fbff 50%,#f8fff5)}
  .topbar{
    padding:10px 12px;
    backdrop-filter:none;
  }
  .brand-mark{width:36px;height:36px;border-radius:13px}
  .brand-copy strong{font-size:.86rem}
  .brand-copy em{display:none}
  .nav{gap:5px}
  .nav button{padding:7px 8px;font-size:.62rem}
  .shell{width:min(100% - 22px,1180px)}
  .hero{padding:24px 0 12px}
  .hero h1{font-size:clamp(3rem,17vw,5rem)}
  .hero-sub{font-size:.86rem}
  .browse{border-radius:24px;padding:17px 14px}
  .browse h2{font-size:1.28rem}
  .search-box{height:46px}
  .filters{gap:6px}
  .filters button{padding:7px 9px;font-size:.64rem}
  .card-grid{grid-template-columns:1fr;gap:11px}
  .char-card{
    display:grid;
    grid-template-columns:112px 1fr;
    min-height:136px;
    border-radius:22px;
  }
  .card-img{
    height:100%;
    aspect-ratio:auto;
  }
  .card-body{
    padding:12px 13px;
    display:flex;
    flex-direction:column;
    justify-content:center;
  }
  .card-name{
    font-size:1.05rem;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .card-meta{
    font-size:.68rem;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .chips{margin-top:8px}
  .chips span{font-size:.58rem;padding:4px 7px}
  .chips span:nth-child(n+4){display:none}
  .overlay{padding:0;backdrop-filter:none}
  .profile-card{
    width:100%;
    min-height:100dvh;
    max-height:none;
    grid-template-columns:1fr;
    border-radius:0;
    border:0;
  }
  .visual-side{padding:10px}
  .image-frame{border-radius:18px}
  .emotion-tabs{grid-template-columns:repeat(2,1fr)}
  .emotion-tabs button{padding:8px 4px;font-size:.68rem}
  .info-side{padding:20px 18px 28px}
  .info-side h3{font-size:2rem}
  .detail-grid section{border-radius:18px;padding:12px 13px}
  .footer{display:block;line-height:1.8}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
    scroll-behavior:auto!important;
  }
}


/* v2: remove giant title, rename to 엄마친구딸, slim hero */
.hero{
  padding:24px 0 10px !important;
}

.hero.shell{
  display:block !important;
}

.hero{
  border:1px solid rgba(255,255,255,.82) !important;
  border-radius:28px !important;
  background:
    radial-gradient(circle at 95% 12%,rgba(115,199,255,.20),transparent 18rem),
    radial-gradient(circle at 4% 10%,rgba(255,157,200,.18),transparent 16rem),
    rgba(255,255,255,.58) !important;
  box-shadow:var(--shadow) !important;
  padding:22px !important;
  margin-top:24px !important;
}

.hero-kicker{
  margin-bottom:8px !important;
  font-size:.68rem !important;
}

.hero h1{
  display:none !important;
}

.hero-sub{
  max-width:none !important;
  margin:0 !important;
  color:#687e90 !important;
  font-size:.94rem !important;
  line-height:1.65 !important;
  font-weight:700 !important;
}

.browse{
  margin-top:14px !important;
}

.brand-copy strong{
  letter-spacing:-.035em !important;
}

.brand-copy em{
  letter-spacing:.02em !important;
}

@media (max-width:760px){
  .hero{
    margin-top:14px !important;
    padding:16px 15px !important;
    border-radius:22px !important;
  }

  .hero-kicker{
    font-size:.58rem !important;
    letter-spacing:.12em !important;
  }

  .hero-sub{
    font-size:.8rem !important;
    line-height:1.58 !important;
  }

  .browse{
    margin-top:12px !important;
  }
}


/* v3: remove intro panel + mobile two-column roster */
.hero{
  display:none !important;
}

.browse{
  margin-top:22px !important;
}

@media (max-width:760px){
  .browse{
    margin-top:12px !important;
  }

  .roster{
    padding-top:14px !important;
  }

  .card-grid{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:10px !important;
  }

  .char-card{
    display:block !important;
    min-height:0 !important;
    border-radius:20px !important;
  }

  .card-img{
    width:100% !important;
    height:auto !important;
    aspect-ratio:1216/704 !important;
  }

  .card-img img{
    width:100% !important;
    height:100% !important;
    object-fit:cover !important;
  }

  .card-body{
    padding:10px 10px 14px !important;
    display:block !important;
  }

  .card-name{
    font-size:.95rem !important;
    line-height:1.16 !important;
    margin:0 !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
  }

  .card-meta{
    margin-top:6px !important;
    font-size:.58rem !important;
    line-height:1.35 !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
  }

  .chips{
    gap:4px !important;
    margin-top:7px !important;
  }

  .chips span{
    font-size:.52rem !important;
    padding:3px 6px !important;
  }

  .chips span:nth-child(n+3){
    display:none !important;
  }
}

@media (max-width:380px){
  .card-grid{
    gap:8px !important;
  }

  .card-body{
    padding:9px 9px 13px !important;
  }

  .card-name{
    font-size:.88rem !important;
  }

  .card-meta{
    font-size:.54rem !important;
  }
}


/* v4: consistent profile modal sizing + lighter mobile rendering */
.profile-card{
  width:min(1060px,calc(100% - 36px)) !important;
  height:auto !important;
  min-height:0 !important;
  max-height:min(780px,calc(100dvh - 36px)) !important;
  grid-template-columns:minmax(0,1fr) minmax(350px,.78fr) !important;
  align-items:stretch !important;
}

.visual-side{
  display:flex !important;
  flex-direction:column !important;
  min-height:0 !important;
}

.image-frame{
  width:100% !important;
  aspect-ratio:1216/704 !important;
  flex:0 0 auto !important;
}

.image-frame img{
  width:100% !important;
  height:100% !important;
  object-fit:contain !important;
  image-rendering:auto !important;
}

.info-side{
  min-height:0 !important;
  max-height:min(780px,calc(100dvh - 36px)) !important;
}

.detail-grid section{
  min-height:0 !important;
}

@media (min-width:761px){
  .profile-card{
    max-width:1060px !important;
  }

  .visual-side{
    justify-content:center !important;
  }

  .info-side{
    display:flex !important;
    flex-direction:column !important;
    justify-content:center !important;
  }
}

@media (max-width:760px){
  .profile-card{
    width:100% !important;
    min-height:0 !important;
    max-height:100dvh !important;
    grid-template-columns:1fr !important;
    overflow:auto !important;
  }

  .visual-side{
    padding:10px !important;
  }

  .image-frame{
    aspect-ratio:1216/704 !important;
    max-height:42svh !important;
    border-radius:18px !important;
  }

  .image-frame img{
    object-fit:contain !important;
  }

  .emotion-tabs{
    margin-top:9px !important;
    gap:6px !important;
  }

  .emotion-tabs button{
    padding:7px 4px !important;
    font-size:.64rem !important;
    border-radius:13px !important;
  }

  .info-side{
    max-height:none !important;
    padding:16px 16px 22px !important;
  }

  .info-side h3{
    font-size:1.72rem !important;
    line-height:1.08 !important;
  }

  .profile-meta{
    font-size:.78rem !important;
    margin-top:7px !important;
  }

  .keyword-line{
    gap:5px !important;
    margin-top:10px !important;
  }

  .keyword-line span{
    font-size:.62rem !important;
    padding:5px 7px !important;
  }

  .detail-grid{
    gap:8px !important;
    margin-top:12px !important;
  }

  .detail-grid section{
    padding:10px 11px !important;
    border-radius:15px !important;
  }

  .detail-grid b{
    font-size:.68rem !important;
    margin-bottom:4px !important;
  }

  .detail-grid p{
    font-size:.78rem !important;
    line-height:1.55 !important;
  }

  .profile-nav{
    margin-top:12px !important;
  }

  .profile-nav button{
    padding:8px 6px !important;
    font-size:.76rem !important;
  }
}

/* prevent some tiny modal images from visually shrinking */
@media (max-width:420px){
  .image-frame{
    max-height:36svh !important;
  }

  .info-side h3{
    font-size:1.55rem !important;
  }
}


/* v5: expanded relationship prose readability */
.detail-grid section:nth-child(2){
  background:linear-gradient(135deg,rgba(255,255,255,.78),rgba(238,248,255,.72)) !important;
}

.detail-grid p{
  text-align:left !important;
}

@media (min-width:761px){
  .detail-grid section:nth-child(2){
    padding:16px 18px !important;
  }
}

@media (max-width:760px){
  .detail-grid section:nth-child(2) p{
    line-height:1.62 !important;
  }
}


/* v6: smoother mobile image switching */
.image-frame img{
  transition:opacity .12s ease;
  image-rendering:auto;
}
@media (max-width:760px){
  .image-frame img{
    will-change:opacity;
    transform:translateZ(0);
  }
}

