/* 내 서재(app.html) v4 옷 — 2026-10-04 사장님: "내 서재도, EN 도, 보는 방식도 새 레이아웃에 맞게"
   app.html 의 화면·기능은 그대로 두고 겉모습만 홈 v4(흰 바탕·GD Sans·검정 버튼·해주황 강조)로 갈아입힌다.
   · 위: 홈과 같은 흰 머리글(gd-app-v4.js 가 그린다)
   · 로그인·가입·코드: PC 는 왼쪽 사진 판 + 오른쪽 입력칸, 폰은 입력칸만
   · 서재·설정·안내: PC 는 가운데 1080px, 아래 탭은 위쪽 알약 탭으로
   · 보기(책·지도·계산기): 화면 전체를 쓰는 읽기 모드, 흰 막대 + 밝은 회색 바탕, PC 는 왼쪽에 쪽 목록 */
@font-face{font-family:"GD Serif";src:url(fonts/gd-serif-700.woff2) format("woff2");font-weight:500 900;font-display:swap}
@font-face{font-family:"GD Body";src:url(fonts/gd-body-400.woff2) format("woff2");font-weight:300 500;font-display:swap}
@font-face{font-family:"GD Sans";src:url(fonts/gd-sans-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"GD Sans";src:url(fonts/gd-sans-600.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"GD Sans";src:url(fonts/gd-sans-800.woff2) format("woff2");font-weight:700 800;font-display:swap}
:root{--navy:#111;--navyD:#000;--gold:#E8552F;--sun:#E8552F;--teal:#1F5C63;--cream:#fff;--card:#fff;--line:#E7E6E1;--ink:#111;--mut:#6B6B66;
  --soft:#F5F4F0;--gx-h:64px}
html,body,html.gd-direct,html.gd-direct body{background:#fff!important}
body{display:block!important;min-height:0!important;padding-top:var(--gx-h);letter-spacing:-.02em;color:#111}
body,body *:not(svg):not(path):not(circle):not(rect){font-family:"GD Sans",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif!important}
#appRoot{max-width:none!important;width:100%!important;height:calc(100vh - var(--gx-h))!important;height:calc(100dvh - var(--gx-h))!important;max-height:none!important;
  border-radius:0!important;box-shadow:none!important;margin:0!important;background:#fff!important}

/* ── 머리글 ── */
.gx-hd{position:fixed;top:0;left:0;right:0;z-index:200;height:var(--gx-h);background:rgba(255,255,255,.96);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid #E7E6E1}
.gx-in{max-width:1280px;margin:0 auto;height:100%;padding:0 32px;display:flex;align-items:center;gap:40px}
.gx-logo{display:flex;align-items:center;gap:9px;font-weight:800;font-size:20px;letter-spacing:-.04em;color:#111;text-decoration:none}
.gx-nav{display:flex;gap:28px;font-size:15.5px;font-weight:600}
.gx-nav a{color:#2A2A27;text-decoration:none}.gx-nav a:hover{color:#111;text-decoration:underline;text-underline-offset:6px}
.gx-r{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600}
.gx-lang{padding:8px 10px;color:#2A2A27;text-decoration:none}
.gx-my{display:inline-flex;align-items:center;gap:7px;height:42px;padding:0 16px 0 12px;border:1px solid #E7E6E1;border-radius:999px;color:#111;text-decoration:none;background:#fff}
.gx-my svg{width:20px;height:20px}
.gx-my[aria-current]{background:#111;color:#fff;border-color:#111}

/* ── 로그인·가입·코드: 왼쪽 사진 판 ── */
.gx-side{display:none;position:fixed;z-index:1;left:16px;top:calc(var(--gx-h) + 16px);bottom:16px;width:calc(50% - 32px);border-radius:24px;overflow:hidden;background:#8db8e6}
.gx-side img{width:100%;height:100%;object-fit:cover;object-position:50% 40%}
.gx-side:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 45%,rgba(0,0,0,.55))}
.gx-side p{position:absolute;z-index:2;left:40px;right:40px;bottom:40px;color:#fff;font-size:32px;font-weight:800;line-height:1.3;letter-spacing:-.045em}
.gx-side p small{display:block;font-size:15px;font-weight:600;letter-spacing:-.01em;margin-bottom:12px;opacity:.9}
.gx-side .gx-word{position:absolute;z-index:2;left:0;right:0;top:8%;text-align:center;color:#fff;font-size:clamp(110px,11vw,180px);font-weight:600;letter-spacing:-.06em;line-height:.9}
#login,#signup,#code,#forgot,#resetpw,#noaccess,#checkout{padding-left:24px!important;padding-right:24px!important}
#signup .pad,#code .pad,#forgot .pad,#resetpw .pad{padding:0!important}
.brand{width:92px!important;margin:0 auto 28px!important}
.fields{max-width:440px;margin-left:auto;margin-right:auto}
.field{margin-bottom:14px}
.field label{font-size:13px!important;color:#3A3A36!important;font-weight:600!important;letter-spacing:0!important}
.field input{border:1px solid #DCDBD5!important;border-radius:12px!important;padding:15px 16px!important;font-size:15.5px!important;color:#111!important}
.field input::placeholder{color:#A9A8A2!important}
.field input:focus{border-color:#111!important;box-shadow:0 0 0 3px rgba(17,17,17,.07)}
.btn{border-radius:12px!important;font-weight:700!important;font-size:15.5px!important;box-shadow:none!important;padding:16px!important;letter-spacing:-.02em}
.btn-nv{background:#111!important;color:#fff!important}.btn-nv:hover{background:#1F5C63!important}
.btn-gd{background:#E8552F!important;color:#fff!important}.btn-gd:hover{filter:brightness(1.06)}
a.btn:not(.btn-gd):not(.btn-nv){background:#F5F4F0;color:#111;display:flex;align-items:center;justify-content:center}
.btn-ka,.btn-gg{font-size:15px!important}
.h-eyebrow{font-style:normal!important;font-size:13px!important;font-weight:700!important;letter-spacing:0!important;color:#E8552F!important}
.h-title{font-size:28px!important;font-weight:800!important;letter-spacing:-.045em!important;color:#111!important;margin:10px 0 8px!important}
.h-desc{font-size:15px!important;color:#6B6B66!important;line-height:1.65!important}
.back{color:#111!important;width:40px!important;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#F5F4F0;font-size:24px!important;margin:16px 0 8px -4px!important}
.back:hover{background:#ECEBE6}
.sep{color:#6B6B66!important;font-size:12.5px!important}.sep:before,.sep:after{background:#E7E6E1!important}
.foot-link,.code-foot,.home-link{font-size:14px!important;color:#6B6B66!important}
.foot-link b,.code-foot b{color:#111!important;text-decoration:underline;text-underline-offset:3px}
.code-mark{background:#111!important;border-radius:16px!important;box-shadow:none!important;width:56px!important;height:56px!important}
.code-box{border:1.5px solid #DCDBD5!important;border-radius:14px!important;font-weight:800!important;color:#111!important;font-size:18px!important}
.code-box:focus{border-color:#111!important}
.code-box::placeholder{color:#B5B4AE!important;font-weight:600}
.code-err{color:#D0462A!important;font-size:13.5px!important}
.hint,.order-card{background:#F5F4F0!important;color:#55554f!important;border-radius:14px!important;font-size:13.5px!important}
.hint b{color:#111!important}
.agree{border-color:#E7E6E1!important;background:#FAFAF8!important;border-radius:14px!important;padding:14px!important}
.agree .ag-all{border-bottom-color:#E7E6E1!important}.agree .ag-all b{color:#111!important}
.agree .ag-list label{color:#3A3A36!important;font-size:13.5px!important}
.agree em{color:#E8552F!important}.agree em.opt{color:#8A8A85!important}
.agree a,.ka-note a{color:#111!important}
.agree input[type=checkbox]{accent-color:#111!important}

/* ── 서재·설정·안내 ── */
.top{padding:24px 24px 0!important}
#library .top-mark{visibility:hidden}
.top-mark .nm{font-weight:800!important;font-size:24px!important;letter-spacing:-.04em!important;color:#111!important}
.home-btn,.out-btn{border:1px solid #E7E6E1!important;background:#fff!important;color:#111!important;height:38px!important;font-size:13.5px!important}
.avatar{background:#111!important;box-shadow:none!important}
.greet{padding:8px 24px 0!important;font-size:26px!important;font-weight:800!important;letter-spacing:-.045em!important;color:#111!important}
.greet small{font-size:14.5px!important;color:#6B6B66!important;margin-top:6px!important}
.sec-eyebrow{font-style:normal!important;font-size:14px!important;font-weight:700!important;letter-spacing:0!important;color:#6B6B66!important;padding:28px 24px 12px!important}
.pick{padding:20px 24px 0!important}
.pick b{font-size:16px!important;color:#8A8A85!important}
.pick b.on{color:#111!important;border-bottom-color:#111!important}
.card{margin:0 16px!important;border:1px solid #E7E6E1!important;border-radius:20px!important;box-shadow:none!important;background:#fff!important}
.card-cover{height:200px!important;background:#D9DED9 var(--cover,none) center/cover no-repeat!important}
.card-cover .cover-sun,.card-cover .cover-mark{display:none!important}
.card-cover:after{background:linear-gradient(180deg,rgba(0,0,0,0) 40%,rgba(0,0,0,.4))!important}
.cover-gn{color:#fff!important;opacity:.9;z-index:2}
.card-tag{background:#fff!important;color:#111!important;border-radius:999px!important;font-size:12px!important;padding:6px 12px!important}
.card-body{padding:22px 20px 22px!important}
.card-title{font-weight:800!important;font-size:22px!important;letter-spacing:-.04em!important;color:#111!important}
.card-meta{font-size:14px!important;color:#6B6B66!important;margin-bottom:18px!important}
.acts{gap:10px!important}
.act{border-radius:12px!important;font-size:15.5px!important;min-height:56px!important;padding:12px 18px!important}
.act-pri{background:#111!important;color:#fff!important}.act-pri:hover{background:#1F5C63!important}
.act-sec{background:#F5F4F0!important;color:#111!important}.act-sec:hover{background:#ECEBE6!important}
.act-sec .ic{stroke:#111!important}
.body-scroll{padding-bottom:96px!important}
.set-wrap{padding:20px 24px 0!important}
.set-sec{color:#6B6B66!important;font-size:12.5px!important;letter-spacing:.04em!important}
.set-row{font-size:15.5px!important;color:#111!important;border-bottom-color:#EEEDE9!important;padding:17px 2px!important}
.set-val{font-size:14px!important;color:#6B6B66!important}
#setNick{color:#111!important}
.set-row .set-val[style*="teal"]{color:#1F5C63!important}
.set-arr{color:#B5B4AE!important}
.ht-lead{font-size:15px!important;color:#6B6B66!important}
.ht-n{background:#111!important;color:#fff!important}
.ht-step b{font-size:16px!important;color:#111!important}
.ht-step p{font-size:14.5px!important;color:#6B6B66!important}
.ht-step{border-bottom-color:#EEEDE9!important}
.ht-link,.ht-note a{color:#1F5C63!important}
.ht-note{background:#F5F4F0!important;border:0!important;color:#55554f!important;border-radius:14px!important;font-size:14px!important}
/* 폰 아래 탭(앱 안) — 홈과 같은 흰 납작 막대 */
.nav{height:auto!important;padding:8px 0 calc(8px + env(safe-area-inset-bottom))!important;background:rgba(255,255,255,.96)!important;border-top:1px solid #E7E6E1!important}
.ni,.nav-i{font-size:11.5px!important;color:#8A8A85!important;font-weight:600!important}
.ni.on,.nav-i.on{color:#111!important}
.nav-i{cursor:pointer;padding:10px 0}
.toast{background:rgba(17,17,17,.92)!important;color:#fff!important}

/* ── 보기: 화면 전체를 쓰는 읽기 모드 ── */
.viewer.active{position:fixed!important;left:0!important;top:0!important;right:0;bottom:0;transform:none!important;width:100%!important;height:100%!important;border-radius:0!important;box-shadow:none!important;z-index:300!important;background:#EDECE8!important}
.vbar{height:60px!important;background:#fff!important;color:#111!important;border-bottom:1px solid #E7E6E1;padding:0 14px!important;gap:10px!important}
.vbar .vb{width:40px;height:40px;border-radius:50%;background:#F5F4F0;display:flex;align-items:center;justify-content:center;font-size:24px!important;flex:none}
.vbar .vb:hover{background:#ECEBE6}
.vbar .vt{font-weight:800!important;font-size:16px!important;letter-spacing:-.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.vpg{background:#F5F4F0!important;color:#111!important;font-weight:700!important;font-size:13px!important;padding:6px 12px!important;flex:none}
.vdl{background:#fff!important;color:#111!important;border:1px solid #E7E6E1;font-weight:600!important;font-size:13.5px!important;padding:8px 14px!important;gap:6px!important;margin-left:4px!important;flex:none}
.vdl:hover{border-color:#111}
.vdl svg{width:15px!important;height:15px!important}
#guideScroll{background:#EDECE8!important}
#pdfview .gpage{background:#E2E1DC!important;margin:0 auto 8px!important}
#mapview .vcontent{background:#E9E8E4!important}
.map-zoom img{background:#E9E8E4!important}
#mapLoading{color:#111!important}
.map-hint{background:rgba(17,17,17,.78)!important;color:#fff!important}
.map-btns button{background:#fff!important;color:#111!important;box-shadow:0 4px 14px rgba(0,0,0,.16)!important}
.mini{border-color:#111!important;background:#fff!important}
.mini .box{border-color:#E8552F!important;background:rgba(232,85,47,.16)!important}
.glink{-webkit-tap-highlight-color:rgba(232,85,47,.25)!important}
@media(hover:hover){.glink:hover{background:rgba(232,85,47,.1)!important;outline:1.5px solid rgba(232,85,47,.5)!important}}
.vrail{display:none}

/* 쿠키 띠 */
body #cookieBar{background:rgba(17,17,17,.94)!important;backdrop-filter:blur(12px)}
body #cookieBar p{color:#D9D9D4!important}body #cookieBar a{color:#fff!important}
body #cookieBar .cb-ok{background:#D04520!important;color:#fff!important}
body #cookieBar .cb-no{background:rgba(255,255,255,.12)!important;color:#fff!important}

/* ── PC ── */
@media(min-width:1024px){
  body[data-screen=login] .gx-side,body[data-screen=signup] .gx-side,body[data-screen=code] .gx-side,body[data-screen=forgot] .gx-side,
  body[data-screen=resetpw] .gx-side,body[data-screen=noaccess] .gx-side,body[data-screen=checkout] .gx-side{display:block}
  #login,#signup,#code,#forgot,#resetpw,#noaccess,#checkout{padding-left:calc(50% + max(40px,(50% - 440px) / 2))!important;padding-right:max(40px,(50% - 440px) / 2)!important}
  #signup,#code,#forgot,#resetpw{justify-content:center}
  #signup .pad,#code .pad,#forgot .pad,#resetpw .pad{padding:40px 0!important}
  .h-title{font-size:32px!important}
  #library,#settings,#howto,#review{padding:0 max(32px,(100% - 1080px) / 2)!important}
  .top,.greet,.sec-eyebrow,.pick,.set-wrap{padding-left:0!important;padding-right:0!important}
  .top{padding-top:28px!important}
  .greet{font-size:34px!important}
  .card{margin:0!important;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);min-height:400px}
  .card-cover{height:auto!important;min-height:400px}
  .card-body{padding:40px 40px!important;display:flex;flex-direction:column;justify-content:center}
  .card-title{font-size:30px!important}
  .card-meta{font-size:15px!important;margin-bottom:26px!important}
  .set-wrap,#settings .top,#howto .top{max-width:760px}
  /* 아래 탭 → 위쪽 알약 탭 */
  .nav{position:static!important;order:-1;justify-content:flex-start!important;gap:6px;background:none!important;border:0!important;padding:24px 0 0!important;backdrop-filter:none!important}
  .ni,.nav-i{flex-direction:row!important;gap:7px!important;font-size:15px!important;padding:10px 18px!important;border-radius:999px;color:#3A3A36!important;background:#F5F4F0}
  .ni svg{width:18px!important;height:18px!important}
  .ni.on,.nav-i.on{background:#111!important;color:#fff!important}
  .body-scroll{padding-bottom:56px!important;overflow:visible!important;flex:none!important}
  /* 책: 왼쪽 쪽 목록 */
  .vrail{display:block;position:absolute;left:0;top:60px;bottom:0;width:184px;overflow-y:auto;background:#fff;border-right:1px solid #E7E6E1;padding:16px 0 24px;scrollbar-width:thin}
  .vr-i{display:block;width:100%;padding:8px 0;background:none;border:0;cursor:pointer;text-align:center}
  .vr-ph{display:block;width:112px;aspect-ratio:630/1092;margin:0 auto;border-radius:4px;overflow:hidden;background:#EDECE8;outline:2px solid transparent;outline-offset:2px;transition:outline-color .15s}
  .vr-ph img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
  .vr-n{display:block;font-size:12px;font-weight:600;color:#8A8A85;margin-top:6px}
  .vr-i:hover .vr-ph{outline-color:#CFCEC8}
  .vr-i.on .vr-ph{outline-color:#111}.vr-i.on .vr-n{color:#111}
  #pdfview .vcontent{margin-left:184px}
  #pdfview .gpage{max-width:min(880px,calc(100vw - 280px))!important;margin:24px auto!important;box-shadow:0 8px 28px rgba(0,0,0,.12);border-radius:4px;overflow:hidden}
}
@media(min-width:1024px) and (max-width:1199px){.gx-in{gap:28px}.gx-nav{gap:20px}}
/* ── 폰 ── */
@media(max-width:1023.98px){
  :root{--gx-h:56px}
  .gx-in{padding:0 12px 0 20px;gap:0}
  .gx-logo{font-size:19px}
  .gx-nav{display:none}
  .gx-r{gap:2px}
  .gx-my{height:38px;padding:0 12px 0 10px;font-size:14px}
  #login.sc-center{justify-content:flex-start;padding-top:40px!important}
  .vbar .vt{font-size:15px!important}
  .vdl{padding:7px 10px!important;font-size:12.5px!important}
  .vpg{margin-left:auto}
  body:has(#cookieBar.show) .viewer.active .vcontent{padding-bottom:84px}
}
@media(max-width:420px){.vdl{font-size:0!important;gap:0!important;padding:8px!important}.vdl svg{width:17px!important;height:17px!important}}

/* 구입코드 받아 온 사람 안내(로그인·가입 화면 위) — 2026-10-06 */
.gc-note{max-width:440px;margin:0 auto 20px;background:#FFF1EC;border:1px solid #F5C9B8;color:#5A2614;border-radius:14px;padding:14px 16px;font-size:14.5px;line-height:1.6}
.gc-note b{color:#C2421F;font-weight:800;letter-spacing:.02em;word-break:break-all}
#signup .gc-note{margin:16px 0 0;max-width:none}

/* ════════ 읽기 쉬움 — 2026-10-06 (check_readability.py 결과) ════════ */
html:lang(ko) body,#appRoot{word-break:keep-all;overflow-wrap:break-word}
.agree em{color:#C2421F!important}.agree em.opt{color:#6B6B66!important}
.agree .ag-list label{font-size:14.5px!important}
.ka-note{font-size:13px!important;color:#6B6B66!important;line-height:1.6!important}
.hint,.hint b{font-size:14.5px!important}
.btn-gd{background:#D04520!important}
.h-eyebrow{color:#C2421F!important}
.cover-gn{font-size:12px!important}
.card-tag{font-size:13px!important}
.set-row span[style*="c0584a"]{color:#B23A2A!important}
@media (max-width:1023.98px){.ni,.nav-i{color:#6B6B66!important;font-size:12px!important}.ni.on,.nav-i.on{color:#111!important}}
.ka-note{font-size:14px!important}
.ht-step p{max-width:62ch}
.set-sec{font-size:13px!important}
.ht-link{font-size:14px!important}
.card-tag{font-size:13.5px!important}

/* 브랜드 서체 — 제목만 Hahmlet (2026-10-06) */
body :is(.h-title,.greet,.card-title,.top-mark .nm,.gx-side p,.gx-word,.ht-step b,.code-box){font-family:"GD Serif","Apple SD Gothic Neo","Malgun Gothic",serif!important;font-weight:700!important;letter-spacing:-.025em!important}
body .greet small{font-family:"GD Sans",sans-serif!important;font-weight:400!important}
body .ht-step p,body .ht-lead{font-family:"GD Body","Apple SD Gothic Neo","Malgun Gothic",serif!important;font-size:15.5px!important;line-height:1.75!important}
/* 브랜드 색 규칙(2026-10-10): 작은 제목은 청록, 주황은 구매·등록 버튼에만 */
.h-eyebrow{color:#1F5C63!important}
.agree em{color:#1F5C63!important}

/* PC 지도 「장소 사진」 (gd-app-v4.js) */
.gd-mapph{position:absolute;left:18px;bottom:calc(22px + env(safe-area-inset-bottom,0px));z-index:8;height:44px;padding:0 20px;border:0;border-radius:999px;background:#111;color:#fff;font:700 14.5px/1 "GD Sans",system-ui,sans-serif;letter-spacing:-.02em;cursor:pointer;box-shadow:0 8px 24px rgba(17,17,17,.22)}
.gd-mapph[hidden]{display:none}
.gd-mapph:hover{background:#1F5C63}
.gd-mapcards{position:absolute;inset:0;z-index:20;background:#F5F4F0;display:flex;flex-direction:column}
.gd-mapcards[hidden]{display:none}
.gmc-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;height:64px;padding:0 24px;background:#fff;border-bottom:1px solid #E7E6E1;flex:none}
.gmc-bar b{font:700 18px/1.2 "GD Serif",serif;color:#111}
.gmc-x{height:40px;padding:0 18px;border-radius:999px;border:1px solid #E7E6E1;background:#fff;color:#111;font:700 14px/1 "GD Sans",system-ui,sans-serif;cursor:pointer}
.gmc-x:hover{background:#111;color:#fff;border-color:#111}
.gmc-sc{flex:1;overflow:auto;padding:28px 24px 60px}
.gmc-in{max-width:860px;margin:0 auto}
.gmc-crop{overflow:hidden;border-radius:18px;background:#F1E9D8;box-shadow:0 10px 30px rgba(17,17,17,.08)}
.gmc-crop img{display:block;width:100%;height:auto}
body:has(#cookieBar.show) #mapview .gd-mapph{bottom:calc(96px + env(safe-area-inset-bottom,0px))}
.vbadge{display:none!important}  /* 「가이드 v2607」 내부 판 번호 — 손님에게 보일 이유가 없다(2026-10-13) */
