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

body{
  font-family:'Pretendard',sans-serif;
  background:#000;
  color:#fff;
  overflow:hidden;
}

.login-page{
  width:100%;
  height:100vh;
  position:relative;
  display:flex;
  justify-content:center;
  align-items:center;
  overflow:hidden;
}

/* 배경 영상 */
.login-bg-video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  z-index:0;

  filter:blur(10px) brightness(.45);
  transform:scale(1.08);
}

.login-page::after{
  content:"";
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.45);
  z-index:1;
}

/* X 버튼 */
.close-login{
  position:fixed;
  top:calc(50% - 370px);
  left:calc(50% + 525px);

  z-index:30;

  background:none;
  border:none;

  color:rgba(255,255,255,.75);
  text-decoration:none;

  font-size:28px;
  font-weight:300;

  transition:.25s;
}

.close-login:hover{
  color:#fff;
  transform:rotate(90deg);
}

/* 카드 */
.login-card{
  position:relative;
  z-index:2;

  width:min(92vw,1050px);

  min-height:680px;
  max-height:90vh;

  display:grid;
  grid-template-columns:.95fr 1.05fr;

  overflow:hidden;

  border-radius:30px;

  background:rgba(255,255,255,.1);

  border:1px solid rgba(255,255,255,.12);

  box-shadow:0 30px 90px rgba(0,0,0,.45);

  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);

  animation:openCard .7s ease both;
}

@keyframes openCard{

  from{
    opacity:0;
    transform:translateY(24px) scale(.97);
  }

  to{
    opacity:1;
    transform:translateY(0) scale(1);
  }

}

/* 왼쪽 */
.login-visual{
  position:relative;

  background:#050505;

  display:flex;
  align-items:center;
  justify-content:center;

  padding:40px;

  overflow:hidden;
}

.login-visual::after{
  content:"";
  position:absolute;
  inset:0;

  background:
    radial-gradient(
      circle at center,
      rgba(255,255,255,.05),
      rgba(0,0,0,.78)
    );

  z-index:1;
}

.login-visual img{
  position:relative;
  z-index:2;

  width:220px;
  max-width:70%;

  height:auto;
  object-fit:contain;

  opacity:.96;

  filter:
    invert(1)
    brightness(2.2)
    drop-shadow(0 18px 42px rgba(255,255,255,.12));
}

.login-visual div{
  display:none;
}

/* 오른쪽 */
.login-content{
  position:relative;

  display:flex;
  align-items:center;
  justify-content:center;

  padding:40px 58px;

  overflow:hidden;
}

.auth-box{
  width:100%;
  max-width:480px;

  display:none;
}

.auth-box.active{
  display:block;
}

.auth-box small{
  display:block;

  font-size:13px;
  font-weight:900;

  color:rgba(255,255,255,.65);

  margin-bottom:12px;
}

.auth-box h1{
  font-size:40px;
  line-height:.95;

  letter-spacing:-.07em;
  font-weight:900;

  margin-bottom:12px;
}

#loginBox h1{
  letter-spacing:-0.035em;
}

.auth-box p{
  font-size:14px;
  line-height:1.7;

  color:rgba(255,255,255,.72);

  margin-bottom:18px;
}

/* input */
.auth-box input,
.auth-box select{
  width:100%;
  height:48px;

  border:none;
  border-radius:16px;

  background:rgba(255,255,255,.13);

  color:#fff;

  padding:0 18px;

  margin-bottom:9px;

  font-size:14px;
  font-weight:700;

  outline:none;

  transition:.2s;
}

.auth-box input::placeholder{
  color:rgba(255,255,255,.45);
}

.auth-box select option{
  color:#111;
}

.auth-box input:focus,
.auth-box select:focus{
  background:rgba(255,255,255,.2);

  box-shadow:
    0 0 0 1px rgba(255,255,255,.35);
}

/* 비밀번호 */
.password-wrap{
  position:relative;
}

.password-wrap input{
  padding-right:52px;
}

.password-wrap button{
  position:absolute;

  right:14px;
  top:23px;

  transform:translateY(-50%);

  border:none;
  background:none;

  color:#fff;

  cursor:pointer;
}

/* 로그인 옵션 */
.auth-row{
  display:flex;
  justify-content:space-between;
  align-items:center;

  gap:18px;

  margin:6px 0 18px;
}

.remember{
  display:flex;
  align-items:center;
  gap:10px;

  white-space:nowrap;

  font-size:12px;
  color:rgba(255,255,255,.7);
}

/* 체크박스 */
.remember input[type="checkbox"]{
  appearance:none;
  -webkit-appearance:none;

  width:20px;
  height:20px;

  min-width:20px;

  border-radius:5px;

  border:1.5px solid rgba(255,255,255,.45);

  background:rgba(255,255,255,.08);

  position:relative;

  cursor:pointer;

  transition:.18s;
}

.remember input[type="checkbox"]:hover{
  border-color:rgba(255,255,255,.7);
  background:rgba(255,255,255,.12);
}

.remember input[type="checkbox"]:checked{
  background:rgba(255,255,255,.08);
  border-color:#fff200;
}

.remember input[type="checkbox"]:checked::before{
  content:none;
}

.remember input[type="checkbox"]:checked::after{
  content:"✓";

  position:absolute;

  left:50%;
  top:50%;

  transform:translate(-50%,-50%);

  color:#fff200;

  font-size:18px;
  font-weight:900;

  line-height:1;
}

.text-btn{
  border:none;
  background:none;

  color:rgba(255,255,255,.7);

  font-size:13px;
  font-weight:800;

  cursor:pointer;

  white-space:nowrap;
}

/* 버튼 */
.main-btn,
.sub-btn,
.admin-toggle{
  width:100%;
  height:48px;

  border:none;
  border-radius:16px;

  font-size:14px;
  font-weight:900;

  cursor:pointer;

  transition:.25s;

  margin-bottom:8px;
}

.main-btn{
  background:#fff;
  color:#111;
}

.sub-btn,
.admin-toggle{
  background:rgba(255,255,255,.08);

  border:1px solid rgba(255,255,255,.12);

  color:#fff;
}

.main-btn:hover,
.sub-btn:hover,
.admin-toggle:hover{
  transform:translateY(-2px);
}

/* 구분 */
.divider{
  text-align:center;
  margin:16px 0;
}

.divider span{
  font-size:12px;
  font-weight:900;

  color:rgba(255,255,255,.35);
}

/* 회원가입 페이지 */
.signup-pages{
  position:relative;

  min-height:315px;

  perspective:1200px;
}

.signup-page{
  display:none;

  animation:pageFlip .42s ease both;
}

.signup-page.active{
  display:block;
}

@keyframes pageFlip{

  from{
    opacity:0;
    transform:rotateY(-10deg) translateX(20px);
  }

  to{
    opacity:1;
    transform:rotateY(0) translateX(0);
  }

}

.signup-nav{
  display:flex;
  gap:8px;
  margin-top:10px;
}


/* 회원가입 화살표 */
.signup-arrow{
  position:absolute;

  top:50%;
  transform:translateY(-50%);

  width:54px;
  height:54px;

  background:none;
  border:none;

  cursor:pointer;

  z-index:30;

  font-size:0;
}

.signup-arrow::before{
  display:block;

  font-size:44px;
  font-weight:200;

  color:rgba(255,255,255,.8);

  line-height:1;

  transition:.22s;
}

.signup-arrow.prev{
  left:-58px;
}

.signup-arrow.next{
  right:-58px;
}

.signup-arrow.prev::before{
  content:"⟨";
}

.signup-arrow.next::before{
  content:"⟩";
}

.signup-arrow:hover::before{
  color:#fff;
}


/* row */
.id-row,
.phone-row,
.birth-row{
  display:grid;

  gap:8px;

  margin-bottom:10px;
}

.id-row{
  grid-template-columns:1fr 92px;
}

.phone-row{
  grid-template-columns:.75fr 1fr 1fr;
}

.birth-row{
  grid-template-columns:1.2fr .8fr .8fr;
}

.id-row input,
.phone-row input,
.birth-row input{
  margin-bottom:0;
}

.id-row button{
  border:none;
  border-radius:16px;

  background:#fff;
  color:#111;

  font-weight:900;

  cursor:pointer;
}

/* 회원가입 1페이지 간격 */
#signupBox[data-page="1"] .id-row{
  margin-bottom:12px;
}

#signupBox[data-page="1"] .password-wrap{
  margin-bottom:6px;
}

#signupBox[data-page="1"] .password-guide{
  margin-top:2px;
  margin-bottom:16px;
}

#signupBox[data-page="1"] #passwordStrength{
  margin-bottom:18px;
}

#signupBox[data-page="1"] #passwordMatch{
  margin-top:2px;
  margin-bottom:0;
}

/* 안내문 */
.password-guide,
.password-msg,
.id-check-msg{
  min-height:16px;

  margin:-2px 0 8px;

  font-size:12px;
  font-weight:800;
}

.password-msg.safe,
.id-check-msg.success{
  color:#fff200;
}

.password-msg.unsafe,
.id-check-msg.error{
  color:#ff6565;
}

/* 회원 여부 */
.member-check{
  font-size:13px;
  color:rgba(255,255,255,.78);

  margin:4px 0 14px;
}

.member-check p{
  font-weight:900;
  margin-bottom:10px;
}

.member-check label{
  display:inline-flex;
  align-items:center;
  gap:8px;

  margin-right:18px;

  cursor:pointer;

  font-weight:800;
}

/* 라디오 */
.member-check input[type="radio"]{
  appearance:none;
  -webkit-appearance:none;

  width:18px;
  height:18px;

  margin:0;

  border-radius:50%;

  border:1.5px solid rgba(255,255,255,.5);

  background:rgba(255,255,255,.1);

  cursor:pointer;
}

.member-check input[type="radio"]:checked{
  border:5px solid #fff;
  background:#111;
}

/* 약관 */
.terms-box{
  max-height:82px;

  overflow-y:auto;

  padding:12px;

  border-radius:16px;

  background:rgba(255,255,255,.08);

  margin:10px 0 12px;
}

.terms-box strong{
  display:block;

  font-size:13px;

  margin-bottom:8px;
}

.terms-box p{
  font-size:12px;
  margin:0;
}

.agree-wrap{
  margin:10px 0 14px;
}

.agree-wrap label{
  display:flex;
  align-items:center;
  gap:8px;

  font-size:12px;

  color:rgba(255,255,255,.72);

  margin-bottom:10px;
}

.agree-wrap input[type="checkbox"]{
  appearance:none;
  -webkit-appearance:none;

  width:18px;
  height:18px;

  border-radius:5px;

  border:1.5px solid rgba(255,255,255,.5);

  background:rgba(255,255,255,.1);

  cursor:pointer;
}

.agree-wrap input[type="checkbox"]:checked{
  background:#fff;
  border-color:#fff;
}

.agree-wrap input[type="checkbox"]:checked::after{
  content:"✓";

  display:block;

  color:#111;

  font-size:14px;
  font-weight:900;

  text-align:center;
  line-height:16px;
}

/* 관리자 */
.admin-code-box{
  display:none;
}



/* 모바일 */
@media(max-width:768px){

  html,
  body{
    width:100%;
    min-height:100vh;
    overflow-x:hidden;
  }

  body{
    overflow:auto;
    padding-bottom:72px;
  }

  .close-login{
    top:20px;
    right:20px;
    left:auto;
  }

  .login-page{
    width:100%;
    min-height:calc(100vh - 72px);
    height:auto;
  }

  .login-card{
    width:100%;
    min-height:calc(100vh - 72px);
    height:auto;
    max-height:none;

    grid-template-columns:1fr;
    border-radius:0;
  }

  .login-visual{
    display:none;
  }

  .login-content{
    min-height:calc(100vh - 72px);
    height:auto;

    padding:70px 24px 34px;
  }

  .signup-pages{
    min-height:330px;
  }

  .signup-arrow{
    display:none;
  }

  .mobile-bottom-nav{
    position:fixed;
    left:0;
    right:0;
    bottom:0;

    width:100%;
    height:72px;

    display:grid;
    grid-template-columns:repeat(4,1fr);

    background:#0b0b0c;
    border-top:1px solid rgba(255,255,255,.06);
    z-index:999999;

    box-shadow:0 -14px 40px rgba(0,0,0,.45);
  }

  .bottom-nav-item{
    position:relative;

    display:grid;
    grid-template-rows:24px 14px;
    align-content:center;
    justify-items:center;
    row-gap:5px;

    color:rgba(255,255,255,.52);
    text-decoration:none;

    font-family:'Pretendard', Arial, sans-serif;
    font-size:10px;
    font-weight:800;
    letter-spacing:-0.03em;
  }

  .bottom-icon{
    width:24px;
    height:24px;
    display:flex;
    align-items:center;
    justify-content:center;
  }

  .bottom-icon svg{
    width:19px;
    height:19px;

    fill:none;
    stroke:currentColor;
    stroke-width:1.85;
    stroke-linecap:round;
    stroke-linejoin:round;
  }

  .bottom-label{
    height:14px;
    line-height:14px;
    font-size:10px;
    font-weight:800;
  }

  .bottom-nav-item.active{
    color:#fff200;
  }
}



@media(min-width:769px){

  .mobile-bottom-nav{
    display:none;
  }

}

/* ===== 회원가입 진행바 ===== */

.signup-progress{
  margin-bottom:40px;
  margin-top:10px;
}
.progress-bar{
  width:100%;
  height:6px;

  background:rgba(255,255,255,.08);

  border-radius:999px;

  overflow:hidden;

  margin-bottom:14px;
}

.progress-fill{
  width:25%;
  height:100%;

  background:#fff200;

  border-radius:999px;

  transition:.35s;
}

/* ===== 회원여부 카드 ===== */

.member-cards{
  display:flex;
  flex-direction:column;
  gap:14px;
  margin-top:24px;
}

.member-card{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;

  height:68px;

  border:1px solid rgba(255,255,255,.15);
  border-radius:18px;

  background:rgba(255,255,255,.04);

  cursor:pointer;

  transition:.25s;
}

.member-card:hover{
  border-color:#fff200;
  transform:translateY(-2px);
}

.member-card input{
  display:none;
}

.member-card span{
  font-size:18px;
  font-weight:800;
  color:#fff;
}

.member-card:has(input:checked){
  border-color:#fff200;
  background:rgba(255,242,0,.12);
  box-shadow:0 0 0 1px #fff200 inset;
}

.member-card:has(input:checked) span{
  color:#fff200;
}

.login-back-text{
  display:block;
  margin:14px 0 0 auto;

  border:none;
  background:none;

  color:rgba(255,255,255,.6);

  font-size:13px;
  font-weight:800;

  cursor:pointer;
}

.login-back-text:hover{
  color:#fff200;
}


/* ===== 관심분야 선택 ===== */

.interest-start h2{
  font-size:28px;
  line-height:1.2;
  font-weight:900;
  letter-spacing:-0.06em;
  margin-bottom:10px;
}

.interest-start p{
  color:rgba(255,255,255,.55);
  font-size:13px;
  font-weight:700;
  margin-bottom:22px;
}

.interest-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
}

.interest-card{
  height:126px;
  border:1px solid rgba(255,255,255,.14);
  border-radius:22px;
  background:rgba(255,255,255,.045);

  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:12px;

  cursor:pointer;
  transition:.25s;
}

.interest-card input{
  display:none;
}

.interest-card span{
  font-size:28px;
}

.interest-card strong{
  color:#fff;
  font-size:15px;
  font-weight:900;
}

.interest-card:hover{
  transform:translateY(-3px);
  border-color:#fff200;
}

.interest-card:has(input:checked){
  border-color:#fff200;
  background:rgba(255,242,0,.12);
  box-shadow:0 0 0 1px #fff200 inset;
}

.interest-card:has(input:checked) strong{
  color:#fff200;
}

@media(max-width:768px){
  .interest-card{
    height:112px;
  }

  .interest-start h2{
    font-size:25px;
  }
}


.info-start h2{
  font-size:28px;
  line-height:1.2;
  font-weight:900;
  margin-bottom:10px;
}

.info-start p{
  color:rgba(255,255,255,.55);
  font-size:13px;
  margin-bottom:20px;
}

#loginBox .login-back-text{
  display:none;
}

#loginBox .sub-btn{
  position:static;
}


#signupBox .signup-progress{
  margin-top:0;
  margin-bottom:54px;
}

#signupBox .signup-pages{
  min-height:360px;
}

#signupBox[data-page="3"] .info-start{
  margin-top:0;
}


.verify-btn{
  width:100%;
  height:56px;

  border:none;
  border-radius:16px;

  background:#fff200;
  color:#111;

  font-size:14px;
  font-weight:900;

  cursor:pointer;

  margin-top:12px;
}


#verifyCode,
#verifyMsg{
  display:none;
}


.verify-check-btn{
  display:none;

  width:100%;
  height:48px;

  margin-top:10px;

  border:1px solid rgba(255,255,255,.18);
  border-radius:14px;

  background:rgba(255,255,255,.08);
  color:#fff;

  font-size:14px;
  font-weight:900;

  cursor:pointer;
}

.verify-check-btn:hover{
  border-color:#fff200;
  color:#fff200;
}

.account-start h2{
  font-size:28px;
  line-height:1.2;
  font-weight:900;
  margin-bottom:10px;
}

.account-start p{
  color:rgba(255,255,255,.55);
  font-size:13px;
  margin-bottom:18px;
}


#recaptcha-container{
  display:none;
}

.terms-simple{
  margin:12px 0 14px;
}

.terms-simple label{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:8px;

  font-size:12px;
  font-weight:700;
  color:rgba(255,255,255,.72);
}

.terms-simple input[type="checkbox"]{
  width:16px;
  height:16px;
  margin:0;
}

.terms-simple details{
  margin-top:8px;
  font-size:12px;
  color:rgba(255,255,255,.55);
  line-height:1.6;
}

.terms-simple summary{
  cursor:pointer;
  color:#fff200;
  font-weight:900;
  margin-bottom:8px;
}

/* ===== 약관 디자인 ===== */

.agree-card{
  display:block;
  cursor:pointer;
  margin:20px 0;
}

.agree-card input{
  display:none;
}

.agree-card-inner{
  display:flex;
  align-items:center;
  gap:16px;

  padding:18px;

  border-radius:20px;

  background:rgba(255,255,255,.05);
  border:1px solid rgba(255,255,255,.08);

  transition:.25s;
}

.agree-card:hover .agree-card-inner{
  border-color:#fff200;
}

.agree-check{
  width:34px;
  height:34px;

  border-radius:10px;

  display:flex;
  align-items:center;
  justify-content:center;

  background:rgba(255,255,255,.08);

  color:#888;

  font-size:18px;
  font-weight:900;

  flex-shrink:0;
}

.agree-card input:checked + .agree-card-inner{
  border-color:#fff200;
  background:rgba(255,242,0,.08);
}

.agree-card input:checked + .agree-card-inner .agree-check{
  background:#fff200;
  color:#000;
}

.agree-card strong{
  display:block;

  font-size:18px;
  font-weight:900;

  color:#fff;

  margin-bottom:3px;
}

.agree-card p{
  margin:0;

  color:rgba(255,255,255,.5);

  font-size:12px;
}

.terms-detail{
  margin-bottom:12px;
}

.terms-detail summary{
  cursor:pointer;

  padding:12px 0;

  color:#fff;

  font-size:15px;
  font-weight:900;
}

.terms-detail summary:hover{
  color:#fff200;
}

.terms-box{
  max-height:120px;
  overflow-y:auto;

  padding:14px;

  border-radius:16px;

  background:rgba(255,255,255,.04);

  color:rgba(255,255,255,.6);

  font-size:12px;
  line-height:1.7;
}

.terms-box{
  max-height:115px;
  overflow-y:auto;

  padding:14px;
  margin-top:10px;

  border-radius:16px;
  background:rgba(255,255,255,.055);

  color:rgba(255,255,255,.65);
  font-size:12px;
  line-height:1.75;
}

.terms-box::-webkit-scrollbar{
  width:5px;
}

.terms-box::-webkit-scrollbar-thumb{
  background:#fff200;
  border-radius:999px;
}

.terms-box::-webkit-scrollbar-track{
  background:rgba(255,255,255,.08);
}

.terms-start h2{
  font-size:32px;
  font-weight:900;
  margin-bottom:24px;
}

.agree-card-inner{
  display:flex;
  align-items:center;
  gap:16px;
  padding:18px;
  border-radius:18px;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.12);
}

.terms-title{
  margin:18px 0 8px;
  font-size:15px;
  font-weight:900;
  color:#fff;
}

.terms-title span{
  color:#fff200;
}

.terms-box{
  max-height:105px;
  overflow-y:auto;
  padding:14px;
  border-radius:16px;
  background:rgba(255,255,255,.055);
  color:rgba(255,255,255,.65);
  font-size:12px;
  line-height:1.75;
}

.terms-box::-webkit-scrollbar{
  width:5px;
}

.terms-box::-webkit-scrollbar-thumb{
  background:#fff200;
  border-radius:999px;
}

#signupBox .signup-real-btn{
  display:none;
}

#signupBox[data-page="6"] .signup-real-btn{
  display:block;
  margin-top:14px;
}

/* ===== unified auth typography ===== */
.login-page,
.login-page button,
.login-page input,
.login-page select{
  font-family:'Pretendard',Arial,sans-serif;
  letter-spacing:0;
}

.auth-box h1,
.login-visual h2,
.terms-start h2,
.interest-start h2,
.info-start h2,
.account-start h2{
  font-size:34px !important;
  font-weight:800 !important;
  line-height:1.14 !important;
  letter-spacing:0 !important;
}

.auth-box p,
.interest-start p,
.info-start p,
.account-start p,
.member-check p,
.agree-card p{
  font-size:15px !important;
  font-weight:600 !important;
  line-height:1.6 !important;
  letter-spacing:0 !important;
  word-break:keep-all;
}

.auth-box small,
.login-visual small,
.terms-title,
.remember,
.text-btn,
.terms-box{
  font-size:12px !important;
  font-weight:700 !important;
  line-height:1.45 !important;
  letter-spacing:0 !important;
}

.auth-box input,
.auth-box select,
.main-btn,
.sub-btn,
.signup-real-btn,
.signup-arrow{
  font-size:14px !important;
  font-weight:800 !important;
  line-height:1.2 !important;
  letter-spacing:0 !important;
}

@media(max-width:768px){
  .auth-box h1,
  .login-visual h2,
  .terms-start h2,
  .interest-start h2,
  .info-start h2,
  .account-start h2{
    font-size:28px !important;
  }

  .auth-box p,
  .interest-start p,
  .info-start p,
  .account-start p,
  .member-check p,
  .agree-card p{
    font-size:14px !important;
  }
}
