@font-face{font-family:Pretendard;font-weight:45 920;font-style:normal;font-display:swap;src:url(/fonts/PretendardVariable.woff2) format("woff2")}:root{--bg:#0f1115;--bg-soft:#171a21;--card:#1c2029;--card-2:#222733;--border:#2b313d;--text:#e8eaf0;--text-dim:#a0a7b8;--accent:#5b8cff;--accent-soft:#2a3a5e;--warm:#ffb454;--good:#5fd08a;--warn:#ffcf5b;--radius:14px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Pretendard,-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Segoe UI,Malgun Gothic,Noto Sans KR,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Noto Color Emoji;line-height:1.7;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.wrap{max-width:880px;margin:0 auto;padding:0 18px 96px}.hero{text-align:center;padding:calc(56px + env(safe-area-inset-top)) 18px 24px}.hero h1{font-size:30px;margin:0 0 6px;letter-spacing:-.5px}.hero .tag{color:var(--warm);font-weight:700;font-size:14px;letter-spacing:.3px}.hero p{color:var(--text-dim);margin:12px auto 0;max-width:620px;font-size:15px}.hero .links{margin-top:14px;font-size:13px}.hero .links a{color:var(--text-dim)}.tabs{display:flex;gap:8px;background:var(--bg-soft);padding:6px;border-radius:12px;margin:8px auto 28px;max-width:460px}.tabs button{flex:1 1;padding:12px 10px;border:0;border-radius:9px;background:transparent;color:var(--text-dim);font-size:14px;font-weight:700;cursor:pointer;transition:all .15s}.tabs button.active{background:var(--accent);color:#fff}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:22px;margin-bottom:16px}label{display:block;font-size:13px;font-weight:700;margin:0 0 7px;color:var(--text)}.hint{font-size:12px;color:var(--text-dim);font-weight:400;margin-left:6px}input[type=text],textarea{width:100%;background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;color:var(--text);padding:12px 14px;font-size:16px;font-family:inherit;resize:vertical}input[type=text]:focus,textarea:focus{outline:none;border-color:var(--accent)}.field{margin-bottom:16px}.row{display:flex;gap:10px;flex-wrap:wrap}.chip{flex:1 1;min-width:90px;text-align:center;padding:11px 8px;border:1px solid var(--border);border-radius:10px;background:var(--bg-soft);color:var(--text-dim);font-size:13px;font-weight:700;cursor:pointer}.chip.on{border-color:var(--accent);color:#fff;background:var(--accent-soft)}.btn{width:100%;padding:15px;border:0;border-radius:11px;background:var(--accent);color:#fff;font-size:16px;font-weight:800;cursor:pointer;margin-top:4px}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-ghost{background:var(--card-2);color:var(--text);border:1px solid var(--border)}.filebox{border:1.5px dashed var(--border);border-radius:11px;padding:18px;text-align:center;color:var(--text-dim);cursor:pointer;background:var(--bg-soft)}.filebox:hover{border-color:var(--accent)}.thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.thumbs img{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.note-privacy{font-size:12px;color:var(--text-dim);margin-top:10px}.err{background:#3a1d1d;border:1px solid #6b2b2b;color:#ffb4b4;padding:12px 14px;border-radius:10px;font-size:14px;margin-top:12px}.result{margin-top:10px}.overview{background:linear-gradient(135deg,var(--accent-soft),var(--card-2));border:1px solid var(--border);border-radius:var(--radius);padding:20px 22px;margin-bottom:18px}.overview .meta{font-size:13px;color:var(--text-dim);margin-top:10px}.stage{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:14px}.stage h3{margin:0 0 4px;font-size:18px}.stage .goal{color:var(--text-dim);font-size:14px;margin-bottom:12px}.concepts{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.concepts span{background:var(--bg-soft);border:1px solid var(--border);border-radius:999px;padding:3px 10px}.concepts span,.sub{font-size:12px;color:var(--text-dim)}.sub{font-weight:800;text-transform:uppercase;letter-spacing:.5px;margin:14px 0 8px}.source{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-top:1px solid var(--border);font-size:14px}.source .badge{font-size:11px;padding:2px 7px;border-radius:6px;font-weight:700;white-space:nowrap}.b-verified{background:#1d3a2a;color:var(--good)}.b-check{background:#3a341d;color:var(--warn)}.b-free{background:#1d2a3a;color:var(--accent)}.b-paid{background:#2a2230;color:#d3a0ff}.b-lang{background:var(--bg-soft);color:var(--text-dim);border:1px solid var(--border)}.source .meta-line{display:flex;gap:5px;flex-wrap:wrap;margin-top:3px}.promptpack{background:var(--bg-soft);border:1px solid var(--accent-soft);border-radius:11px;padding:14px;margin-top:12px}.promptpack .pp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.promptpack .pp-head .sub{margin:0}.promptpack pre{white-space:pre-wrap;word-break:break-word;font-size:13px;color:var(--text);margin:0;font-family:SFMono-Regular,Consolas,monospace;max-height:200px;overflow:auto}.copy{font-size:12px;padding:6px 12px;border-radius:8px;border:1px solid var(--border);background:var(--card-2);color:var(--text);cursor:pointer;font-weight:700}.copy.done{color:var(--good);border-color:var(--good)}.mapping{background:var(--card);border:1px solid var(--warm);border-radius:var(--radius);padding:20px;margin-bottom:14px}.mapping h3{margin:0 0 12px;color:var(--warm);font-size:17px}.mapping .map-row{padding:10px 0;border-top:1px solid var(--border)}.map-title,.mapping .map-row b{color:var(--text)}.map-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800;margin:22px 2px 12px}.map-title .map-hint{margin-left:auto;font-size:12px;font-weight:500;color:var(--text-dim)}.acc{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px;overflow:hidden}.acc[open]{border-color:var(--accent-soft)}.acc-head{display:flex;align-items:center;gap:12px;padding:15px 18px;cursor:pointer;list-style:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.acc-head::-webkit-details-marker{display:none}.acc-num{flex-shrink:0;width:26px;height:26px;display:grid;place-items:center;border-radius:8px;background:var(--accent-soft);color:#fff;font-size:13px;font-weight:800}.acc-titles{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:2px}.acc-title{font-size:15px;font-weight:700;color:var(--text)}.acc-goal{font-size:12.5px}.acc-goal,.chevron{color:var(--text-dim)}.chevron{flex-shrink:0;transition:transform .18s ease}.acc[open] .chevron{transform:rotate(90deg)}.acc-body{padding:4px 18px 18px}.acc-body .concepts{margin-bottom:4px}.acc-body .sub{margin-top:16px}.outline{margin:8px 0 4px;padding-left:24px;list-style:decimal}.outline li{margin:8px 0;padding-left:4px;font-size:14px;line-height:1.6}.outline li b{color:var(--text);font-weight:700}.outline .ol-detail{display:block;color:var(--text-dim);font-size:13px;margin-top:1px}.hubs{margin-top:22px}.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:8px;gap:8px;margin-top:10px}.hub{display:flex;flex-direction:column;gap:2px;padding:11px 13px;border:1px solid var(--border);border-radius:10px;background:var(--bg-soft);text-decoration:none}.hub:hover{border-color:var(--accent)}.hub b{color:var(--accent);font-size:13.5px;font-weight:700}.hub span{font-size:11.5px}.hub span,.hub-lang{color:var(--text-dim)}.hub-lang{font-size:12px;font-weight:800;margin:14px 2px 2px}.overview .md p{margin:0 0 11px;line-height:1.8;font-size:15.5px}.overview .md strong{font-size:16px}.overview .md p:last-child{margin-bottom:0}.overview .md strong{color:var(--text);font-weight:800}.overview .md ul{margin:6px 0 10px;padding-left:20px}.overview .md li{margin:4px 0}.outline-sub{list-style:disc;margin:6px 0 2px;padding-left:20px}.outline-sub li{margin:5px 0;font-size:14.5px;line-height:1.6}.ol-sub-title{color:var(--text);font-weight:600}.kw-hint{font-size:12px;font-weight:500;color:var(--text-dim)}.kw-wrap{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px}.kw{display:inline-flex;align-items:center;gap:4px;padding:6px 11px;border:1px solid var(--accent-soft);border-radius:999px;background:var(--bg-soft);color:var(--accent);font-size:12.5px;font-weight:600;text-decoration:none}.kw:hover{background:var(--accent-soft);color:#fff}.weekplan{margin:14px 0 6px}.weeks{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.weeks>li{border:1px solid var(--border);border-radius:12px;padding:10px 13px;background:var(--bg-soft)}.weeks>li>b{color:var(--accent);font-size:14px;font-weight:800}.weeks ul{margin:6px 0 0;padding-left:18px}.weeks ul li{margin:3px 0;font-size:14.5px;line-height:1.6;color:var(--text-dim)}.outline2{display:flex;flex-direction:column;gap:7px;margin-top:8px}.sub-acc{border:1px solid var(--border);border-radius:11px;overflow:hidden;background:var(--bg-soft)}.sub-head{display:flex;align-items:center;gap:9px;padding:10px 12px;cursor:pointer;list-style:none}.sub-head::-webkit-details-marker{display:none}.sub-idx{color:var(--accent);font-weight:800;font-size:12.5px;flex-shrink:0}.sub-name{flex:1 1;font-weight:700;font-size:15px;line-height:1.45}.sub-acc .chevron{transition:transform .18s;color:var(--text-dim)}.sub-acc[open] .chevron{transform:rotate(90deg)}.sub-body{padding:0 13px 13px}.sub-detail{color:var(--text-dim);font-size:13px;margin:2px 0 8px;line-height:1.6}.pk-wrap{margin-top:10px;border-top:1px dashed var(--border);padding-top:10px}.pk-title{font-size:12px;font-weight:700;color:var(--text-dim);margin-bottom:8px;line-height:1.5}.pk-chips{display:flex;flex-wrap:wrap;gap:6px}.pk-chip{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:999px;padding:6px 11px;font-size:12.5px;font-weight:600;cursor:pointer}.pk-chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}.pk-view{margin-top:10px}.pk-view-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.pk-desc{font-size:12.5px;font-weight:700;color:var(--accent)}.pk-view pre{white-space:pre-wrap;word-break:break-word;background:rgba(0,0,0,.28);border:1px solid var(--border);border-radius:10px;padding:12px 13px;font-size:13.5px;line-height:1.7;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.pk-hint{font-size:11.5px;color:var(--text-dim);margin-top:6px;text-align:right}.problem{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;margin-bottom:12px}.problem .q{font-weight:600;margin-bottom:10px}.problem ol.choices{margin:8px 0;padding-left:22px}.problem .ans{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.problem .ans .lab{color:var(--good);font-weight:800;font-size:13px}.problem details summary{cursor:pointer;color:var(--text-dim);font-size:13px;font-weight:700;margin-top:8px}.spin{display:inline-block;width:16px;height:16px;border:2px solid #fff;border-top-color:transparent;border-radius:50%;animation:sp .7s linear infinite;vertical-align:-3px;margin-right:8px}@keyframes sp{to{transform:rotate(1turn)}}.toolbar{display:flex;gap:8px;margin:6px 0 18px;flex-wrap:wrap}.quiz-modeswitch{display:flex;gap:6px;background:var(--bg-soft);padding:5px;border-radius:11px;margin-bottom:14px;max-width:360px}.quiz-modeswitch button{flex:1 1;padding:9px 8px;border:0;border-radius:8px;background:transparent;color:var(--text-dim);font-size:13px;font-weight:700;cursor:pointer}.quiz-modeswitch button.on{background:var(--accent);color:#fff}.quiz-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.quiz-count{font-size:13px;font-weight:800;color:var(--accent)}.quiz-topic{font-size:12px;color:var(--text-dim)}.quiz-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.quiz-q{font-weight:600;margin-bottom:14px}.quiz-choices{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.quiz-choice{display:flex;align-items:flex-start;gap:10px;text-align:left;width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg-soft);color:var(--text);font-size:15px;font-family:inherit;cursor:pointer;transition:border-color .12s,background .12s}.quiz-choice:hover:not(:disabled){border-color:var(--accent)}.quiz-choice:disabled{cursor:default}.quiz-choice.chosen{border-color:var(--accent);background:var(--accent-soft)}.quiz-choice.ans{border-color:var(--good);background:#1d3a2a}.quiz-choice.wrong{border-color:#6b2b2b;background:#3a1d1d}.quiz-choice .num{font-weight:800;color:var(--text-dim);flex-shrink:0}.quiz-choice.ans .num{color:var(--good)}.quiz-choice .ctext{flex:1 1}.quiz-choice .ctext .md p{margin:0}.quiz-choice .mark{font-size:11px;font-weight:800;color:var(--good);white-space:nowrap;align-self:center}.quiz-choice .mark.wrong{color:#ffb4b4}.quiz-feedback{margin-top:4px}.quiz-verdict{font-weight:800;font-size:15px;margin-bottom:10px}.quiz-verdict.ok{color:var(--good)}.quiz-verdict.no{color:#ffb4b4}.quiz-ans{padding-top:10px;border-top:1px solid var(--border)}.quiz-ans .lab{color:var(--good);font-weight:800;font-size:13px;margin-right:4px}.quiz-exp{margin-top:8px;color:var(--text)}.quiz-selfgrade{display:flex;align-items:center;gap:8px;margin:12px 0;font-size:13px;color:var(--text-dim);flex-wrap:wrap}.quiz-selfgrade .sg{padding:8px 16px;border-radius:9px;border:1px solid var(--border);background:var(--card-2);color:var(--text);font-weight:700;font-size:13px;cursor:pointer}.quiz-selfgrade .sg.ok:hover{border-color:var(--good);color:var(--good)}.quiz-selfgrade .sg.no:hover{border-color:#6b2b2b;color:#ffb4b4}.quiz-feedback .btn{margin-top:14px}.quiz-summary{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:22px}.qs-score{text-align:center;padding:10px 0 18px}.qs-pct{font-size:44px;font-weight:900;color:var(--accent);letter-spacing:-1px}.qs-sub{color:var(--text-dim);font-size:14px;margin-top:2px}.qs-bar{margin:10px 0}.qs-bar-top{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}.qs-bar-top span:last-child{color:var(--text-dim)}.qs-track{height:8px;background:var(--bg-soft);overflow:hidden}.qs-fill,.qs-track{border-radius:999px}.qs-fill{height:100%;background:var(--good);transition:width .3s}.qs-fill.low{background:var(--warm)}.qs-weak{margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}.qs-weak-list{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.qs-weak-chip{font-size:12px;font-weight:700;background:#3a341d;color:var(--warn);border-radius:999px;padding:4px 11px}.qs-weak-note{font-size:12px;color:var(--text-dim)}.quiz-summary .btn{margin-top:18px}@media print{.btn,.copy,.filebox,.tabs,.toolbar,form{display:none!important}body{background:#fff;color:#000}.card,.mapping,.overview,.problem,.promptpack,.stage{border-color:#ccc;background:#fff;color:#000;page-break-inside:avoid;break-inside:avoid}}.md p{margin:0 0 8px}.md ol,.md ul{margin:6px 0;padding-left:20px}.md code{background:var(--bg-soft);padding:1px 5px;border-radius:5px;font-size:.9em}.md,.md code{word-break:break-word}.md{overflow-wrap:break-word}.md .katex-display{overflow-y:hidden;padding-bottom:2px}.md .katex-display,.md table{overflow-x:auto;max-width:100%}.md table{display:block;border-collapse:collapse}.md pre{overflow-x:auto}@media (max-width:600px){body{line-height:1.65}.wrap{padding:0 14px 80px}.hero{padding:calc(36px + env(safe-area-inset-top)) 14px 18px}.hero h1{font-size:25px}.hero p{font-size:14px}.tabs{margin:6px auto 20px;max-width:100%}.tabs button{font-size:13px;padding:11px 8px}.card{padding:18px 16px}.overview,.stage{padding:16px}.stage h3{font-size:17px}.mapping,.problem{padding:16px}.btn{font-size:15px;padding:14px}.chip{min-width:calc(50% - 5px)}.source{flex-wrap:wrap}.promptpack pre{font-size:12.5px;max-height:240px}.thumbs img{width:64px;height:64px}}