:root{
  --ink:#101623;          /* 밤하늘 먹색 */
  --ink-2:#1a2233;
  --hanji:#f4eddc;        /* 한지 */
  --hanji-2:#ece2cb;
  --gold:#c9a24b;
  --red:#b4443a;          /* 오방 적 */
  --line:rgba(244,237,220,.14);
  --wood:#4e8a63; --fire:#c05040; --earth:#c49b4a; --metal:#a8b2bd; --water:#5b82a6;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--ink);color:var(--hanji);font-family:'Karla',sans-serif;line-height:1.6;overflow-x:hidden}
.serif{font-family:'Fraunces',serif}
.kr{font-family:'Noto Serif KR',serif}

/* 별 배경 */
#sky{position:fixed;inset:0;pointer-events:none;z-index:0}
.wrap{position:relative;z-index:1;max-width:680px;margin:0 auto;padding:0 22px}

/* ── 상단 고정 네비게이션 바 (2026-07-17, 구 스크롤형 feat-nav 대체) ── */
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;
  padding:10px 16px;background:rgba(16,22,35,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.topbar .brand{font-size:19px;color:var(--gold);text-decoration:none;letter-spacing:.02em;margin-right:2px}
.topnav{display:flex;flex-wrap:wrap;gap:2px;flex:1;min-width:0}
.topnav a{color:rgba(244,237,220,.62);text-decoration:none;font-size:12px;font-weight:700;letter-spacing:.03em;
  padding:6px 9px;border-radius:99px;white-space:nowrap}
.topnav a.active{background:rgba(201,162,75,.16);color:var(--gold)}
.topnav a:hover{color:var(--gold)}
.topnav .nav-edit{border:1px solid var(--line)}
.lang-switch{display:flex;gap:2px;background:rgba(244,237,220,.05);border:1px solid var(--line);border-radius:99px;padding:3px;margin-left:auto}
.lang-switch button{background:none;border:none;color:rgba(244,237,220,.5);font-size:10.5px;font-weight:700;
  padding:5px 8px;border-radius:99px;cursor:pointer;font-family:'Karla',sans-serif}
.lang-switch button.active{background:var(--gold);color:var(--ink)}

/* ── Hero ── */
header{padding:72px 0 44px;text-align:center}
.moon{width:74px;height:74px;border-radius:50%;margin:0 auto 26px;position:relative;
  background:radial-gradient(circle at 38% 35%, #fdf6e3, #e8d9ae 60%, #cdb677);
  box-shadow:0 0 46px rgba(233,214,160,.35), 0 0 120px rgba(233,214,160,.12);
  animation:float 7s ease-in-out infinite}
h1{font-family:'Fraunces',serif;font-weight:400;font-size:clamp(30px,6vw,46px);letter-spacing:.01em;line-height:1.22;text-wrap:balance}
h1 em{font-style:italic;color:var(--gold)}
/* ── redesign 감사 수리 (2026-07-16): 접근성 포커스 링 + pressed 상태 ── */
a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{
  outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}
a.cta:active,button.go:active,.hub:active,.page-back:active{transform:translateY(0) scale(.985)}
.sub{margin-top:18px;color:rgba(244,237,220,.72);font-size:16.5px;max-width:440px;margin-left:auto;margin-right:auto}
.sub b{color:var(--hanji);font-weight:700}
.el-dots{display:flex;justify-content:center;gap:22px;margin:36px 0 8px;font-size:11px;font-weight:700;
  letter-spacing:.18em;text-transform:uppercase;color:rgba(244,237,220,.45)}
.el-dots span::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--c);
  margin-right:7px;vertical-align:1px}

/* 복코(Bokko) 마스코트 인사 — 말풍선(편지) 스타일. 배경 제거된 PNG라 뒤에 깔린 별배경과 자연스럽게 어울림 */
.bokko-greet{display:flex;align-items:flex-end;max-width:480px;margin:0 auto 40px;padding:0 22px}
.bokko-img{width:88px;height:88px;object-fit:contain;flex:none;margin-right:-10px;position:relative;z-index:2;
  filter:drop-shadow(0 6px 12px rgba(0,0,0,.4))}
.bokko-bubble{position:relative;flex:1;background:var(--hanji);border-radius:4px 16px 16px 16px;
  padding:14px 18px 10px;box-shadow:0 6px 18px rgba(0,0,0,.3)}
.bokko-bubble p{font-family:'Fraunces',serif;font-style:italic;font-size:14px;color:#4d4230;line-height:1.42}
.bokko-sig{display:block;text-align:right;font-family:'Fraunces',serif;font-size:12px;color:#8a7a58;margin-top:4px}
@media(max-width:480px){.bokko-greet{margin-left:22px;margin-right:22px}}

/* ── Form ── */
.card{background:linear-gradient(175deg,var(--hanji),var(--hanji-2));color:#241d12;border-radius:6px;
  padding:34px 30px;box-shadow:0 24px 60px rgba(0,0,0,.45);position:relative}
.card::before{content:"";position:absolute;inset:9px;border:1px solid rgba(36,29,18,.16);border-radius:3px;pointer-events:none}
.card h2{font-family:'Fraunces',serif;font-weight:500;font-size:21px;margin-bottom:4px}
.card .hint{font-size:13.5px;color:#6b5e46;margin-bottom:22px}
label{display:block;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6b5e46;margin:16px 0 7px}
input,select{width:100%;padding:13px 14px;border:1.5px solid #c9bda0;border-radius:4px;background:#faf6ea;
  font-family:'Karla',sans-serif;font-size:16px;color:#241d12}
input:focus,select:focus{outline:none;border-color:var(--gold)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.date-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.field-hint{font-size:12px;color:#8a7a58;margin-top:7px;line-height:1.5}
.check{display:flex;align-items:center;gap:9px;margin-top:14px;font-size:14px;color:#4d4230}
.check input{width:auto}
.req{color:#b4443a;font-size:13px}
.tsep{font-weight:700;font-size:17px;color:#6b5e46}
input.invalid,select.invalid{border-color:#b4443a;background:#fbeeec}
.form-err{display:none;margin-top:14px;padding:11px 14px;border-radius:4px;font-size:13.5px;
  color:#8c3129;background:rgba(180,68,58,.1);border:1px solid rgba(180,68,58,.4)}
.form-err.on{display:block}
button.go{width:100%;margin-top:26px;padding:17px;border:none;border-radius:4px;cursor:pointer;
  background:var(--ink);color:var(--hanji);font-family:'Fraunces',serif;font-size:18px;letter-spacing:.04em;
  transition:transform .15s ease, box-shadow .15s ease}
button.go:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(16,22,35,.4)}

/* ── Result ── */
#result{display:none;padding-bottom:40px}
.section-label{display:flex;align-items:center;gap:14px;margin:54px 0 20px;color:rgba(244,237,220,.5);
  font-size:11.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase}
.section-label::before,.section-label::after{content:"";height:1px;background:var(--line);flex:1}

.pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.pillar{background:var(--ink-2);border:1px solid var(--line);border-radius:6px;padding:18px 6px 14px;text-align:center}
.pillar .p-name{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:rgba(244,237,220,.45);margin-bottom:10px}
.pillar .p-hanja{font-family:'Noto Serif KR',serif;font-weight:600;font-size:30px;line-height:1.2}
.hj{font-family:'Noto Serif KR',serif;font-weight:600}
.pillar .p-sub{font-size:10px;letter-spacing:.06em;color:rgba(244,237,220,.55);margin:3px 0 10px}
.pillar.dim{opacity:.35}
.sb-row{display:grid;grid-template-columns:64px 1fr 1fr;gap:12px;padding:13px 0;border-bottom:1px solid var(--line);align-items:center}
.sb-row:last-child{border-bottom:none}
.sb-pill{font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:rgba(244,237,220,.5)}
.sb-name{font-family:'Fraunces',serif;font-size:16.5px}
.sb-desc{font-size:12px;color:rgba(244,237,220,.55)}

/* 캐릭터 히어로 */
.master{background:linear-gradient(175deg,var(--hanji),var(--hanji-2));color:#241d12;border-radius:6px;
  padding:40px 30px 34px;text-align:center;box-shadow:0 24px 60px rgba(0,0,0,.45);position:relative;
  overflow:hidden} /* 장식용 hero-aura가 카드 밖으로 새며 360px에서 가로 오버플로 유발 → 클립 (2026-07-17) */
/* 공유 카드처럼 — 금색 이중 액자 프레임 */
.master::before{content:"";position:absolute;inset:8px;border:1.5px solid rgba(201,162,75,.5);border-radius:4px;pointer-events:none}
.master::after{content:"";position:absolute;inset:13px;border:1px solid rgba(201,162,75,.22);border-radius:2px;pointer-events:none}
/* 일간 한자 도장 (공유 카드의 우상단 낙관과 동일) */
.hero-seal{position:absolute;top:16px;right:16px;width:46px;height:46px;border-radius:9px;z-index:4;
  background:#b4443a;color:#f4eddc;font-family:'Noto Serif KR',serif;font-weight:600;font-size:27px;
  display:flex;align-items:center;justify-content:center;box-shadow:0 3px 9px rgba(0,0,0,.28)}
/* 히어로 장면 — 캐릭터 + 띠 동물 컷아웃을 한 오라 안에 겹쳐서 */
.hero-scene{position:relative;width:288px;height:250px;margin:0 auto 2px}
.hero-aura{position:absolute;left:50%;top:45%;width:206px;height:206px;transform:translate(-50%,-50%);
  border-radius:50%;filter:blur(30px);opacity:.42;animation:pulse 5.5s ease-in-out infinite}
/* 공유 카드와 동일 배치: 캐릭터 중앙, 띠 동물은 캐릭터×0.56 크기로 좌하단에 겹쳐(앞) */
.hero-char{position:absolute;left:50%;margin-left:-111px;top:2px;width:222px;height:222px;
  animation:float 5.5s ease-in-out infinite} /* margin으로 중앙정렬 — float 애니가 transform을 덮어쓰므로 translateX 불가 */
.hero-char svg,.hero-char img{width:100%;height:100%;object-fit:contain}
.zodiac-seal{position:absolute;left:2px;bottom:9px;width:124px;height:124px;z-index:3;
  display:flex;align-items:flex-end;justify-content:center;
  filter:drop-shadow(0 7px 9px rgba(0,0,0,.22))}
.zodiac-seal .zs-emoji{font-size:62px;line-height:1}
.zodiac-seal img{width:100%;height:100%;object-fit:contain}
.m-eyebrow{font-size:11.5px;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:#8a7a58;margin-top:10px}
.m-title{font-family:'Fraunces',serif;font-size:clamp(27px,5.4vw,36px);font-weight:500;margin:6px 0 2px}
.m-hanja{font-family:'Noto Serif KR',serif;font-size:15px;color:#6b5e46}
.m-essence{font-family:'Fraunces',serif;font-style:italic;font-size:17px;color:#4d4230;max-width:420px;margin:16px auto 0}
.traits{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:22px}
.trait{font-size:13px;font-weight:700;padding:7px 14px;border-radius:99px;border:1.5px solid currentColor}
.bokko-note{display:flex;align-items:center;gap:10px;max-width:420px;margin:22px auto 0;padding:10px 14px;
  background:rgba(138,109,47,.08);border-radius:14px;text-align:left}
.bokko-note img{width:34px;height:34px;object-fit:contain;flex:none}
.bokko-note p{font-family:'Fraunces',serif;font-style:italic;font-size:13.5px;color:#4d4230;line-height:1.4}
.bokko-note b{font-style:normal;font-family:'Karla',sans-serif;font-weight:700;color:#8a6d2f;margin-right:4px}

/* 오행 밸런스 */
.elements{display:flex;flex-direction:column;gap:12px}
.el-row{display:grid;grid-template-columns:96px 1fr 30px;align-items:center;gap:14px}
.el-name{font-size:13.5px;font-weight:700;letter-spacing:.04em}
.el-name .kr{font-weight:400;color:rgba(244,237,220,.5);margin-left:6px;font-size:12.5px}
.el-track{height:9px;background:var(--ink-2);border-radius:99px;overflow:hidden;border:1px solid var(--line)}
.el-fill{height:100%;border-radius:99px;width:0;transition:width 1.2s cubic-bezier(.2,.8,.2,1)}
.el-count{font-size:13px;color:rgba(244,237,220,.6);text-align:right}

/* 리딩 */
.reading{background:var(--ink-2);border:1px solid var(--line);border-radius:6px;padding:30px 28px}
.reading h3{font-family:'Fraunces',serif;font-weight:500;font-size:17px;color:var(--gold);margin-bottom:9px}
.reading p{color:rgba(244,237,220,.85);font-size:15.5px}
.reading + .reading{margin-top:14px}
.quote{border-left:2px solid var(--gold);padding-left:18px;font-family:'Fraunces',serif;font-style:italic;
  font-size:18px;color:var(--hanji);margin:30px 4px}

/* 공유 */
.share-zone{text-align:center;margin-top:8px}
#shareCanvas,canvas.mcv{width:100%;max-width:340px;border-radius:8px;box-shadow:0 24px 60px rgba(0,0,0,.5);margin-bottom:18px}
canvas.mcv{display:block;margin:14px auto 4px}
.btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.btn2{padding:13px 26px;border-radius:4px;border:1.5px solid var(--gold);background:transparent;color:var(--gold);
  font-family:'Karla',sans-serif;font-weight:700;font-size:14.5px;cursor:pointer;letter-spacing:.03em}
.btn2.solid{background:var(--gold);color:var(--ink)}
.btn2:hover{filter:brightness(1.1)}
.btn2:disabled{opacity:.5;cursor:default}
.photo-swap{text-align:center;margin:14px 0 4px;display:flex;flex-direction:column;align-items:center;gap:6px}
.photo-swap .btn2{padding:9px 18px;font-size:12.5px}
.photo-swap span{font-size:12px;color:#8a7a58;font-style:italic}
/* 유료 게이팅 — 챕터별 티저(첫 문장 공개 + 나머지 블러) */
.premium{margin-top:14px}
.premium .reading+.reading{margin-top:14px}
.premium h3 .lk-ico{font-size:13px;opacity:.8;margin-right:6px}
.rest{display:inline-block;filter:blur(6px);user-select:none;pointer-events:none;opacity:.85}
.cta-card{margin-top:18px;text-align:center;border:1.5px solid var(--gold);border-radius:6px;
  padding:30px 26px;background:linear-gradient(180deg,rgba(201,162,75,.08),rgba(201,162,75,.02))}
.cta-card h4{font-family:'Fraunces',serif;font-weight:500;font-size:23px;margin-bottom:8px}
.cta-card .price{font-family:'Fraunces',serif;font-style:italic;color:var(--gold);font-size:16.5px;margin:10px 0 18px}
.cta-card .lock-list{font-size:12.5px;color:rgba(244,237,220,.6);line-height:1.8}
.canvas-size{font-size:12px;color:rgba(244,237,220,.5);margin:-8px 0 16px}
/* 공유 포맷 토글 */
.fmt-btns{display:flex;gap:8px;justify-content:center;margin-bottom:14px}
.fmt-btns .btn2{padding:9px 18px;font-size:13px}
.btn2.active{background:var(--gold);color:var(--ink)}

/* 만세력 — 십성 태그 + 지장간 */
.tg{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--gold);border:1px solid rgba(201,162,75,.45);border-radius:99px;padding:2px 8px;margin-left:8px;vertical-align:2px}
.sb-hid{font-size:11.5px;color:rgba(244,237,220,.42);margin-top:4px;letter-spacing:.02em}

/* K-Naming 증서 */
.cert{text-align:center;margin-top:0}
.cert-head{font-size:11px;font-weight:700;letter-spacing:.3em;color:#8a7a58;margin-bottom:14px}
.cert-kr{font-family:'Noto Serif KR',serif;font-weight:600;font-size:62px;line-height:1.15;color:#241d12}
.cert-rom{font-family:'Fraunces',serif;font-style:italic;font-size:18px;color:#6b5e46;margin-top:6px}
.cert-why{font-size:14px;color:#4d4230;max-width:440px;margin:18px auto 0;line-height:1.65}
.name-opts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:22px}
.name-opt{padding:10px 16px;border-radius:4px;border:1.5px solid #c9bda0;background:#faf6ea;cursor:pointer;
  font-family:'Karla',sans-serif;font-size:14px;color:#4d4230}
.name-opt b{font-family:'Noto Serif KR',serif;font-weight:600;margin-right:6px}
.name-opt.active{border-color:var(--gold);background:rgba(201,162,75,.14);color:#241d12}
.cert-note{font-size:12px;color:#8a7a58;margin-top:16px}

/* 궁합 모드 토글 (아이돌 vs 진짜) */
.match-mode{display:flex;gap:8px;margin:4px 0 18px}
.mm-btn{flex:1;padding:12px 10px;border-radius:8px;border:1.5px solid rgba(36,29,18,.18);background:transparent;
  color:#6b5e46;font-family:'Karla',sans-serif;font-weight:700;font-size:13px;cursor:pointer;transition:all .15s}
.mm-btn.active{border-color:var(--gold);background:rgba(201,162,75,.16);color:#241d12}
@media(max-width:440px){.match-mode{flex-direction:column}}

/* 궁합 */
.match-score{font-family:'Fraunces',serif;font-weight:500;font-size:78px;line-height:1.05}
.match-verdict{font-family:'Fraunces',serif;font-style:italic;font-size:19px;color:#4d4230;margin-top:2px}
.match-category{display:inline-block;margin-top:12px;padding:7px 18px;border:2px solid;border-radius:999px;font-weight:700;font-size:13px;letter-spacing:.04em}
.mc-i18n{font-weight:500;opacity:.75;letter-spacing:0}
.factors{margin-top:20px}
.factor{display:flex;gap:12px;font-size:14px;color:#4d4230;padding:10px 0;border-bottom:1px solid rgba(36,29,18,.12);line-height:1.55}
.factor:last-child{border-bottom:none}
.factor span{font-weight:700;color:#8a7a58;min-width:12px}
/* 궁합 서브스코어 + 서사 블록 */
.sub-bars{margin-top:24px}
.sub-row{display:grid;grid-template-columns:104px 1fr 40px;gap:12px;align-items:center;padding:7px 0}
.sub-name{font-size:11.5px;font-weight:700;letter-spacing:.1em;color:#6b5e46;text-transform:uppercase}
.sub-track{height:8px;background:rgba(36,29,18,.12);border-radius:99px;overflow:hidden}
.sub-fill{height:100%;border-radius:99px;transition:width 1s cubic-bezier(.2,.8,.2,1)}
.sub-val{font-size:13px;font-weight:700;color:#6b5e46;text-align:right}
.mt-block{margin-top:20px;padding-top:16px;border-top:1px solid rgba(36,29,18,.12)}
.mt-lab{font-size:10.5px;font-weight:700;letter-spacing:.2em;color:#8a7a58;margin-bottom:7px}
.mt-block p{font-size:14.5px;color:#4d4230;line-height:1.65}
.role-row{display:flex;gap:14px;font-size:14px;color:#4d4230;padding:7px 0;line-height:1.5}
.role-row span{min-width:118px;font-size:11px;font-weight:700;letter-spacing:.08em;color:#8a7a58;text-transform:uppercase;padding-top:3px}
/* 성덕 풀 매치 리포트 티저 */
.fm-item{margin-top:14px}
.fm-t{font-family:'Fraunces',serif;font-weight:600;font-size:15px;color:#8a6d2f;margin-bottom:4px}
.fm-item p{font-size:13.5px;color:#4d4230;line-height:1.6}

/* 태몽 */
.dream-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;margin:16px 0 6px}
.dream-chip{padding:12px 6px;border-radius:6px;border:1.5px solid var(--line);background:var(--ink-2);
  color:var(--hanji);cursor:pointer;font-family:'Karla',sans-serif;font-size:13px;transition:border-color .15s}
.dream-chip:hover{border-color:var(--gold)}
.dream-chip.active{border-color:var(--gold);color:var(--gold)}

/* 기능 허브 (페이지 이동 버튼) */
.card-legend{max-width:520px;margin:16px auto 26px;font-size:12px;color:rgba(244,237,220,.55);line-height:1.6;
  border:1px solid var(--line);border-radius:6px;padding:12px 16px;text-align:left}
.card-legend>b{display:block;color:rgba(244,237,220,.8);font-size:12.5px;margin-bottom:4px}
.card-legend span{display:block;margin-top:3px}
.card-legend span b{color:var(--gold)}
.hub-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}
/* 3열 균등 그리드의 단조로움 깨기 — 데스크톱에서 가운데 열을 살짝 내려 지그재그 리듬 (redesign 감사) */
@media (min-width:900px){
  .hub-grid .hub:nth-child(3n+2){margin-top:14px}
  .steps .step:nth-child(2){margin-top:14px}
}
.hub{display:block;padding:20px 18px;border-radius:6px;border:1.5px solid var(--line);background:var(--ink-2);
  text-decoration:none;color:var(--hanji);transition:border-color .15s, transform .15s}
.hub:hover{border-color:var(--gold);transform:translateY(-2px)}
.hub b{display:block;font-family:'Fraunces',serif;font-weight:500;font-size:17.5px;color:var(--gold);margin-bottom:4px}
.hub span{font-size:12.5px;color:rgba(244,237,220,.55);line-height:1.45;display:block}
/* 기능 페이지 */
.feat-page{padding-top:26px;padding-bottom:70px;animation:rise .5s cubic-bezier(.2,.8,.2,1) both}
/* 페이지 상단: 뒤로가기 버튼 + 한 줄 스크롤 내비 */
.page-top{margin-bottom:18px}
.page-back{display:inline-flex;align-items:center;gap:6px;color:var(--gold);text-decoration:none;
  font-family:'Fraunces',serif;font-size:17px;margin-bottom:14px}
.page-back:hover{filter:brightness(1.15)}
.feat-nav{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;padding-bottom:10px;
  align-items:center;scrollbar-width:thin;scrollbar-color:rgba(201,162,75,.5) transparent}
.feat-nav::-webkit-scrollbar{height:6px}
.feat-nav::-webkit-scrollbar-track{background:transparent}
.feat-nav::-webkit-scrollbar-thumb{background:rgba(201,162,75,.45);border-radius:99px}
.feat-nav a{flex:none;padding:10px 16px;border-radius:99px;border:1.5px solid var(--line);background:var(--ink-2);
  color:rgba(244,237,220,.72);font-weight:700;font-size:13px;text-decoration:none;white-space:nowrap;
  letter-spacing:.03em;transition:all .15s}
.feat-nav a:hover{border-color:var(--gold)}
.feat-nav a.active{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.feat-nav .fn-edit{border-style:dashed;color:rgba(244,237,220,.5);font-size:12.5px}
.need-cast{margin-bottom:16px;font-size:14.5px}
/* 아이돌 신청 */
.idol-req{display:flex;gap:8px;margin-top:10px}
.idol-req input{flex:1;padding:11px 13px;font-size:14px}
.idol-req button{padding:11px 18px;border-radius:4px;border:1.5px solid #8a6d2f;background:transparent;
  color:#8a6d2f;font-family:'Karla',sans-serif;font-weight:700;font-size:13px;cursor:pointer;white-space:nowrap}
.idol-req button:hover{background:#8a6d2f;color:#faf6ea}

/* 궁합 — 아이돌 선택 구분선 */
.or-line{display:flex;align-items:center;gap:12px;margin:18px 0 8px;color:#8a7a58;
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:700}
.or-line::before,.or-line::after{content:"";height:1px;background:rgba(36,29,18,.16);flex:1}

/* 오늘의 운세 */
.today-date{font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:rgba(244,237,220,.5);margin-bottom:8px}
.do-chips{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 4px}
.chip{font-size:13px;font-weight:700;padding:8px 15px;border-radius:99px;border:1.5px solid}
.chip-do{color:#7fb894;border-color:rgba(127,184,148,.5)}
.chip-avoid{color:#d08a83;border-color:rgba(208,138,131,.5)}

/* 오늘의 운세 — 9:16 세로 카드 스택 (인스타 카드뉴스식 겹침+넘김, 2026-07-17. 구 가로 캐러셀 대체) */
.deck-wrap{display:flex;flex-direction:column;align-items:center;gap:14px;padding-top:6px}
.deck{position:relative;width:min(320px,82vw);aspect-ratio:9/16;touch-action:pan-y;cursor:pointer;user-select:none}
.tcard{position:absolute;inset:0;background:linear-gradient(180deg,var(--hanji),var(--hanji-2));border-radius:20px;
  padding:30px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  box-shadow:0 12px 32px rgba(0,0,0,.4);will-change:transform,opacity;
  transition:transform .5s cubic-bezier(.2,.85,.3,1.15),opacity .4s}
.tcard .tc-label{font-size:11.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#8a7a58}
.tcard .tc-sub{font-family:'Fraunces',serif;font-style:italic;font-size:13.5px;color:#8a7a58;margin-bottom:10px}
.tcard .tc-score{font-family:'Fraunces',serif;font-weight:500;font-size:52px;line-height:1.1;margin:8px 0 4px}
.tcard .tc-score.big{font-size:84px}
.tcard p{font-family:'Fraunces',serif;font-style:italic;font-size:14px;color:#4d4230;line-height:1.5;margin-top:10px}
.tcard-hero .today-date{margin-bottom:4px;color:#8a7a58} /* 한지 카드 위라 어두운 골드로 (기본은 밤하늘용 밝은색) */
.bokko-mini{width:46px;height:46px;object-fit:contain;position:absolute;top:16px;right:16px}
.today-bonus{margin-top:12px;font-size:12.5px;color:#8a6d2f;border-top:1px solid rgba(138,109,47,.2);padding-top:10px}
.tcard-outro p{font-size:13.5px}
.deck-dots{display:flex;gap:7px}
.deck-dots .dd{width:7px;height:7px;border-radius:50%;background:rgba(244,237,220,.22);transition:background .3s,transform .3s}
.deck-dots .dd.on{background:var(--gold);transform:scale(1.25)}
.deck-hint{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(244,237,220,.35)}

/* 사진 슬롯 칩 — 업로드/변경/삭제가 눈에 보이게 (2026-07-17).
 * 리딩 페이지(어두운 밤하늘)와 궁합 페이지(.card 밝은 한지) 양쪽에 놓이므로,
 * has 칩은 어느 배경에서도 읽히는 다크 네이비 고정 배색으로. */
.pslots{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin:14px 0 4px}
.pslot.add{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border:1.5px dashed rgba(201,162,75,.7);
  border-radius:12px;background:transparent;color:#a5843c;font-family:'Karla',sans-serif;font-weight:700;font-size:12.5px;cursor:pointer}
.pslot.add:hover{border-style:solid}
.pslot.has{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border:1.5px solid rgba(201,162,75,.6);
  border-radius:12px;background:rgba(16,22,35,.88)}
.pslot.has img{width:40px;height:40px;object-fit:contain;border-radius:8px;background:rgba(244,237,220,.12)}
.pslot.has span{font-size:12px;font-weight:700;color:rgba(244,237,220,.85)}
.pslot .ps-sw{background:none;border:1px solid rgba(201,162,75,.5);color:var(--gold);border-radius:8px;
  font-size:11px;font-weight:700;padding:4px 8px;cursor:pointer}
.pslot .ps-x{background:none;border:none;color:#d08a83;font-size:14px;font-weight:700;cursor:pointer;padding:2px 4px}
.ps-status{display:block;text-align:center;font-size:12px;color:#8a7a58;font-style:italic;min-height:16px}

/* 페이월 — 4축 세부점수 블러 + 잠금 오버레이 (총점·카테고리는 무료 유지: 공유 루프 보호) */
.locked-block{position:relative}
.locked-block .sub-row{filter:blur(6px);user-select:none;pointer-events:none}
.lock-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max-content;max-width:88%;
  background:rgba(16,22,35,.9);border:1.5px solid var(--gold);color:var(--gold);border-radius:12px;
  padding:12px 18px;font-family:'Karla',sans-serif;font-weight:700;font-size:12.5px;cursor:pointer;line-height:1.45}

/* 한글 이름 토글 — 초라한 체크박스 대신 골드 스위치 (2026-07-17) */
.kn-toggle{display:flex;align-items:center;justify-content:center;gap:10px;margin:6px auto 14px;cursor:pointer;
  max-width:420px;padding:10px 16px;border:1px solid var(--line);border-radius:99px;background:rgba(244,237,220,.04)}
.kn-toggle input{position:absolute;opacity:0;pointer-events:none}
.kn-toggle .kswitch{flex:none;width:40px;height:22px;border-radius:99px;background:rgba(244,237,220,.18);position:relative;transition:background .25s}
.kn-toggle .kswitch::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;
  background:var(--hanji);transition:transform .25s}
.kn-toggle input:checked+.kswitch{background:var(--gold)}
.kn-toggle input:checked+.kswitch::after{transform:translateX(18px)}
.kn-toggle .kn-text{font-size:12.5px;font-weight:700;color:rgba(244,237,220,.78);letter-spacing:.02em}
.kn-toggle:has(input:checked) .kn-text{color:var(--gold)}

/* 미캐스팅 탭 — 캐스팅 폼만 보여주고 나머지 콘텐츠는 숨김 (need-cast 안내 대체, 2026-07-17) */
.feat-page.uncast>*:not(.castHere):not(.page-top){display:none!important}
.castHere:empty{display:none}
.castHere{margin-top:6px}

/* 잠긴 MATCH SCORE — 결제 유도 (총점 숨김, 세부점수는 공개) */
.match-score.score-locked{background:rgba(244,237,220,.06);border:1.5px dashed var(--gold);border-radius:16px;
  color:var(--gold);cursor:pointer;padding:4px 30px 10px;display:inline-flex;flex-direction:column;align-items:center;line-height:1}
.match-score.score-locked span{font-family:'Karla',sans-serif;font-size:11px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;margin-top:4px}
/* 잠긴 매치 타입 배지 — 라벨을 블러 처리 (범례 6종으로 궁금증만 유발) */
.match-category.cat-locked{border-color:#8a6d2f;color:#8a6d2f;background:none;cursor:pointer;font-family:'Karla',sans-serif}
.match-category.cat-locked .cat-blur{filter:blur(7px);user-select:none;pointer-events:none}

/* 사진 편집 패널 — 줌·가로·세로 슬라이더 (공유 카드 프레이밍) */
.pedit{display:flex;flex-direction:column;gap:8px;max-width:300px;margin:10px auto 4px;padding:12px 16px;
  border:1px solid rgba(201,162,75,.5);border-radius:12px;background:rgba(16,22,35,.88)}
.pedit .pe-row{display:flex;align-items:center;gap:10px}
.pedit .pe-row span{flex:none;width:22px;text-align:center;color:var(--gold);font-size:14px}
.pedit input[type=range]{flex:1;accent-color:#c9a24b}
.pedit .btn2{padding:7px 14px;font-size:12px;align-self:center}

/* Year Ahead — 12개월 행 (.reading = 어두운 잉크 배경 → 밝은 텍스트) */
.tj-rows{margin-top:16px;border-top:1px solid var(--line)}
.tj-row{display:flex;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px solid rgba(244,237,220,.08);font-size:13px}
.tj-row.now{background:rgba(201,162,75,.12);border-radius:6px;padding-left:6px;padding-right:6px}
.tj-row .tjr-m{flex:none;width:64px;font-weight:700;color:var(--hanji)}
.tj-row .tjr-p{flex:none;letter-spacing:2px;color:var(--gold);font-size:11px}
.tj-row .tjr-g{flex:none;width:74px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#8a7a58}
.tj-row .tjr-t{color:rgba(244,237,220,.78)}
@media(max-width:480px){.tj-row{flex-wrap:wrap}.tj-row .tjr-t{width:100%;padding-left:0}}

/* 궁합 카테고리 범례 — .card(밝은 한지) 안에 놓이므로 다크 텍스트 */
.cat-legend{margin-top:20px;border:1px solid rgba(36,29,18,.18);border-radius:8px;padding:16px 18px}
.cat-legend .cl-row{display:flex;gap:10px;font-size:12.5px;color:#4d4230;padding:5px 0;line-height:1.45}
.cat-legend .cl-b{font-weight:700;color:#241d12;flex:none;min-width:118px}

/* 기기 프로필 바 (Welcome back) */
#profileBar .pb,#homeProfile .pb{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  background:rgba(201,162,75,.13);border:1px solid rgba(201,162,75,.45);border-radius:4px;
  padding:11px 14px;margin-bottom:20px;font-size:13.5px;color:#4d4230}
#profileBar .pb b,#homeProfile .pb b{font-family:'Fraunces',serif}
#homeProfile .pb{color:rgba(244,237,220,.85);margin:30px 0 -8px}
.pb-btns{display:flex;gap:8px}
.pb-btns button{padding:7px 13px;border-radius:4px;border:1.5px solid #8a6d2f;background:transparent;
  color:#8a6d2f;font-family:'Karla',sans-serif;font-weight:700;font-size:12.5px;cursor:pointer}
.pb-btns button.solid{background:#8a6d2f;color:#faf6ea}

/* 랜딩 (홈) */
.char-strip{display:flex;justify-content:center;align-items:flex-end;gap:2px;margin:38px auto 0;max-width:560px}
.char-strip img{width:20%;max-width:104px;filter:drop-shadow(0 12px 26px rgba(0,0,0,.55))}
.land-tease{text-align:center;font-size:13.5px;color:rgba(244,237,220,.6);max-width:460px;margin:14px auto 0;line-height:1.6}
.cta-row{text-align:center;margin:30px 0 8px}
a.cta{display:inline-block;padding:16px 46px;border-radius:4px;text-decoration:none;
  background:linear-gradient(175deg,var(--hanji),var(--hanji-2));color:#241d12;
  font-family:'Fraunces',serif;font-size:19px;letter-spacing:.04em;
  box-shadow:0 16px 42px rgba(0,0,0,.5);transition:transform .15s ease, box-shadow .15s ease}
a.cta:hover{transform:translateY(-2px);box-shadow:0 20px 48px rgba(0,0,0,.6)}
a.cta small{display:block;font-family:'Karla',sans-serif;font-size:10.5px;font-weight:700;
  letter-spacing:.16em;color:#8a7a58;margin-top:6px;text-transform:uppercase}
.trust{text-align:center;font-size:12px;color:rgba(244,237,220,.45);margin-top:14px;letter-spacing:.05em}
/* 랜딩 리빌 v3 (2026-07-16 확정): 팝+스태거 스타일 + 재진입 시마다 재생 */
.lz{opacity:0;transform:translateY(22px);will-change:transform,opacity;
  transition:opacity .65s ease,transform .65s cubic-bezier(.22,.9,.26,1)}
.lz.in{opacity:1;transform:none}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.step{background:var(--ink-2);border:1px solid var(--line);border-radius:6px;padding:20px 18px}
.step b{display:block;font-family:'Fraunces',serif;font-weight:500;font-size:16.5px;color:var(--gold);margin-bottom:6px}
.step span{font-size:12.5px;color:rgba(244,237,220,.6);line-height:1.55;display:block}
@media (max-width:640px){ .steps{grid-template-columns:1fr} .char-strip img{max-width:none} }

/* 토정비결 미니 그래프 */
.tj-bars{display:flex;gap:5px;align-items:flex-end;height:72px;margin:14px 0 4px}
.tj-bar{flex:1;background:var(--gold);border-radius:3px 3px 0 0}
.tj-lab{display:flex;gap:5px;font-size:9px;color:rgba(244,237,220,.5);text-align:center;letter-spacing:.04em}
.tj-lab span{flex:1}

footer{padding:60px 0 46px;text-align:center;color:rgba(244,237,220,.36);font-size:12.5px}
footer .kr{font-size:14px;letter-spacing:.5em;display:block;margin-bottom:12px}

@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
@keyframes pulse{0%,100%{opacity:.4;transform:scale(1)}50%{opacity:.65;transform:scale(1.06)}}
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}
.rise{animation:rise .8s cubic-bezier(.2,.8,.2,1) both}
@media (max-width:520px){ .pillar .p-hanja{font-size:24px} .row{grid-template-columns:1fr} }

/* ───────── 풀 리포트 (인쇄/PDF 전용 디자인) ───────── */
#report{display:none}
@media print{
  @page{size:A4;margin:16mm 15mm}
  body{background:#fdfaf3 !important}
  #sky,.wrap{display:none !important}
  #report{display:block;font-family:'Karla',sans-serif;color:#2a2317;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .rp-cover{page-break-after:always;height:95vh;display:flex;align-items:center;justify-content:center;text-align:center}
  .rp-cover-in{background:#101623;color:#f4eddc;border-radius:8px;padding:64px 48px;width:100%;height:92%;
    display:flex;flex-direction:column;align-items:center;justify-content:center}
  .rp-kicker{font-size:12px;font-weight:700;letter-spacing:.3em;color:#c9a24b;margin-bottom:18px}
  .rp-cover-in h1{font-family:'Fraunces',serif;font-weight:500;font-size:44px;margin-bottom:12px}
  .rp-cover-sub{font-size:15px;color:rgba(244,237,220,.75)}
  .rp-cover-name{font-family:'Fraunces',serif;font-style:italic;font-size:18px;color:#c9a24b;margin-top:10px}
  .rp-cover-char{width:200px;margin:34px auto 0}
  .rp-cover-foot{margin-top:auto;font-size:12px;color:rgba(244,237,220,.45);letter-spacing:.08em}
  .rp-sec{page-break-before:always;padding-top:6mm}
  .rp-sec:first-of-type{page-break-before:auto}
  .rp-sec h2{font-family:'Fraunces',serif;font-weight:500;font-size:25px;color:#101623;
    border-bottom:2.5px solid #c9a24b;padding-bottom:9px;margin-bottom:16px}
  .rp-sec h3{font-family:'Fraunces',serif;font-weight:600;font-size:15.5px;color:#8a6d2f;margin:18px 0 6px}
  .rp-sec p{font-size:12.5px;line-height:1.75;margin-bottom:10px;text-align:justify}
  .rp-table{width:100%;border-collapse:collapse;font-size:12px;margin:8px 0 4px}
  .rp-table th{text-align:left;font-size:10px;letter-spacing:.14em;color:#8a7a58;border-bottom:1.5px solid #d8cba8;padding:6px 8px}
  .rp-table td{border-bottom:1px solid #e7dec6;padding:9px 8px;vertical-align:top;line-height:1.5}
  .rp-lab{font-weight:700;font-size:10.5px;letter-spacing:.12em;color:#8a7a58}
  .rp-dim{color:#8d8069;font-size:11px}
  .rp-els{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;margin:6px 0 10px}
  .rp-now{color:#b4443a;font-weight:700;font-size:11px}
  .rp-close p{text-align:center}
  .rp-close p:first-of-type{font-family:'Fraunces',serif;font-size:17px}
  .rp-cert{text-align:center;padding-top:14mm}
  .rp-cert .kr-big{font-family:'Noto Serif KR',serif;font-weight:600;font-size:60px;color:#101623;margin:8mm 0 2mm}
  .rp-cert .kr-rom{font-family:'Fraunces',serif;font-style:italic;font-size:17px;color:#8a6d2f;margin-bottom:8mm}
  .rp-cert p{text-align:center;max-width:120mm;margin-left:auto;margin-right:auto}
  .rp-days{display:flex;gap:10mm;flex-wrap:wrap;margin:4mm 0}
  .rp-days div{flex:1;min-width:36mm}
}
