/* ============================================================
   원소당 · 공용 디자인 시스템
   14개 상품 페이지가 이 파일 하나를 공유합니다.
   클래스명은 기존 JS가 참조하므로 변경하지 않았습니다.
   ============================================================ */

:root{
  /* 바탕과 먹 — 커버 그림(까치와 아이)의 배경에서 뽑은 아이보리 */
  --hanji:#EEE5DA;         /* 바탕 — 주황빛이 아주 옅게 도는 미색 */
  --hanji-2:#F8F2E9;       /* 올라온 면 */
  --hanji-3:#E5DACD;       /* 가라앉은 면 (카드) */
  --muk:#211E19;           /* 먹 — 본문 */
  --muk-2:#5A5346;         /* 먹 옅게 */
  --muk-3:#635B4E;         /* 캡션·라벨 */
  --line:#DACEBF;
  --line-2:#C8B9A6;

  /* 브랜드 */
  --noerok:#476052;        /* 뇌록 — 단청 초벌 안료. 프라이머리 */
  --noerok-soft:#DFE6DF;
  --injoo:#C4472C;         /* 인주 — 낙관. 면으로 쓸 때 */
  --injoo-ink:#A4361B;     /* 인주 — 글자로 쓸 때(대비 확보) */
  --injoo-soft:#F5E2D9;
  --cta-fg:#FFF7F0;

  /* 오행 — 새 아이보리 바탕과 카드면 양쪽에서 4.5:1 이상 확보한 값 */
  --wood:#2B6440;
  --fire:#A93627;
  --earth:#77560D;
  --metal:#515A66;
  --water:#2C4767;

  /* 형태 */
  --r-sm:6px; --r:12px; --r-lg:18px; --r-pill:999px;
  --shadow:0 1px 2px rgba(28,30,27,.04), 0 8px 24px -18px rgba(28,30,27,.28);

  /* 서체 */
  /* 제목은 Hahmlet — 고전 느낌을 내는 한글 세리프입니다. 브랜드의 얼굴이라 유지합니다. */
  --f-display:'Hahmlet','Noto Serif KR','Nanum Myeongjo',ui-serif,serif;
  --f-hanja:'Noto Serif KR','Nanum Myeongjo',serif;
  --f-body:'Pretendard Variable',Pretendard,-apple-system,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;
  --f-mono:'IBM Plex Mono',ui-monospace,monospace;
}

/* 다크 모드는 쓰지 않습니다.
   원소당의 정체성이 한지(아이보리)이고, 춘이 그림들이 전부 아이보리 배경으로
   그려져 있어서 어두운 바탕에서는 그림만 밝은 사각형으로 떠버립니다.
   기기가 다크로 맞춰져 있어도 아이보리로 보이게 고정합니다.

   되돌리려면: 아래 color-scheme 을 지우고, git 히스토리의 다크 팔레트 블록을 되살리면 됩니다. */
:root{ color-scheme: light; }

/* ---------- 바탕 ---------- */
body{margin:0;background:var(--hanji)}

.saju-app{
  background:var(--hanji);
  /* 종이 결 — 무작위 그레인 한 겹 + 따뜻한 톤의 가로 섬유 한 겹.
     격자무늬(반복 그라디언트만 쓸 때)가 눈에 밟히지 않도록 노이즈를 위에 얹었다. */
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23p)' opacity='0.055'/%3E%3C/svg%3E"),
    repeating-linear-gradient(0deg, transparent 0 3px, rgba(120,80,40,.020) 3px 4px),
    repeating-linear-gradient(90deg, transparent 0 9px, rgba(120,80,40,.012) 9px 10px);
  color:var(--muk);
  font-family:var(--f-body);
  font-weight:400;
  min-height:100vh;
  padding:0 16px 72px;
  box-sizing:border-box;
}
.saju-app *{box-sizing:border-box}
.wrap{max-width:760px;margin:0 auto}
.saju-app a{color:var(--noerok)}
.saju-app :focus-visible{outline:2px solid var(--noerok);outline-offset:2px;border-radius:3px}

/* ---------- 상단 바 ---------- */
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  max-width:760px;margin:0 auto;padding:14px 0;border-bottom:1px solid var(--line)
}
.topbar .home{
  display:inline-flex;align-items:center;gap:.45rem;text-decoration:none;color:var(--muk)
}
.topbar .home img{width:26px;height:26px;border-radius:50%}
.topbar .home .bn{font-family:var(--f-display);font-weight:800;font-size:1rem;letter-spacing:.06em}
.topbar .back{
  font-family:var(--f-body);font-size:12.5px;letter-spacing:0;
  color:var(--muk-3);text-decoration:none
}
.topbar .back:hover{color:var(--noerok)}

/* ---------- 마스트헤드 ---------- */
.masthead{text-align:center;padding:44px 0 34px}
.masthead .seal-mark{
  display:inline-flex;align-items:center;justify-content:center;
  width:46px;height:46px;border-radius:var(--r-sm);
  background:var(--injoo);color:var(--cta-fg);
  font-family:var(--f-hanja);font-size:24px;font-weight:900;line-height:1;
  letter-spacing:0;margin-bottom:16px;
  transform:rotate(-3deg);          /* 눌러 찍은 낙관 */
  box-shadow:0 2px 10px -4px rgba(196,71,44,.5)
}
.masthead .brand{
  font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;
  color:var(--muk-3);margin:0 0 10px
}
.masthead h1{
  font-family:var(--f-display);font-size:clamp(1.6rem,6vw,2.1rem);font-weight:800;
  margin:0 0 8px;letter-spacing:.02em;line-height:1.25;color:var(--muk);text-wrap:balance
}
.masthead p{
  color:var(--muk-2);font-size:13.5px;margin:0 auto;max-width:32rem;
  letter-spacing:0;line-height:1.7;word-break:keep-all
}

/* ---------- 카드 3종 ---------- *
   입력 = 파인 면 / 명식 = 종이 / 리포트 = 면 없음
   전부 같은 카드에 담으면 리포트가 무료 위젯처럼 읽힙니다.        */
.card{
  background:var(--hanji-3);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  padding:24px;margin-bottom:18px
}
.card h2{
  font-family:var(--f-display);font-size:15px;font-weight:600;letter-spacing:0;
  margin:0 0 18px;color:var(--muk);display:flex;align-items:center;gap:9px
}
.card h2::before{
  content:'';width:5px;height:5px;border-radius:50%;
  background:var(--injoo);flex:none
}
/* 명식 카드 — 한지 한 장 */
#resultCard{background:var(--hanji-2);box-shadow:var(--shadow)}
/* 리포트 카드 — 면을 없애고 글만 남긴다 */
#aiCard{background:transparent;border:none;border-top:1px solid var(--line-2);border-radius:0;padding:34px 0 0}
#aiCard > h2{margin-bottom:26px}

/* ---------- 폼 ---------- */
.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}
.form-grid .full{grid-column:1/-1}
label.f{
  display:block;font-family:var(--f-body);font-size:11.5px;font-weight:500;letter-spacing:0;
  color:var(--muk-2);margin-bottom:6px
}
.saju-app input,.saju-app select{
  width:100%;background:var(--hanji-2);border:1px solid var(--line-2);color:var(--muk);
  padding:11px 13px;border-radius:var(--r);font-size:15.5px;font-family:inherit;
  font-variant-numeric:tabular-nums
}
.saju-app input:focus,.saju-app select:focus{outline:2px solid var(--noerok);outline-offset:-1px;border-color:transparent}
.check-row{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muk-2);margin-top:6px}
.check-row input{width:auto;accent-color:var(--noerok)}
.check-row label{cursor:pointer}

/* ---------- 버튼 ---------- */
.btn{
  width:100%;padding:16px;background:var(--injoo);color:var(--cta-fg);
  border:none;border-radius:var(--r-pill);font-size:15px;font-weight:600;cursor:pointer;
  letter-spacing:.02em;font-family:var(--f-body);margin-top:18px;
  transition:transform .15s ease,filter .15s ease
}
.btn:hover{filter:brightness(1.06);transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn:disabled{background:var(--hanji-3);color:var(--muk-3);cursor:default;transform:none;filter:none;border:1px solid var(--line-2)}
.btn.secondary{background:transparent;border:1px solid var(--noerok);color:var(--noerok)}

/* ---------- 명식 (시그니처 컴포넌트) ---------- */
.myeongsik{
  display:grid;grid-template-columns:repeat(4,1fr);gap:9px;
  align-items:end;padding-top:26px
}
.pillar{
  background:var(--hanji);border:1px solid var(--line-2);
  border-radius:var(--r);padding:14px 6px 12px;text-align:center;
  position:relative;
  /* fill-mode 를 쓰지 않는다 — 애니메이션이 어떤 이유로든 실행되지 않아도
     기둥은 항상 보인다. 명식은 이 제품의 시그니처라 연출에 표시를 걸지 않는다.
     상단 -40px 여유는 일주 낙관이 기둥 밖으로 나오기 때문. */
  animation:unfold .55s cubic-bezier(.22,.61,.36,1)
}
@keyframes unfold{
  from{opacity:0;clip-path:inset(-40px 100% 0 0)}
  to{opacity:1;clip-path:inset(-40px 0 0 0)}
}
/* 일주 = 나. 한 칸만 올려 세우고 낙관을 찍는다 */
.pillar.is-day{
  transform:translateY(-10px);
  border-color:var(--injoo);
  box-shadow:0 6px 18px -12px rgba(196,71,44,.55)
}
.pillar.is-day::after{
  content:'나';position:absolute;top:-9px;left:50%;transform:translateX(-50%);
  background:var(--injoo);color:var(--cta-fg);
  font-family:var(--f-hanja);font-size:10px;font-weight:700;line-height:1;
  padding:3px 7px;border-radius:3px;letter-spacing:0
}
.pillar .pos{
  font-family:var(--f-body);font-size:11px;font-weight:500;letter-spacing:0;
  color:var(--muk-3);margin-bottom:9px
}
.pillar .hanja{font-family:var(--f-hanja);font-size:36px;line-height:1.12;font-weight:900}
.pillar .hanja div{padding:2px 0}
.pillar .kr{font-size:11px;color:var(--muk-2);margin-top:7px}
.pillar .tg{font-size:9.5px;margin-top:7px;line-height:1.55;color:var(--muk-3)}

.el-목{color:var(--wood)} .el-화{color:var(--fire)} .el-토{color:var(--earth)}
.el-금{color:var(--metal)} .el-수{color:var(--water)}

/* ---------- 칩 ---------- */
.chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:20px}
.chip{
  font-size:11.5px;padding:5px 11px;border:1px solid var(--line-2);
  border-radius:var(--r-pill);color:var(--muk-2);background:var(--hanji)
}
.chip b{color:var(--muk);font-weight:600}

/* ---------- 오행 저울 — 브랜드의 핵심 장치 ---------- */
.elhead{font-family:var(--f-display);font-size:12.5px;font-weight:600;color:var(--muk-2);
  margin:24px 0 8px;letter-spacing:0}
.ebar{display:flex;gap:3px;margin-top:0;height:10px;border-radius:var(--r-pill);overflow:hidden;background:var(--hanji-3)}
.ebar div{height:100%}
.elegend{
  display:flex;gap:14px;margin-top:10px;font-size:11.5px;color:var(--muk-2);flex-wrap:wrap;
  font-variant-numeric:tabular-nums
}

/* ---------- 해석 파트 ---------- */
.part{border-left:2px solid var(--line-2);padding:0 0 0 20px;margin:30px 0}
/* 아직 안 온 파트 — 제목만 흐리게 보여 무엇이 오는지는 알 수 있게 */
.part.pending{opacity:.5}
.part.pending .ptitle .num{color:var(--muk-3)}
/* 본문이 도착하는 순간 먹이 스미듯 */
.part:not(.pending) .pbody{animation:seep .5s ease both}
.pwait{
  display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muk-3);
  padding:2px 0 4px
}
.pwait .st{
  width:7px;height:7px;border-radius:50%;background:var(--injoo);flex:none;
  animation:pulse .9s infinite alternate
}
/* 대기 안내 — 마지막 파트가 오면 통째로 사라진다 */
.waitfoot{text-align:center;padding:26px 0 4px;border-top:1px solid var(--line);margin-top:26px}
@keyframes seep{from{opacity:0;filter:blur(5px);letter-spacing:.02em}to{opacity:1;filter:none;letter-spacing:0}}
.part.active{border-left-color:var(--injoo)}
.part .ptitle{
  font-family:var(--f-display);font-size:1.35rem;font-weight:800;letter-spacing:-.01em;
  line-height:1.35;margin-bottom:18px;display:flex;gap:12px;align-items:baseline;
  padding-bottom:14px;border-bottom:1px solid var(--line)
}
.part .ptitle .num{
  font-family:var(--f-mono);color:var(--injoo-ink);font-size:11.5px;letter-spacing:.12em;
  flex:none;font-weight:600
}
.part .pbody{
  font-size:15.5px;line-height:1.95;color:var(--muk);
  white-space:pre-wrap;word-break:keep-all
}
.part .pbody strong{color:var(--muk);font-weight:600;background:linear-gradient(transparent 62%,var(--noerok-soft) 62%)}

/* ---------- 대기 화면 ---------- */
.loading-line{display:flex;gap:9px;align-items:center;color:var(--muk-2);font-size:13px;padding:9px 0}
.dot{width:6px;height:6px;background:var(--injoo);border-radius:50%;animation:pulse 1s infinite alternate}
@keyframes pulse{from{opacity:.25}to{opacity:1}}

.progress-list{padding:6px 0}
.prog-item{
  display:flex;align-items:center;gap:13px;padding:13px 4px;
  border-bottom:1px solid var(--line);font-size:14px;color:var(--muk-3)
}
.prog-item:last-child{border-bottom:none}
.prog-item .st{
  width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  flex:none;font-size:12px;border:1px solid var(--line-2)
}
.prog-item.working{color:var(--muk)}
.prog-item.working .st{border-color:var(--injoo)}
.prog-item.working .st::after{content:'';width:8px;height:8px;background:var(--injoo);border-radius:50%;animation:pulse .9s infinite alternate}
.prog-item.done{color:var(--muk)}
.prog-item.done .st{background:var(--noerok);border-color:var(--noerok);color:var(--hanji)}
.prog-item.done .st::after{content:'✓'}
.prog-hint{text-align:center;font-size:12.5px;color:var(--muk-2);margin-top:20px;line-height:1.75}

/* 대기 화면의 춘이 */
.waiting-chuni{display:block;width:104px;height:104px;margin:8px auto 0;opacity:.92}

/* ---------- 기타 ---------- */
.hidden{display:none}
.err{
  color:var(--injoo-ink);font-size:13.5px;padding:14px;background:var(--injoo-soft);
  border:1px solid var(--injoo);border-radius:var(--r);margin-top:12px;line-height:1.7
}
.notice{
  font-size:11.5px;color:var(--muk-3);line-height:1.75;margin-top:26px;
  padding-top:16px;border-top:1px solid var(--line);word-break:keep-all
}

/* ---------- 하단 ---------- */
.pagefoot{
  max-width:760px;margin:44px auto 0;padding-top:20px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap
}
.pagefoot a{
  font-family:var(--f-body);font-size:12.5px;letter-spacing:0;
  color:var(--muk-3);text-decoration:none
}
.pagefoot a:hover{color:var(--noerok)}

@media (max-width:480px){
  .form-grid{grid-template-columns:repeat(2,1fr)}
  .pillar .hanja{font-size:28px}
  .pillar{padding:11px 4px 10px}
  .masthead{padding:34px 0 28px}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .pillar{clip-path:none!important;opacity:1!important}
  .pillar.is-day{transform:translateY(-10px)!important}
}

/* ---------- 공유 카드 — 캡처되라고 만든 조각 ---------- */
.sharecard{background:var(--hanji-2);border:1px solid var(--line-2);box-shadow:var(--shadow);padding:0}
.sc-inner{padding:30px 24px 24px;text-align:center}
.sc-brand{
  font-family:var(--f-display);font-size:13px;font-weight:800;letter-spacing:.1em;
  color:var(--muk-2);margin-bottom:20px
}
.sc-brand span{font-family:var(--f-hanja);color:var(--injoo-ink);margin-left:.25em;font-weight:700}
.sc-line{
  font-family:var(--f-display);font-size:clamp(1.2rem,5vw,1.6rem);font-weight:800;
  line-height:1.4;margin:0 0 6px;color:var(--muk);word-break:keep-all;text-wrap:balance
}
.sc-lead{font-size:13px;color:var(--muk-3);margin:0 0 22px}

/* 원소 막대 — 좁은 화면에서도 절대 줄이 밀리지 않는 4칸 고정 */
.sc-els{display:flex;flex-direction:column;gap:7px;margin:0 auto 14px;max-width:20rem}
.sc-row{
  display:grid;grid-template-columns:1.4rem 2.2rem 1fr 2.4rem;gap:10px;
  align-items:center;text-align:left
}
.sc-h{font-family:var(--f-hanja);font-size:17px;font-weight:900;line-height:1}
.sc-kr{font-size:12.5px;color:var(--muk-2);white-space:nowrap}
.sc-bar{display:block;height:9px;border-radius:999px;background:var(--hanji-3);overflow:hidden}
.sc-bar i{display:block;height:100%;background:currentColor;border-radius:999px;min-width:2px}
.sc-bar.el-목{color:var(--wood)} .sc-bar.el-화{color:var(--fire)} .sc-bar.el-토{color:var(--earth)}
.sc-bar.el-금{color:var(--metal)} .sc-bar.el-수{color:var(--water)}
.sc-row.none .sc-bar i{background:transparent;border-top:1px dashed var(--line-2);min-width:100%;height:0}
.sc-n{font-size:12px;color:var(--muk-2);text-align:right;white-space:nowrap}
.sc-row.top .sc-kr,.sc-row.top .sc-n{color:var(--muk);font-weight:600}

/* 한 줄 요약 — 칸별 태그 대신 문장 하나로 */
.sc-sum{
  font-size:12.5px;color:var(--muk-2);margin:0 auto 20px;max-width:20rem;
  word-break:keep-all;line-height:1.6
}

/* 지금 채우면 좋은 기운 */
.sc-need{padding-top:20px;border-top:1px solid var(--line);margin-bottom:18px}
.sc-need-h{display:block;font-size:12px;color:var(--muk-3);margin-bottom:6px}
.sc-need b{font-family:var(--f-hanja);font-weight:900;font-size:1.35rem;display:block;margin-bottom:8px}
.sc-why{display:block;font-size:13px;color:var(--muk-2);line-height:1.7;
  max-width:24rem;margin:0 auto 8px;word-break:keep-all}
.sc-how{display:block;font-size:12.5px;color:var(--muk-3)}

.sc-foot{font-family:var(--f-mono);font-size:11px;color:var(--muk-3);margin:0;letter-spacing:.04em}
.sharecard .btn{margin:0;border-radius:0 0 var(--r-lg) var(--r-lg);border-top:1px solid var(--line)}


/* 스트리밍으로 글이 들어오는 중인 파트 */
.part.writing{border-left-color:var(--injoo)}
.part.writing .pbody::after{
  content:'';display:inline-block;width:2px;height:1em;margin-left:2px;
  background:var(--injoo);vertical-align:-2px;animation:caret .9s steps(2) infinite
}
@keyframes caret{0%,49%{opacity:1}50%,100%{opacity:0}}

/* ---------- 구매 안내 (초기 수동 판매) ---------- */
.buycard{background:var(--hanji-2);border-color:var(--line-2);box-shadow:var(--shadow)}
.buy-lead{font-size:.95rem;color:var(--muk-2);margin:0 0 18px}
.buy-price{font-family:var(--f-display);font-size:1.9rem;font-weight:800;color:var(--muk);margin:0 0 22px}
.buy-steps{margin:0 0 18px;padding-left:1.3em;font-size:.95rem;line-height:1.9}
.buy-steps li{margin-bottom:14px}
.buy-steps li::marker{color:var(--injoo-ink);font-weight:700}
.buy-acc{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:7px;padding:11px 13px;
  background:var(--hanji);border:1px solid var(--line-2);border-radius:var(--r);
  font-family:var(--f-mono);font-size:.86rem
}
.buy-copy{
  background:none;border:1px solid var(--line-2);color:var(--muk-2);border-radius:var(--r-pill);
  padding:.28rem .8rem;font-size:.78rem;cursor:pointer;font-family:var(--f-body);white-space:nowrap
}
.buy-copy:hover{border-color:var(--noerok);color:var(--noerok)}
.buy-ch{
  display:inline-block;margin-top:7px;font-size:.9rem;font-weight:600;
  color:var(--injoo-ink);text-decoration:none;border-bottom:1px solid currentColor
}
.buy-note{font-size:.85rem;color:var(--muk-3);margin:0;padding-top:14px;border-top:1px solid var(--line)}

/* 모바일: 카드 제목 옆 라벨이 제목을 밀어 두 줄로 깨지지 않게 */
@media (max-width:560px){
  .card h2{flex-wrap:wrap;row-gap:4px}
  .card h2 > span{margin-left:0 !important;width:100%;font-size:11.5px !important;line-height:1.5}
}

/* ============================================================
   계정 · 보관함
   ============================================================ */

/* 상단바 오른쪽 묶음 */
.tb-right{display:flex;align-items:center;gap:14px}
.acct{display:inline-flex;align-items:center}
.acct-in{
  background:none;border:1px solid var(--line-2);color:var(--muk-2);
  border-radius:var(--r-pill);padding:.3rem .85rem;
  font-family:var(--f-body);font-size:12.5px;cursor:pointer;white-space:nowrap
}
.acct-in:hover{border-color:var(--noerok);color:var(--noerok)}
.acct-me{
  display:inline-flex;align-items:center;gap:.4rem;text-decoration:none;
  color:var(--muk-2) !important;font-size:12.5px;white-space:nowrap
}
.acct-me:hover{color:var(--noerok) !important}
.acct-me img{width:22px;height:22px;border-radius:50%;object-fit:cover;border:1px solid var(--line)}

/* 로그인 시트 */
.wsd-back{
  position:fixed;inset:0;z-index:120;display:flex;align-items:flex-end;justify-content:center;
  background:rgba(28,30,27,.42);opacity:0;transition:opacity .18s ease;
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)
}
.wsd-back.on{opacity:1}
.wsd-sheet{
  position:relative;width:100%;max-width:420px;
  background:var(--hanji-2);border:1px solid var(--line);
  border-radius:var(--r-lg) var(--r-lg) 0 0;
  padding:30px 24px 24px;box-shadow:var(--shadow);
  transform:translateY(14px);transition:transform .18s ease
}
.wsd-back.on .wsd-sheet{transform:translateY(0)}
@media (min-width:560px){
  .wsd-back{align-items:center}
  .wsd-sheet{border-radius:var(--r-lg);margin:0 16px}
}
.wsd-h{
  font-family:var(--f-display);font-weight:800;font-size:1.2rem;
  color:var(--muk);margin:0 0 6px;word-break:keep-all
}
.wsd-p{font-size:13.5px;line-height:1.7;color:var(--muk-2);margin:0 0 20px;word-break:keep-all}
.wsd-oauth{
  display:block;width:100%;border:1px solid var(--line-2);border-radius:var(--r);
  padding:.85rem 1rem;margin-bottom:9px;cursor:pointer;
  font-family:var(--f-body);font-size:.95rem;font-weight:600;
  background:var(--hanji);color:var(--muk);text-align:center
}
.wsd-oauth:hover{border-color:var(--noerok)}
.wsd-oauth.kakao{background:#FEE500;color:#191600;border-color:#E9D400}
.wsd-oauth.kakao:hover{filter:brightness(1.04);border-color:#E9D400}
.wsd-note{font-size:11.5px;line-height:1.7;color:var(--muk-3);margin:16px 0 0;word-break:keep-all}
.wsd-note a{color:var(--muk-2)}
.wsd-x{
  position:absolute;top:12px;right:12px;background:none;border:0;
  color:var(--muk-3);font-size:15px;line-height:1;cursor:pointer;padding:8px
}
.wsd-x:hover{color:var(--muk)}

/* 리포트 끝의 보관 상자 */
.keepbox{
  background:var(--hanji-2);border:1px solid var(--line-2);border-radius:var(--r);
  padding:20px;margin-bottom:16px;text-align:center
}
.keepbox.kept{border-color:var(--noerok)}
.keep-h{
  font-family:var(--f-display);font-weight:800;font-size:1.05rem;
  color:var(--muk);margin:0 0 6px;word-break:keep-all
}
.keep-p{font-size:13px;line-height:1.7;color:var(--muk-2);margin:0 0 14px;word-break:keep-all}
.keep-p a{color:var(--noerok)}
.keepbox .btn{margin:0}
.keep-err{font-size:12.5px;color:var(--injoo-ink);margin:10px 0 0}
.keep-link{display:flex;gap:8px;margin:0 0 14px}
.keep-link input{
  flex:1;min-width:0;background:var(--hanji);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:.6rem .7rem;
  font-family:var(--f-mono);font-size:12px;color:var(--muk-2)
}
.keep-link .btn{flex:0 0 auto;padding:.6rem .9rem;font-size:.85rem}

/* 내 서랍 */
.drawer-head{
  display:flex;align-items:center;gap:14px;
  padding-bottom:20px;margin-bottom:22px;border-bottom:1px solid var(--line)
}
.drawer-head img{width:48px;height:48px;border-radius:50%;object-fit:cover;border:1px solid var(--line)}
.drawer-head .dh-t{font-family:var(--f-display);font-weight:800;font-size:1.2rem;color:var(--muk);margin:0}
.drawer-head .dh-s{font-size:12.5px;color:var(--muk-3);margin:3px 0 0}
.drawer-head .dh-out{
  margin-left:auto;background:none;border:1px solid var(--line-2);color:var(--muk-3);
  border-radius:var(--r-pill);padding:.3rem .8rem;font-size:12px;cursor:pointer;font-family:var(--f-body)
}
.drawer-head .dh-out:hover{border-color:var(--noerok);color:var(--noerok)}

.rlist{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.rlist li{
  background:var(--hanji-2);border:1px solid var(--line);border-radius:var(--r);
  display:flex;align-items:center;gap:12px;padding:15px 16px
}
.rlist .rl-main{flex:1;min-width:0;text-decoration:none;color:inherit}
.rlist .rl-t{
  font-family:var(--f-display);font-weight:800;font-size:1rem;color:var(--muk);
  margin:0 0 4px;word-break:keep-all
}
.rlist .rl-s{font-size:12px;color:var(--muk-3);margin:0;font-family:var(--f-mono)}
.rlist .rl-main:hover .rl-t{color:var(--noerok)}
.rlist .rl-del{
  flex:0 0 auto;background:none;border:1px solid var(--line-2);color:var(--muk-3);
  border-radius:var(--r-pill);padding:.28rem .7rem;font-size:11.5px;cursor:pointer;font-family:var(--f-body)
}
.rlist .rl-del:hover{border-color:var(--injoo);color:var(--injoo-ink)}

.paylist{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
.paylist li{
  display:flex;align-items:baseline;gap:10px;padding:12px 14px;
  background:var(--hanji-2);border:1px solid var(--line);border-radius:var(--r);
  font-size:13.5px;color:var(--muk-2)
}
.paylist .py-t{flex:1;min-width:0;color:var(--muk);font-weight:600}
.paylist .py-a{font-family:var(--f-mono);font-variant-numeric:tabular-nums;color:var(--muk)}
.paylist .py-d{font-family:var(--f-mono);font-size:11.5px;color:var(--muk-3)}

.empty{
  text-align:center;padding:44px 20px;color:var(--muk-3);
  border:1px dashed var(--line-2);border-radius:var(--r);font-size:13.5px;line-height:1.8
}
.empty a{color:var(--noerok)}
.empty img{width:88px;height:auto;opacity:.75;margin-bottom:14px;display:block;margin-inline:auto}

.danger-zone{margin-top:34px;padding-top:22px;border-top:1px solid var(--line)}
.danger-zone p{font-size:12.5px;color:var(--muk-3);line-height:1.8;margin:0 0 10px;word-break:keep-all}
.danger-zone button{
  background:none;border:1px solid var(--line-2);color:var(--muk-3);
  border-radius:var(--r-pill);padding:.35rem .9rem;font-size:12px;cursor:pointer;font-family:var(--f-body)
}
.danger-zone button:hover{border-color:var(--injoo);color:var(--injoo-ink)}

/* 보관된 리포트 페이지 */
.saved-meta{
  display:flex;flex-wrap:wrap;gap:8px 14px;justify-content:center;
  font-family:var(--f-mono);font-size:11.5px;color:var(--muk-3);margin-top:10px
}
.loading-note{text-align:center;color:var(--muk-3);font-size:13.5px;padding:60px 0}

/* 보관 안 한 리포트를 두고 나가려 할 때 눈에 띄게 */
.keepbox.flash{animation:keepflash 1.5s ease}
@keyframes keepflash{
  0%,100%{border-color:var(--line-2);background:var(--hanji-2)}
  15%,60%{border-color:var(--injoo);background:var(--injoo-soft)}
}
@media (prefers-reduced-motion:reduce){
  .keepbox.flash{animation:none;border-color:var(--injoo);background:var(--injoo-soft)}
}

/* 서랍 안의 구분 제목 */
.sec-title{
  font-family:var(--f-display);font-weight:800;font-size:1.05rem;color:var(--muk);
  margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid var(--line)
}

/* ---------- 결제 패널 ---------- */
.buy-field{margin:18px 0 6px;text-align:left}
.buy-field .f{
  display:block;font-size:12.5px;color:var(--muk-3);margin-bottom:6px;font-family:var(--f-body)
}
.buy-field input{
  width:100%;box-sizing:border-box;background:var(--hanji-2);
  border:1px solid var(--line-2);border-radius:var(--r);
  padding:.8rem .9rem;font-family:var(--f-mono);font-size:1rem;color:var(--muk);
  letter-spacing:.02em
}
.buy-field input:focus{border-color:var(--noerok);outline:none}
.buy-field .buy-note{margin-top:7px;padding-top:0;border-top:0}
.buy-err{
  font-size:13px;color:var(--injoo-ink);margin:10px 0 0;min-height:1.2em;word-break:keep-all
}
.buy-ways{
  font-size:12px;color:var(--muk-3);margin:14px 0 0;text-align:center;
  font-family:var(--f-body);word-break:keep-all
}
.buycard .btn{width:100%;margin-top:16px}
.buycard .buy-price b{font-variant-numeric:tabular-nums;letter-spacing:-.01em}
/* 값은 본문 서체 그대로. 모노스페이스로 쓰면 쉼표가 한 칸을 통째로 먹어 '4 , 900' 처럼 벌어진다 */

/* 결제 전 잠긴 파트 — 제목은 보이고 본문만 잠깁니다 */
.part.locked{opacity:.62}
.part.locked .ptitle{color:var(--muk-2)}
.part.locked .pbody{display:none}
.plock{
  /* .ptitle 이 이미 밑줄을 갖고 있다. 여기 또 선을 그으면 두 줄이 겹친다. */
  font-size:12.5px;color:var(--muk-3);margin-top:11px
}

/* ============================================================
   메뉴 바
   ============================================================ */
.mnav-btn{
  display:inline-flex;flex-direction:column;justify-content:center;gap:4px;
  width:34px;height:34px;padding:0 6px;box-sizing:border-box;
  background:none;border:0;cursor:pointer
}
.mnav-btn i{display:block;height:1.5px;background:var(--muk-2);border-radius:2px;transition:background .15s}
.mnav-btn:hover i{background:var(--noerok)}

.mnav-back{
  position:fixed;inset:0;z-index:130;display:flex;justify-content:flex-end;
  background:rgba(28,30,27,.42);opacity:0;transition:opacity .2s ease;
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)
}
.mnav-back.on{opacity:1}
.mnav{
  width:min(27rem,100%);height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;
  background:var(--hanji);border-left:1px solid var(--line);
  padding:0 0 30px;transform:translateX(16px);transition:transform .2s ease
}
.mnav-back.on .mnav{transform:translateX(0)}

.mnav-head{
  position:sticky;top:0;z-index:1;
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 18px;background:var(--hanji);border-bottom:1px solid var(--line)
}
.mnav-brand{display:inline-flex;align-items:center;gap:.45rem;text-decoration:none;color:var(--muk) !important}
.mnav-brand img{width:26px;height:26px;border-radius:50%}
.mnav-brand span{font-family:var(--f-display);font-weight:800;font-size:1rem;letter-spacing:.06em}
.mnav-x{
  background:none;border:0;color:var(--muk-3);font-size:15px;line-height:1;
  cursor:pointer;padding:8px
}
.mnav-x:hover{color:var(--muk)}

.mnav-acct{padding:10px 12px 4px}
.mnav-cat{
  margin:18px 0 6px;padding:0 20px;
  font-family:var(--f-display);font-size:.82rem;font-weight:600;color:var(--muk-3);
  letter-spacing:.04em
}

/* 항목 한 줄 — 왼쪽 이름, 오른쪽 설명, 화살표 */
.mrow{
  display:grid;grid-template-columns:9.2rem 1fr 1rem;align-items:center;gap:10px;
  width:100%;box-sizing:border-box;text-align:left;
  padding:13px 20px;text-decoration:none;color:inherit;
  background:none;border:0;border-radius:0;cursor:pointer;font-family:var(--f-body)
}
.mrow:hover,.mrow:focus-visible{background:var(--hanji-2)}
.mrow.on{background:var(--noerok-soft)}
.mrow-l{
  display:inline-flex;align-items:center;gap:.5rem;
  font-family:var(--f-display);font-weight:600;font-size:.98rem;color:var(--muk);
  white-space:nowrap
}
.mrow.on .mrow-l{color:var(--noerok)}
.mseal{
  flex:none;display:inline-flex;align-items:center;justify-content:center;
  width:1.55rem;height:1.55rem;border-radius:5px;
  background:var(--hanji-3);color:var(--injoo-ink);
  font-family:var(--f-hanja);font-size:.85rem;font-weight:900;font-style:normal
}
.mrow.on .mseal{background:var(--injoo);color:var(--cta-fg)}
.mrow-d{
  font-size:.83rem;color:var(--muk-3);line-height:1.5;word-break:keep-all;
  min-width:0;overflow-wrap:anywhere
}
.mrow-x{color:var(--line-2);font-size:1.1rem;text-align:right}
.mrow:hover .mrow-x{color:var(--noerok)}

.mnav-foot{
  margin-top:22px;padding:16px 20px 0;border-top:1px solid var(--line)
}
.mnav-foot a{font-size:.83rem;color:var(--muk-3);text-decoration:none}
.mnav-foot a:hover{color:var(--noerok)}

/* 좁은 화면에서는 이름/설명을 위아래로 */
@media (max-width:420px){
  .mrow{grid-template-columns:1fr 1rem;grid-template-areas:"l x" "d x";gap:3px 10px}
  .mrow-l{grid-area:l}
  .mrow-d{grid-area:d;padding-left:2.05rem}
  .mrow-x{grid-area:x;align-self:center}
}
@media (prefers-reduced-motion:reduce){
  .mnav-back,.mnav{transition:none}
}

/* ---------- 이 리포트에서 보는 것 ---------- */
.inside{
  background:var(--hanji-2);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:26px 24px;margin-bottom:18px
}
.inside-h{
  font-family:var(--f-display);font-weight:800;font-size:1.1rem;color:var(--muk);
  margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid var(--line)
}
.inside-list{list-style:none;margin:0;padding:0;counter-reset:none}
.inside-list li{
  display:flex;align-items:flex-start;gap:12px;
  padding:11px 0;border-bottom:1px solid var(--line)
}
.inside-list li:last-child{border-bottom:0}
.inside-n{
  flex:none;width:1.6rem;height:1.6rem;border-radius:5px;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--hanji-3);color:var(--muk-3);
  font-family:var(--f-mono);font-size:.78rem;font-variant-numeric:tabular-nums
}
.inside-t{
  font-size:.98rem;line-height:1.6;color:var(--muk);word-break:keep-all;padding-top:.1rem
}
.inside-note{
  font-size:.85rem;color:var(--muk-3);margin:16px 0 0;
  padding-top:14px;border-top:1px solid var(--line);word-break:keep-all
}
.inside-go{
  display:inline-block;margin-top:12px;font-size:.9rem;font-weight:600;
  color:var(--injoo-ink);text-decoration:none;border-bottom:1px solid currentColor
}
.inside-go:hover{color:var(--noerok)}
@media (max-width:560px){
  .inside{padding:22px 18px}
  .inside-t{font-size:.94rem}
}

/* 로그인 버튼의 로고 */
.wsd-oauth{
  display:flex;align-items:center;justify-content:center;gap:.6rem
}
.wsd-mark{display:inline-flex;align-items:center;flex:none;line-height:0}
.wsd-mark svg{display:block}

/* 네이버 — 공식 초록 */
.wsd-oauth.naver{background:#03C75A;color:#fff;border-color:#02B350}
.wsd-oauth.naver:hover{filter:brightness(1.05);border-color:#02B350}
