/* ============================================================
   개월드(GaeWorld) — 공통 디자인 시스템
   모든 페이지 공유. 페이지별 무드색은 <body class="theme-xxx"> 로 :root 변수만 덮어쓴다.
   가나디(기본) ↔ 개모드(body[data-mode="gae"]) 두 팔레트를 CSS 변수로 스왑.
   ============================================================ */

:root{
  --r:24px;
  --maxw:720px;

  /* 가나디(기본) 공통 팔레트 — 페이지 테마에서 일부 덮어씀 */
  --bg1:#1c1530; --bg2:#271c43; --bg3:#3a2a5e;
  --ink:#f6efe4; --muted:#bcabe0;
  --accent:#ff9eb5; --accent2:#f4c95d;
  --card-bg:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02));
  --card-bd:rgba(244,201,93,.22);
  --shadow:0 24px 60px -30px rgba(0,0,0,.7);
  --disp:'Gowun Batang',serif;
  --body:'Gowun Dodum',sans-serif;
  --hand:'Gamja Flower',cursive;
  --rot:0deg;
}

/* 개모드(병맛·엽기) 공통 스킨 — 전 페이지 동일 */
body[data-mode="gae"]{
  --bg1:#fff3c4; --bg2:#ffe48a; --bg3:#ffd23f;
  --ink:#161616; --muted:#5a4a12;
  --accent:#ff2e9a; --accent2:#1f1f1f;
  --card-bg:#ffffff;
  --card-bd:#161616;
  --shadow:7px 7px 0 #161616;
  --disp:'Black Han Sans',sans-serif;
  --body:'Jua',sans-serif;
  --hand:'Jua',sans-serif;
}

/* ============ 리셋 / 기본 ============ */
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;color:var(--ink);font-family:var(--body);
  background:
    radial-gradient(900px 600px at 78% -8%, rgba(255,158,181,.16), transparent 60%),
    radial-gradient(700px 700px at 8% 108%, rgba(244,201,93,.10), transparent 60%),
    linear-gradient(160deg,var(--bg1) 0%,var(--bg2) 55%,var(--bg3) 100%);
  min-height:100vh;overflow-x:hidden;
  transition:background .5s ease,color .35s ease;
}
body[data-mode="gae"]{
  background:
    radial-gradient(8px 8px at 20% 30%, rgba(0,0,0,.06) 50%, transparent 51%) 0 0/34px 34px,
    linear-gradient(160deg,var(--bg1),var(--bg2) 60%,var(--bg3));
}

/* 모드 전환 직전 깜빡임 방지: <html class="no-anim"> 동안 트랜지션 차단 */
html.no-anim, html.no-anim *{transition:none!important;}

.wrap{position:relative;z-index:1;max-width:var(--maxw);margin:0 auto;padding:0 22px 90px;}

/* ============ 상단 바 ============ */
.topbar{
  position:sticky;top:0;z-index:20;
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 22px;max-width:var(--maxw);margin:0 auto;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
.logo{display:flex;align-items:center;gap:9px;font-family:var(--disp);font-size:1.5rem;
  letter-spacing:-.02em;cursor:pointer;color:var(--ink);text-decoration:none;}
.logo .gae{color:var(--accent);}
body[data-mode="gae"] .logo{ -webkit-text-stroke:0; }
.logomark{flex:0 0 auto;transition:transform .4s ease;}
.logomark .badge{fill:none;stroke:var(--accent2);stroke-width:2.4;}
.logomark .ear{fill:var(--accent2);}
.logomark .eye{fill:var(--accent);}
.logomark .mouth{fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round;}
.logomark .xeye{stroke:var(--ink);stroke-width:2;stroke-linecap:round;fill:none;}
.logomark .tongue{fill:var(--accent);}
.logomark .face-gae{display:none;}
body[data-mode="gae"] .logomark .face-gana{display:none;}
body[data-mode="gae"] .logomark .face-gae{display:block;}
body[data-mode="gae"] .logomark{transform:rotate(-7deg);}

/* 상단 우측 (회원 + 토글) */
.top-right{display:flex;align-items:center;gap:10px;}

/* 코 벌렁 알림 (안 읽은 쪽지) */
.nose-link{display:none;position:relative;font-size:1.25rem;text-decoration:none;line-height:1;}
.nose-link.on{display:inline-block;animation:sniff .9s ease-in-out infinite;}
.nose-link.on::after{content:attr(data-count);position:absolute;top:-6px;right:-9px;
  background:var(--accent);color:#fff;font-size:.58rem;font-weight:700;
  border-radius:999px;padding:1px 5px;line-height:1.4;}
body[data-mode="gae"] .nose-link.on::after{border:1.5px solid #161616;}
@keyframes sniff{
  0%,100%{transform:scale(1);}
  20%{transform:scale(1.22) rotate(-7deg);}
  40%{transform:scale(.96);}
  60%{transform:scale(1.22) rotate(7deg);}
  80%{transform:scale(1);}
}
@media(prefers-reduced-motion:reduce){.nose-link.on{animation:none;}}
.member-link{font-size:.82rem;color:var(--muted);text-decoration:none;
  padding:7px 11px;border-radius:999px;border:1px solid var(--card-bd);white-space:nowrap;}
.member-link:hover{color:var(--accent);border-color:var(--accent);}
body[data-mode="gae"] .member-link{background:#fff;border:2px solid #161616;color:#161616;box-shadow:3px 3px 0 #161616;}

/* 모드 토글 */
.toggle{
  display:flex;align-items:center;gap:0;border-radius:999px;padding:4px;
  background:rgba(255,255,255,.08);border:1px solid var(--card-bd);
}
body[data-mode="gae"] .toggle{background:#fff;border:2px solid #161616;box-shadow:3px 3px 0 #161616;}
.toggle button{
  border:none;background:transparent;cursor:pointer;color:var(--muted);
  font-family:var(--body);font-size:.86rem;padding:7px 13px;border-radius:999px;
  transition:all .2s;
}
.toggle button.on{background:var(--accent);color:#2b1530;font-weight:700;}
body[data-mode="gae"] .toggle button.on{color:#fff;background:var(--accent);}

/* ============ 공통 카드/버튼/입력 primitive ============ */
.card{
  background:var(--card-bg);border:1px solid var(--card-bd);border-radius:var(--r);
  padding:22px;box-shadow:var(--shadow);
}
body[data-mode="gae"] .card{border:2px solid #161616;background:#fff;}

.btn{
  border:none;cursor:pointer;font-family:var(--body);font-weight:700;font-size:1rem;
  padding:13px 18px;border-radius:13px;color:#2b1530;background:var(--accent);
  text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;
}
body[data-mode="gae"] .btn{background:#161616;color:#fff;border:2px solid #161616;border-radius:9px;}
.btn:disabled,.btn.soon{background:transparent;color:var(--muted);border:1px dashed var(--card-bd);cursor:default;}
body[data-mode="gae"] .btn:disabled,body[data-mode="gae"] .btn.soon{background:#fff;color:#161616;border:2px solid #161616;}

.field{
  width:100%;padding:10px 13px;border-radius:11px;background:rgba(255,255,255,.06);
  border:1px solid var(--card-bd);color:var(--ink);font-family:inherit;font-size:.95rem;
}
body[data-mode="gae"] .field{background:#fff;border:2px solid #161616;}
.field:focus{outline:none;border-color:var(--accent);}

/* ============ 푸터 ============ */
.foot{margin-top:64px;text-align:center;color:var(--muted);font-size:.82rem;line-height:1.9;}
.foot .links a{color:var(--muted);text-decoration:none;margin:0 8px;border-bottom:1px solid var(--card-bd);}
.foot .disc{margin-top:14px;font-size:.76rem;opacity:.8;max-width:30em;margin-left:auto;margin-right:auto;}
body[data-mode="gae"] .foot{color:#5a4a12;}

/* ============ 문서형 페이지(소개·약관·문의·방침) ============ */
.doc{padding:18px 0 10px;line-height:1.8;}
.doc .eyebrow{font-family:var(--hand);color:var(--accent2);font-size:1.2rem;margin:0 0 4px;}
body[data-mode="gae"] .doc .eyebrow{color:#161616;}
.doc h1{font-family:var(--disp);font-size:clamp(1.8rem,6vw,2.4rem);margin:0 0 18px;letter-spacing:-.01em;}
.doc h1 .pad{color:var(--accent);}
.doc h2{font-family:var(--disp);font-size:1.25rem;margin:30px 0 10px;}
.doc h3{font-size:1.02rem;margin:18px 0 6px;color:var(--accent2);}
body[data-mode="gae"] .doc h3{color:#161616;}
.doc p,.doc li{color:var(--ink);font-size:.96rem;}
.doc p{margin:8px 0;}
.doc ul,.doc ol{padding-left:1.2em;margin:8px 0;}
.doc li{margin:5px 0;}
.doc a{color:var(--accent);}
.doc .lead{color:var(--muted);font-size:1.02rem;line-height:1.8;}
.doc .note{font-size:.84rem;color:var(--muted);margin-top:8px;}
.doc .panel{margin:14px 0;padding:16px 18px;border-radius:16px;background:var(--card-bg);border:1px solid var(--card-bd);box-shadow:var(--shadow);}
body[data-mode="gae"] .doc .panel{background:#fff;border:2px solid #161616;}
.doc .updated{font-size:.8rem;color:var(--muted);margin-top:6px;}

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