/* ============================================================
   EDENIT — API Docs  ·  docs.css   (A안: Conversion Engine 패턴)
   토큰 → 베이스 → 네비/푸터 → 문서 레이아웃 → 컴포넌트 → 반응형 → 접근성
   ============================================================ */

/* ---------- Tokens (A안) ---------- */
:root{
  --ink:#0f1b2d; --ink-soft:#46566b; --paper:#ffffff; --mist:#f4f7fb;
  --line:#e3e9f1; --blue:#0a5ca8; --blue-bright:#1d7fd6; --amber:#e8920c;
  --ok:#1a7f4b; --warn:#9a5b00; --err:#b3261e;
  --code-bg:#0f1b2d;
  --r:14px; --container:1200px; --nav-h:68px;
  --shadow:0 18px 50px -24px rgba(15,27,45,.35);
}

/* ---------- Base ---------- */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);
  font-family:"Inter","Pretendard","Malgun Gothic",sans-serif;font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,.display{font-family:"Space Grotesk","Inter",sans-serif;letter-spacing:-.02em}
.mono{font-family:"JetBrains Mono",monospace}
a{text-decoration:none;color:var(--blue)}
.container-x{max-width:var(--container);margin:0 auto;padding:0 22px}
.eyebrow{font:600 12px/1 "JetBrains Mono",monospace;letter-spacing:.18em;text-transform:uppercase;color:var(--blue)}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:4px}
code{font-family:"JetBrains Mono",monospace;font-size:.9em;color:var(--err);background:#f6f8fb;border:1px solid var(--line);border-radius:5px;padding:1px 6px}

/* ---------- Buttons ---------- */
.btn-blue{background:var(--blue);color:#fff;border-radius:9px;padding:9px 16px;font-weight:600;border:none;display:inline-flex;align-items:center;gap:7px;cursor:pointer;transition:.18s;font-size:14px}
.btn-blue:hover{background:#084c8c;color:#fff}
.btn-ghost{border:1px solid var(--line);color:var(--ink);border-radius:9px;padding:9px 16px;font-weight:600;background:#fff;display:inline-flex;align-items:center;gap:7px;cursor:pointer}
.btn-ghost:hover{border-color:var(--blue);color:var(--blue)}

/* ---------- Navbar ---------- */
.nav-x{position:fixed;top:0;left:0;right:0;z-index:1030;transition:.25s;background:rgba(255,255,255,.9);backdrop-filter:blur(12px);border-bottom:1px solid transparent}
.nav-x.scrolled{border-bottom-color:var(--line)}
.nav-x .inner{display:flex;align-items:center;gap:28px;height:var(--nav-h)}
.brand{display:flex;align-items:center;gap:10px;font:700 19px/1 "Space Grotesk";color:var(--ink)}
.brand .dot{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,var(--blue),var(--blue-bright));display:grid;place-items:center;color:#fff;font-size:13px}
.nav-links{display:flex;gap:6px;margin-left:auto;align-items:center}
.nav-links>a,.nav-links .navlink{color:var(--ink-soft);font-weight:500;padding:8px 14px;border-radius:8px;font-size:15px;background:none;border:none;cursor:pointer;font-family:inherit}
.nav-links>a:hover,.nav-links .navlink:hover{color:var(--ink);background:var(--mist)}
.nav-links>a.active{color:var(--blue)}
.nav-drop{position:relative}
.nav-drop .menu{position:absolute;top:calc(100% + 8px);left:0;min-width:230px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:8px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:.18s;list-style:none;margin:0}
.nav-drop:hover .menu,.nav-drop:focus-within .menu,.nav-drop .menu.open{opacity:1;visibility:visible;transform:none}
.nav-drop .menu a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;font-size:14px;color:var(--ink)}
.nav-drop .menu a:hover{background:var(--mist);color:var(--blue)}
.nav-drop .menu a.active{background:var(--mist);color:var(--blue)}
.nav-drop .menu i{color:var(--blue);font-size:15px}
.navtoggle{margin-left:auto;border:none;background:none;font-size:26px;display:none;color:var(--ink);cursor:pointer}
.offcanvas-menu{padding:10px}
.offcanvas-menu a{display:block;padding:13px 14px;border-radius:9px;font-weight:600;color:var(--ink)}
.offcanvas-menu a:hover{background:var(--mist)}
.offcanvas-menu .grp{font:600 11px/1 "JetBrains Mono";letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);padding:14px 14px 4px}
.offcanvas-menu .sub a{padding-left:28px;font-weight:500;color:var(--ink-soft)}

/* ---------- Page header ---------- */
.doc-hero{padding:calc(var(--nav-h) + 46px) 0 34px;background:radial-gradient(820px 320px at 88% -10%,#eaf2fb 0,transparent 60%),linear-gradient(#fff,#fbfdff);border-bottom:1px solid var(--line)}
.doc-hero h1{font-size:clamp(28px,4vw,42px);font-weight:700;margin:12px 0 12px}
.doc-hero p{color:var(--ink-soft);max-width:680px;margin:0;font-size:17px}
.bc{font:500 13px/1 "JetBrains Mono";color:var(--ink-soft)}
.bc a{color:var(--ink-soft)} .bc .sep{margin:0 6px;color:#b9c4d4}

/* ---------- Doc layout (sidebar + content) ---------- */
.doc-wrap{display:grid;grid-template-columns:248px 1fr;gap:42px;padding:44px 0 90px;align-items:start}
.toc{position:sticky;top:calc(var(--nav-h) + 22px);align-self:start}
.toc .lbl{font:600 11px/1 "JetBrains Mono";letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:12px}
.toc ul{list-style:none;margin:0;padding:0;border-left:1px solid var(--line)}
.toc li a{display:block;padding:7px 14px;font-size:13.5px;color:var(--ink-soft);border-left:2px solid transparent;margin-left:-1px;transition:.15s}
.toc li a:hover{color:var(--ink)}
.toc li a.active{color:var(--blue);border-left-color:var(--blue);font-weight:600}

/* ---------- Content ---------- */
.doc-body{min-width:0}
.doc-body h2{font-size:clamp(22px,2.6vw,30px);margin:46px 0 14px;padding-top:8px;scroll-margin-top:90px}
.doc-body h2:first-child{margin-top:0}
.doc-body p{margin:0 0 14px}
.lead{color:var(--ink-soft);font-size:17px}

.api-method{display:inline-block;font-weight:700;font-size:12px;color:#fff;border-radius:5px;padding:3px 9px;margin-right:8px;vertical-align:middle;font-family:"JetBrains Mono",monospace}
.api-method.get{background:var(--ok)} .api-method.post{background:var(--amber)}
.api-endpoint{display:inline-block;font:700 14px/1.4 "JetBrains Mono",monospace;background:#eef4fb;color:var(--blue);border:1px solid #c4ddf2;border-radius:6px;padding:5px 11px;vertical-align:middle;word-break:break-all}

/* tables */
table.api-table{width:100%;border-collapse:collapse;margin:0 0 18px;font-size:13.5px}
table.api-table th,table.api-table td{border:1px solid var(--line);padding:9px 11px;text-align:left;vertical-align:top}
table.api-table th{background:var(--mist);font-weight:700;white-space:nowrap}
table.api-table td code{color:var(--err)}

/* code blocks */
.code-wrap{position:relative;margin:0 0 16px}
pre.code{background:var(--code-bg);color:#e6edf6;border-radius:10px;padding:16px 18px;overflow:auto;font:500 13px/1.7 "JetBrains Mono",monospace;margin:0}
pre.code .c{color:#8595ab} pre.code .k{color:#7fc8ff} pre.code .s{color:#ffce8a}
.copy-btn{position:absolute;top:9px;right:9px;background:rgba(255,255,255,.1);color:#cfe0f2;border:1px solid rgba(255,255,255,.18);border-radius:7px;padding:5px 10px;font:600 12px/1 "JetBrains Mono";cursor:pointer;transition:.15s}
.copy-btn:hover{background:rgba(255,255,255,.2)}
.copy-btn.done{background:var(--ok);color:#fff;border-color:transparent}

/* callouts */
.note{border-radius:10px;padding:12px 14px;margin:0 0 18px;font-size:14px}
.note.info{background:#fdf6e8;border:1px solid #f0d9a8;color:var(--warn)}
.note.warn{background:#fdeceb;border:1px solid #f0b6b2;color:#8c1d18}
.note b{color:inherit}

/* key callout */
.key-callout{background:var(--mist);border:1px solid #c4ddf2;border-radius:10px;padding:16px;margin:0 0 18px}
.key-callout .lbl{font:600 12px/1 "JetBrains Mono";color:var(--ink-soft);margin-bottom:6px}
.key-callout code{display:block;color:var(--blue);background:#fff;border:1px solid var(--line);border-radius:7px;padding:9px 11px;margin-bottom:12px;word-break:break-all;user-select:all;font-size:13px}
.key-callout code:last-child{margin-bottom:0}

/* footer */
footer{padding:40px 0;border-top:1px solid var(--line);color:var(--ink-soft);font-size:14px}
footer .brand{font-size:16px;color:var(--ink)}

#toTop{position:fixed;right:22px;bottom:22px;width:46px;height:46px;border-radius:50%;background:var(--blue);color:#fff;border:none;display:grid;place-items:center;font-size:18px;opacity:0;pointer-events:none;transition:.25s;z-index:1020;cursor:pointer}
#toTop.show{opacity:1;pointer-events:auto}

/* ---------- Demo modal (레이어팝업) ---------- */
.demo-modal .modal-content{border:none;border-radius:16px;overflow:hidden}
.demo-modal .modal-header{background:var(--ink);color:#fff;border:none;padding:14px 18px}
.demo-modal .modal-title{font:700 16px/1 "Space Grotesk";display:flex;align-items:center;gap:8px}
.demo-modal .btn-close{filter:invert(1) grayscale(1) brightness(1.6)}
.demo-modal .modal-body{padding:0;background:var(--mist)}
.demo-modal iframe{display:block;width:100%;height:80vh;border:0}

/* ---------- Responsive ---------- */
@media(max-width:991px){
  .nav-links{display:none}.navtoggle{display:block}
  .doc-wrap{grid-template-columns:1fr;gap:0}
  .toc{position:static;margin-bottom:28px;border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--mist)}
  .toc ul{border-left:none;display:flex;flex-wrap:wrap;gap:4px}
  .toc li a{border-left:none;border-radius:7px;padding:7px 11px}
  .toc li a.active{background:#fff}
}

/* ---------- Reduced motion ---------- */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition-duration:.001ms!important}
}
