:root{
  /* 라이트 모드, 회색 단색. 포인트 색 없음(goodboy 2026-09-30) */
  --bg-canvas:#f4f4f5;
  --bg-surface:#ffffff;
  --fg-primary:#1c1c1e;
  --fg-muted:#5c5c63;
  --fg-subtle:#8e8e95;
  --border:#e2e2e6;
  --gold:#2c2c30;
  --gold-dark:#2c2c30;
  --gold-tint:#ebebee;
  --hover:#ededf0;
  --sidebar-w:288px;
  --content-max:760px;
  --sans:"Pretendard Variable",Pretendard,-apple-system,system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;font-family:var(--sans);color:var(--fg-primary);
  background:var(--bg-canvas);line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}

/* Layout */
.layout{display:flex;min-height:100vh;max-width:1240px;margin:0 auto}

/* Sidebar */
.sidebar{
  width:var(--sidebar-w);flex:0 0 var(--sidebar-w);
  border-right:1px solid var(--border);background:var(--bg-surface);
  position:sticky;top:0;height:100vh;overflow-y:auto;padding:28px 20px;
}
.brand{display:flex;align-items:center;gap:10px;margin-bottom:28px;padding:0 8px}
.brand img{width:28px;height:28px;border-radius:8px;display:block}
.brand b{font-size:15px;font-weight:600;letter-spacing:-0.01em}
.brand span{font-size:12px;color:var(--fg-subtle);font-family:var(--mono)}

.nav-label{font-size:11px;font-family:var(--mono);text-transform:uppercase;
  letter-spacing:0.08em;color:var(--fg-subtle);padding:0 8px;margin:18px 0 8px}
.nav a{
  display:block;padding:7px 10px;border-radius:8px;font-size:13.5px;
  color:var(--fg-muted);transition:background .15s,color .15s;border-left:2px solid transparent;
}
.nav a:hover{background:var(--hover);color:var(--fg-primary)}
.nav a.active{color:var(--gold-dark);background:var(--gold-tint);font-weight:600}
.nav .page{color:var(--fg-primary);font-weight:600;font-size:13.5px}

/* Main */
.main{flex:1;min-width:0;padding:0}
.topbar{
  position:sticky;top:0;z-index:20;display:none;align-items:center;gap:12px;
  padding:12px 18px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);
}
.hamb{width:38px;height:38px;border:1px solid var(--border);border-radius:9px;
  background:var(--bg-surface);display:grid;place-items:center;cursor:pointer}
.hamb span{display:block;width:16px;height:2px;background:var(--fg-primary);position:relative}
.hamb span::before,.hamb span::after{content:"";position:absolute;left:0;width:16px;height:2px;background:var(--fg-primary)}
.hamb span::before{top:-5px}.hamb span::after{top:5px}
.topbar b{font-size:14px}

.content{max-width:var(--content-max);margin:0 auto;padding:56px 32px 120px}
.crumb{font-family:var(--mono);font-size:12px;color:var(--fg-subtle);margin-bottom:14px}
.crumb b{color:var(--gold-dark);font-weight:600}
h1{font-size:32px;line-height:1.25;letter-spacing:-0.02em;margin:0 0 10px}
.lead{font-size:16px;color:var(--fg-muted);margin:0 0 8px}
.content h2{font-size:21px;letter-spacing:-0.01em;margin:52px 0 14px;padding-top:8px;scroll-margin-top:80px}
.content h3{font-size:16px;margin:28px 0 10px;color:var(--fg-primary)}
.content p{margin:0 0 14px;font-size:15px}
.content ol,.content ul{margin:0 0 16px;padding-left:22px}
.content li{margin:6px 0;font-size:15px}
.content strong{font-weight:600}
.content code{font-family:var(--mono);font-size:12.5px;background:#ebebee;
  padding:2px 6px;border-radius:6px;color:#2c2c30}
.path{font-family:var(--mono);font-size:13px;background:var(--bg-surface);
  border:1px solid var(--border);border-radius:8px;padding:3px 8px;color:var(--fg-primary);white-space:nowrap}
.callout{background:var(--gold-tint);border:1px solid #d6d6db;border-radius:12px;
  padding:14px 16px;margin:18px 0;font-size:14px;color:#3a3a40}
.callout b{color:var(--fg-primary)}
figure{margin:18px 0;padding:0}
figure img{display:block;width:100%;max-width:360px;border:1px solid var(--border);border-radius:14px;background:#fff}
figure.pair{display:flex;gap:14px;flex-wrap:wrap}
figure.pair img{flex:1 1 200px;max-width:300px}
figcaption{font-size:13px;color:var(--fg-subtle);margin-top:8px}
.content a.inline{color:var(--gold);font-weight:600}
nav.more{margin-top:56px;padding-top:20px;border-top:1px solid var(--border)}
nav.more h2{font-size:15px;color:var(--fg-subtle);margin:0 0 10px}
nav.more ul{list-style:none;padding:0;margin:0}
nav.more li{margin:6px 0}
nav.more a{color:var(--gold)}
footer{margin-top:48px;color:var(--fg-subtle);font-size:13px}
footer a{color:var(--gold)}
.step{background:var(--bg-surface);border:1px solid var(--border);border-radius:14px;padding:18px 20px;margin:16px 0}
.step h3{margin-top:0}
table{border-collapse:collapse;width:100%;margin:16px 0;font-size:14px}
th,td{border:1px solid var(--border);padding:9px 12px;text-align:left}
th{background:var(--bg-canvas);font-weight:600}
.divider{height:1px;background:var(--border);border:0;margin:40px 0}
.foot{color:var(--fg-subtle);font-size:13px;font-family:var(--mono)}

.scrim{display:none}

@media (max-width:900px){
  .sidebar{position:fixed;left:0;top:0;z-index:40;transform:translateX(-100%);
    transition:transform .22s ease;box-shadow:0 0 40px rgba(0,0,0,.18)}
  body.nav-open .sidebar{transform:translateX(0)}
  .topbar{display:flex}
  .scrim{display:block;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:35;opacity:0;
    pointer-events:none;transition:opacity .2s}
  body.nav-open .scrim{opacity:1;pointer-events:auto}
  .content{padding:32px 20px 100px}
  h1{font-size:26px}
}

/* 제목 옆 작은 꼬리표 */
.tag{color:var(--fg-subtle);font-size:14px;font-weight:500;margin-left:6px}
