:root{
  --bg:#f6f7f9;--card:#fff;--ink:#1c2128;--sub:#5d6672;--line:#e1e5ea;
  --pri:#1d4f91;--pri-soft:#e8f0fb;--accent:#d9480f;--ok:#2b8a3e;--ok-soft:#e6f4ea;--note:#fff8db;--note-ink:#5c4a00;--code:#0f172a;--on-pri:#fff;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){--bg:#0f1318;--card:#171c23;--ink:#e6e9ee;--sub:#9aa4b1;--line:#2a313b;--pri:#6ea4ea;--pri-soft:#1b2a3f;--accent:#ff8a50;--ok:#5cc275;--ok-soft:#163222;--note:#2a2410;--note-ink:#f1dc8a;--code:#0b0f14;--on-pri:#0b1424}
}
:root[data-theme="dark"]{--bg:#0f1318;--card:#171c23;--ink:#e6e9ee;--sub:#9aa4b1;--line:#2a313b;--pri:#6ea4ea;--pri-soft:#1b2a3f;--accent:#ff8a50;--ok:#5cc275;--ok-soft:#163222;--note:#2a2410;--note-ink:#f1dc8a;--code:#0b0f14;--on-pri:#0b1424}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.7 "Pretendard","Malgun Gothic","Apple SD Gothic Neo",system-ui,sans-serif;word-break:keep-all;overflow-wrap:break-word}
a{color:var(--pri)}
.wrap{max-width:880px;margin:0 auto;padding:0 16px}
.mobile{display:none;background:var(--note);color:var(--note-ink);padding:12px 16px;font-size:15px;text-align:center;border-bottom:1px solid var(--line)}
.hero{padding:40px 0 26px}
.badge{display:inline-block;font-size:13px;font-weight:700;color:var(--pri);background:var(--pri-soft);border-radius:99px;padding:3px 12px}
h1{font-size:clamp(30px,5.4vw,44px);line-height:1.22;margin:14px 0 12px;letter-spacing:-.02em}
.lead{font-size:18px;color:var(--sub);margin:0}
.cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px;align-items:center}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);color:var(--ink);text-decoration:none;font:700 16px inherit;font-family:inherit;border-radius:12px;padding:12px 18px;cursor:pointer}
.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff}
.btn.big{font-size:20px;padding:16px 30px}
.sublink{display:block;margin-top:12px;font-size:15px}
.pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.pills span{font-size:14px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:5px 10px}
main.wrap{display:block;padding-top:28px}
section{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:28px;margin-bottom:22px;scroll-margin-top:90px}
h2{font-size:24px;margin:0 0 4px;letter-spacing:-.01em}
h2 .tag{font-size:13px;font-weight:800;color:var(--pri);display:block;letter-spacing:.02em}
.desc{color:var(--sub);margin:0 0 20px}
.needline{background:var(--bg);border-radius:10px;padding:10px 14px;font-size:15px;margin:0 0 22px}
ol.steps{list-style:none;padding:0;margin:0;counter-reset:s}
ol.steps>li{counter-increment:s;position:relative;padding:0 0 28px 54px}
ol.steps>li:last-child{padding-bottom:0}
ol.steps>li::before{content:counter(s);position:absolute;left:0;top:0;width:38px;height:38px;border-radius:50%;background:var(--pri);color:#fff;font-weight:800;font-size:18px;display:flex;align-items:center;justify-content:center}
ol.steps>li:not(:last-child)::after{content:"";position:absolute;left:18px;top:44px;bottom:6px;width:2px;background:var(--line)}
ol.steps>li b.t{display:block;font-size:18px;margin-bottom:2px}
.muted{color:var(--sub);font-size:15px}
kbd{font:700 13px/1 Consolas,monospace;border:1px solid var(--line);border-bottom-width:3px;border-radius:6px;padding:3px 7px;background:var(--bg);color:var(--ink)}
.bm-box{margin:12px 0 4px;padding:18px;border:2px dashed var(--pri);border-radius:14px;background:var(--pri-soft);display:flex;flex-wrap:wrap;align-items:center;gap:14px}
.bm-box .muted{flex:1 1 220px}
a.bm{display:inline-flex;align-items:center;gap:6px;background:var(--pri);color:#fff;text-decoration:none;font-weight:800;font-size:17px;border-radius:12px;padding:13px 20px;cursor:grab;box-shadow:0 3px 0 rgba(0,0,0,.18);animation:nudge 2.4s ease-in-out infinite}
a.bm:active{cursor:grabbing;animation:none}
@keyframes nudge{0%,70%,100%{transform:translateY(0)}80%{transform:translateY(-5px)}90%{transform:translateY(0)}}
.ill{display:block;width:100%;max-width:520px;height:auto;margin:12px 0 4px;border-radius:12px}
/* 끌어다 놓기 애니메이션 */
.drag-ill .mover{animation:dragmove 4.5s ease-in-out infinite}
.drag-ill .ghost{animation:ghost 4.5s linear infinite}
.drag-ill .placed{animation:placed 4.5s linear infinite}
.drag-ill .cur-press{animation:press 4.5s linear infinite}
@keyframes dragmove{0%,22%{transform:translate(0,0)}62%,100%{transform:translate(-83px,-81px)}}
@keyframes ghost{0%,14%{opacity:0}18%,62%{opacity:.9}66%,100%{opacity:0}}
@keyframes placed{0%,63%{opacity:0}67%,94%{opacity:1}100%{opacity:0}}
@keyframes press{0%,14%{opacity:0}18%,62%{opacity:1}64%,100%{opacity:0}}
@media (prefers-reduced-motion: reduce){
  a.bm{animation:none}
  .drag-ill .mover,.drag-ill .ghost,.drag-ill .placed,.drag-ill .cur-press{animation:none}
  .drag-ill .ghost,.drag-ill .cur-press{opacity:0}
  .drag-ill .placed{opacity:1}
}
.note{border-left:4px solid var(--accent);background:var(--bg);padding:10px 14px;border-radius:0 10px 10px 0;font-size:15px;margin:16px 0 0}
.note.ok{border-color:var(--ok)}
table{width:100%;border-collapse:collapse;font-size:15px;margin:10px 0}
th,td{border-bottom:1px solid var(--line);padding:8px 6px;text-align:left}
th{color:var(--sub);font-weight:600;font-size:14px}
.tbl-wrap{overflow-x:auto;max-width:100%}
code{font-size:.92em;background:var(--bg);border-radius:5px;padding:1px 5px}
pre{background:var(--code);color:#e5e7eb;border-radius:10px;padding:12px;overflow:auto;font:13px/1.5 Consolas,monospace;white-space:pre-wrap;word-break:break-all;max-height:110px}
details{border-top:1px solid var(--line);padding:14px 0}
#faq details:last-of-type{border-bottom:1px solid var(--line)}
summary{cursor:pointer;font-weight:700}
details>p,details>ul,details>ol{margin:8px 0 0;color:var(--sub)}
details.inline{border:0;padding:8px 0 0}
details.inline summary{font-weight:600;color:var(--sub);font-size:15px}
details.inline ul{padding-left:20px;font-size:15px}
#program{scroll-margin-top:80px}
#program ol{padding-left:22px}
#program li{margin-bottom:4px}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#111827;color:#fff;padding:12px 18px;border-radius:12px;font-size:15px;opacity:0;transition:opacity .2s;pointer-events:none;max-width:calc(100vw - 32px)}
.toast.on{opacity:1}
@media (max-width:700px){
  section{padding:22px 16px}
  .hero{padding-top:26px}
  ol.steps>li{padding-left:48px}
    .btn.big{width:100%;justify-content:center}
}
.cards{display:grid;gap:14px;margin:6px 0 26px}
a.card{display:flex;gap:18px;align-items:center;background:var(--card);border:2px solid var(--line);border-radius:18px;padding:22px 24px;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}
a.card:hover{border-color:var(--pri);transform:translateY(-2px)}
a.card .n{flex:none;width:52px;height:52px;border-radius:50%;background:var(--pri);color:#fff;font-weight:800;font-size:24px;display:flex;align-items:center;justify-content:center}
a.card.soft .n{background:var(--sub)}
a.card b{display:block;font-size:21px;line-height:1.35}
a.card .muted{display:block}
a.card .go{margin-left:auto;font-size:26px;color:var(--pri);flex:none}
.pager{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin:0 0 22px}
.pager .btn{flex:1 1 220px;justify-content:center}
@media (max-width:700px){
      a.card{padding:18px 16px;gap:14px}
  a.card b{font-size:18px}
  a.card .go{display:none}
}


/* 공통 헤더 */
header.site{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:saturate(1.4) blur(8px);-webkit-backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--line)}
header.site .bar{max-width:880px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:14px}
.brand{display:inline-flex;align-items:center;gap:9px;font-weight:800;font-size:17px;color:var(--ink);text-decoration:none;letter-spacing:-.01em;white-space:nowrap}
.brand svg{flex:none;border-radius:8px}
.gnav{display:flex;gap:4px;margin-left:auto}
.gnav a{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:10px;color:var(--ink);text-decoration:none;font-weight:700;font-size:15px;white-space:nowrap}
.gnav a .n{width:21px;height:21px;border-radius:50%;background:var(--pri-soft);color:var(--pri);font-size:12px;font-weight:800;display:inline-flex;align-items:center;justify-content:center}
.gnav a:hover{background:var(--bg)}
.gnav a[aria-current="page"]{background:var(--pri-soft);color:var(--pri)}
.gnav a[aria-current="page"] .n{background:var(--pri);color:#fff}
.practice-link{flex:none;font-size:14px;font-weight:700;text-decoration:none;color:var(--ok);border:1px solid var(--line);border-radius:99px;padding:6px 12px;background:var(--card);white-space:nowrap}
.practice-link:hover{border-color:var(--ok)}

/* 공통 푸터 */
footer.site{border-top:1px solid var(--line);background:var(--card);margin-top:36px;color:var(--sub);font-size:14px}
footer.site .cols{max-width:880px;margin:0 auto;padding:30px 16px 8px;display:grid;grid-template-columns:1.5fr 1fr 1.2fr;gap:26px}
footer.site .cols b{display:block;color:var(--ink);font-size:14px;margin-bottom:8px}
footer.site .cols a{display:block;color:var(--sub);text-decoration:none;padding:3px 0}
footer.site .cols a:hover{color:var(--pri)}
footer.site .about a.brand{display:inline-flex;color:var(--ink);padding:0;margin-bottom:8px}
footer.site .about p{margin:0 0 8px;line-height:1.6}
footer.site .safe{color:var(--ok)}
footer.site .fine{max-width:880px;margin:0 auto;padding:16px 16px 34px;border-top:1px solid var(--line);font-size:13px;line-height:1.7}
@media (max-width:700px){
  header.site .bar{flex-wrap:wrap;gap:8px 10px;padding:10px 12px}
  .gnav{order:3;width:100%;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
  .gnav a{justify-content:center;padding:7px 4px;font-size:14px;gap:5px;background:var(--bg)}
  .practice-link{margin-left:auto}
  footer.site .cols{grid-template-columns:1fr;gap:18px}
}

/* 파란 바탕 위 글자 */
.btn.pri,a.bm,ol.steps>li::before,a.card .n,.gnav a[aria-current="page"] .n{color:var(--on-pri)}
