/* 디자인 토큰: 앱(styles.css)과 블로그(scripts/build-blog.mjs가 blog.css 앞에 붙임)가 같이 쓴다 */
:root{
  --bg:#f5f6f9; --panel:#ffffff; --side:#eef1f6; --sunk:#f0f2f6; --line:#e3e7ee; --line2:#d3d9e3;
  --fg:#131a27; --muted:#5d6779; --faint:#8b94a5;
  --accent:#2c56cc; --accent-ink:#ffffff; --accent-soft:#e7edfc;
  --c-call:#1d8657; --c-meet:#b06a00; --c-mail:#2c56cc; --c-msg:#8a4bc4; --c-news:#0b86a5; --c-note:#5d6779;
  --danger:#cc3f2c; --shadow:0 1px 2px rgba(16,24,40,.06),0 8px 24px rgba(16,24,40,.08);
  --f-ui:"IBM Plex Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0d1016; --panel:#151a23; --side:#10141b; --sunk:#1a202b; --line:#252c39; --line2:#323a4a;
  --fg:#e8ebf1; --muted:#9ba4b4; --faint:#6d7588;
  --accent:#7d9cf6; --accent-ink:#0a0f1d; --accent-soft:#1b2644;
  --c-call:#4fc78e; --c-meet:#e6a743; --c-mail:#7d9cf6; --c-msg:#bf93ec; --c-news:#55c4e0; --c-note:#9ba4b4;
  --danger:#f17a62; --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.45); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0d1016; --panel:#151a23; --side:#10141b; --sunk:#1a202b; --line:#252c39; --line2:#323a4a;
  --fg:#e8ebf1; --muted:#9ba4b4; --faint:#6d7588;
  --accent:#7d9cf6; --accent-ink:#0a0f1d; --accent-soft:#1b2644;
  --c-call:#4fc78e; --c-meet:#e6a743; --c-mail:#7d9cf6; --c-msg:#bf93ec; --c-news:#55c4e0; --c-note:#9ba4b4;
  --danger:#f17a62; --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.45); color-scheme:dark}

/* 블로그 정적 페이지 스타일. 빌드 때 tokens.css 뒤에 붙어 dist/blog.css가 된다(scripts/build-blog.mjs). */
*{box-sizing:border-box}
html{color-scheme:light}
@media (prefers-color-scheme:dark){html{color-scheme:dark}}
body.bl{margin:0;background:var(--bg);color:var(--fg);font-family:var(--f-ui);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased}
.bl a{color:var(--accent)}
.bl img{max-width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}
.bl-wrap{max-width:720px;margin:0 auto;padding:0 max(16px,env(safe-area-inset-left,0px))}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.bl-top{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.bl-top-in{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:60px}
.bl-brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px;color:var(--fg)!important;text-decoration:none}
.bl-brand svg{width:26px;height:26px}
.bl-top nav{display:flex;align-items:center;gap:6px}
.bl-top nav a{text-decoration:none;font-size:15px;color:var(--muted);padding:6px 10px;border-radius:8px}
.bl-top nav a:hover{color:var(--fg);background:var(--sunk)}
.bl-btn,.bl-top nav a.bl-btn{display:inline-block;background:var(--accent);color:var(--accent-ink)!important;border-radius:9px;padding:8px 14px;font-weight:600;font-size:15px;text-decoration:none}
.bl-btn:hover{filter:brightness(1.05)}

.bl-crumb{display:flex;flex-wrap:wrap;gap:6px;font-size:13.5px;color:var(--muted);margin:22px 0 10px}
.bl-crumb a{color:var(--muted);text-decoration:none}
.bl-crumb a:hover{color:var(--fg)}
.bl-h1,.bl-post h1{font-size:clamp(26px,6vw,34px);line-height:1.3;letter-spacing:-.02em;margin:6px 0 10px}
.bl-lead{color:var(--muted);margin:0 0 20px}
.bl-meta{color:var(--muted);font-size:14.5px;margin:0 0 24px}
.bl-meta a{color:var(--fg);font-weight:600;text-decoration:none}

.bl-sum,.bl-toc,.bl-cta{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin:0 0 24px}
.bl-sum{border-left:4px solid var(--accent)}
.bl-sum h2,.bl-toc h2{font-size:15px;margin:0 0 8px;color:var(--muted)}
.bl-sum ul,.bl-toc ol{margin:0;padding-left:20px}
.bl-toc a{color:var(--fg);text-decoration:none}
.bl-toc a:hover{color:var(--accent)}

.bl-body h2,.bl-faq h2,.bl-src h2,.bl-related h2,.bl-author+h2{font-size:23px;line-height:1.35;letter-spacing:-.01em;margin:44px 0 12px;scroll-margin-top:76px}
.bl-body h3{font-size:19px;margin:30px 0 8px;scroll-margin-top:76px}
.bl-body p,.bl-body li{margin:0 0 14px}
.bl-body table{width:100%;border-collapse:collapse;font-size:15px;margin:0 0 20px;display:block;overflow-x:auto}
.bl-body th,.bl-body td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.bl-body th{background:var(--sunk)}
.bl-body blockquote{margin:0 0 16px;padding:10px 16px;border-left:3px solid var(--line2);color:var(--muted);background:var(--sunk);border-radius:0 8px 8px 0}
.bl-body code{font-family:var(--f-mono);font-size:.9em;background:var(--sunk);padding:1px 5px;border-radius:5px}

.bl-faq details{border:1px solid var(--line);border-radius:12px;background:var(--panel);margin:0 0 10px;padding:12px 16px}
.bl-faq summary{cursor:pointer;font-weight:600}
.bl-faq details p{margin:8px 0 0;color:var(--muted)}
.bl-src ol{font-size:14px;color:var(--muted);padding-left:20px;word-break:break-all}
.bl-cta{margin-top:40px;text-align:center}
.bl-cta h2{font-size:21px;margin:0 0 6px}
.bl-cta p{color:var(--muted);margin:0 0 14px}

.bl-cards{list-style:none;margin:0 0 40px;padding:0;display:grid;gap:12px}
.bl-cards a{display:block;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 18px;color:var(--fg);text-decoration:none}
.bl-cards a:hover{border-color:var(--accent)}
.bl-cards time{font-size:13.5px;color:var(--muted)}
.bl-cards h2{font-size:18.5px;line-height:1.4;margin:4px 0}
.bl-cards p{margin:0;color:var(--muted);font-size:15px}
.bl-empty{color:var(--muted);padding:30px 0}
.bl-topics,.bl-tags{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px}
.bl-topics a,.bl-tags span{font-size:14px;border:1px solid var(--line2);border-radius:999px;padding:4px 12px;color:var(--fg);text-decoration:none;background:var(--panel)}
.bl-role{color:var(--muted);margin:0 0 10px}

.bl-foot{margin-top:56px;border-top:1px solid var(--line);padding:24px 0 40px;font-size:13.5px;color:var(--muted)}
.bl-foot nav{display:flex;flex-wrap:wrap;gap:4px 14px;margin-bottom:10px}
.bl-foot a{color:var(--muted);text-decoration:none}
.bl-foot a:hover{color:var(--fg)}
.bl-foot p{margin:0}
.bl-draft{margin:16px 0 0;padding:10px 14px;border-radius:10px;background:var(--accent-soft);color:var(--fg);font-size:14.5px;font-weight:600}
/* 앱 화면 캡처는 휴대폰 크기라 너무 크게 보이지 않게 줄인다 */
.bl-body img{display:block;margin:8px auto 22px;max-width:min(100%,340px)}
