:root{--navy:#121b2d;--navy2:#19263e;--blue:#395ee8;--blue-soft:#ebf0ff;--ink:#151d2f;--sub:#647085;--muted:#96a0b3;--line:#e8ebf0;--card:#fff;--paper:#f7f9fc;--green:#10b981;--radius:12px}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;font-family:system-ui,-apple-system,"Pretendard","Noto Sans KR",Arial,sans-serif;color:var(--ink)}button,input{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #6494f9;outline-offset:2px}[hidden]{display:none!important}.topbar{height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:#fff;border-bottom:1px solid var(--line);position:relative;z-index:2}.top-brand,.top-actions{display:flex;align-items:center;gap:18px}.brand{display:flex;align-items:center;gap:9px;letter-spacing:-.5px;font-weight:850;font-size:19px;color:#121e38}.brand-icon{display:inline-grid;place-items:center;width:29px;height:29px;border-radius:8px;background:#2149c7;color:#fff;font-weight:900;font-size:17px}.top-separator{height:20px;width:1px;background:#dfe4ec}.top-product{font-weight:850;font-size:11px;letter-spacing:2px;color:#334360}.top-product span{color:#5078ed}.top-mode{font-size:12px;color:#8a95a5}.top-resource{font-size:12px;font-weight:750;color:#3f506f}.top-help{width:27px;height:27px;border-radius:50%;background:#eef2fc;border:0;color:#354769;font-weight:850}.layout{height:calc(100dvh - 62px);min-height:590px;display:grid;grid-template-columns:232px minmax(0,1fr)}.sidebar{min-height:0;display:flex;flex-direction:column;background:#fff;border-right:1px solid var(--line)}.sidebar-title{padding:25px 20px 15px}.eyebrow,.lesson-kicker{font-size:10px;letter-spacing:1.8px;font-weight:850;color:#637cbd}.sidebar h1{font-size:18px;line-height:1.45;margin:8px 0 7px;letter-spacing:-.65px}.sidebar h1 span{color:#4772df}.sidebar-title p{font-size:11px;color:#97a0ad;margin:0}.progress-wrap{background:#f5f8fd;margin:4px 13px 10px;padding:13px;border:1px solid #edf0f7;border-radius:11px}.progress-label,.progress-summary{display:flex;justify-content:space-between;font-size:11px;color:#687489}.progress-label strong{color:#2f55c6}.progress-track{height:6px;background:#dfe6f5;border-radius:10px;margin:9px 0;overflow:hidden}.progress-fill{width:0%;height:100%;border-radius:10px;background:linear-gradient(90deg,#5379ee,#16c0bd);transition:width .3s}.progress-summary{justify-content:end;font-size:10px}.course-nav{min-height:0;flex:1;overflow:auto;padding:0 12px 16px;scrollbar-width:thin}.group-label{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#8994a6;letter-spacing:.7px;font-weight:750;margin:19px 8px 8px}.group-count{font-size:10px;color:#b0b8c6}.lesson-item{width:100%;text-align:left;border:0;background:transparent;padding:10px 10px;border-radius:8px;margin:1px 0;display:flex;align-items:center;gap:9px;font-size:12px;line-height:1.4;color:#5c6678}.lesson-item:hover{background:#f4f6fb}.lesson-item.active{background:#eaf0ff;color:#2e53c3;font-weight:800}.lesson-item .lesson-num{font-size:10px;font-variant-numeric:tabular-nums;color:#99a4b7;min-width:21px}.lesson-item.active .lesson-num{color:#4164c2}.lesson-item .lesson-name{flex:1}.lesson-item .lesson-complete{color:#0fa684;font-weight:800}.sidebar-bottom{padding:12px 12px;border-top:1px solid var(--line)}.mini-next{background:#f3f6fc;border-radius:9px;padding:12px}.mini-next span{color:#8492a6;text-transform:uppercase;letter-spacing:.8px;font-size:9px;display:block}.mini-next strong{font-size:11px;margin:4px 0;display:block}.mini-next small{color:#8492a6;font-size:10px}.flat-btn{font-size:11px;font-weight:700;color:#576a8f;background:none;border:1px solid #e6eaf1;border-radius:8px;padding:9px}.full{width:100%;margin-top:8px}.main{background:#fff;min-width:0;min-height:0;position:relative}.workspace{height:100%;display:grid;grid-template-columns:minmax(270px,300px) minmax(310px,1.1fr) minmax(320px,1fr);min-height:0}.instruction{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line)}.instruction-scroll{flex:1;overflow-y:auto;padding:27px 21px 20px;scrollbar-width:thin}.crumbs{color:#95a1b2;font-size:11px;margin-bottom:23px}.lesson-kicker{color:#4268d1}.instruction h2{font-size:24px;letter-spacing:-1.1px;line-height:1.35;margin:11px 0 12px;word-break:keep-all}.lead{color:#6b7789;font-size:12px;line-height:1.85;margin:0 0 24px;word-break:keep-all}.section-label{font-size:11px;color:#37465b;font-weight:850}.lesson-why{margin:0 0 23px}.goal{font-size:12px;line-height:1.55;padding:10px 0 0;display:flex;gap:8px;color:#526074}.goal .goal-bullet{color:#4977e7;font-size:14px}.lesson-task{border:1px solid #dfe8fe;background:#f4f7ff;padding:15px;border-radius:10px;margin-bottom:12px}.task-heading{display:flex;align-items:center;gap:8px;font-size:12px;color:#3157cb}.task-heading span{font-size:20px}.lesson-task p{font-size:12px;line-height:1.8;margin:8px 0 0;white-space:pre-wrap;word-break:keep-all}.hint-box{border:1px solid #e6eaf2;border-radius:10px;margin-bottom:12px;background:#fff}.accordion-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;border:0;background:transparent;color:#64738a;padding:12px 14px;font-size:11px;text-align:left;font-weight:700}.accordion-content{padding:0 14px 14px;color:#627088;font-size:11px;line-height:1.8;white-space:pre-wrap}.check-btn{width:100%;border:0;background:#3563dc;color:white;border-radius:9px;padding:13px 12px;font-weight:800;font-size:12px}.check-btn span{margin-left:7px}.check-result{background:#f8fafc;border:1px solid #e1e8f2;border-radius:10px;padding:11px;margin-top:10px}.check-result h4{margin:0 0 7px;font-size:12px}.check-line{font-size:11px;display:flex;align-items:flex-start;gap:8px;line-height:1.65;color:#5b6678;margin:5px 0}.check-line .pass{color:#079d75}.check-line .fail{color:#d46a2d}.answer-row{display:flex;justify-content:space-between;gap:8px;margin-top:13px}.text-action{border:0;background:none;text-decoration:underline;text-underline-offset:3px;font-size:10px;color:#7a8799;padding:5px 0}.text-action.danger{color:#a76b70}.reference-block{margin-top:25px;border-top:1px solid #edf0f3;padding:15px 0;font-size:10px;color:#8a95a5;line-height:1.7}.reference-block a{color:#3a61c8;text-decoration:underline}.instruction-bottom{border-top:1px solid var(--line);padding:13px 17px;display:flex;gap:9px}.nav-btn,.next-btn{border:1px solid #e6eaf1;background:white;color:#6b7990;font-size:11px;font-weight:700;border-radius:8px;padding:11px 10px;flex:1}.next-btn{border-color:#193052;background:#1c2b47;color:white;flex:1.5}.nav-btn:disabled,.next-btn:disabled{opacity:.35;cursor:not-allowed}.editor-pane,.preview-pane{min-width:0;min-height:0;display:flex;flex-direction:column;background:#152137}.editor-pane{border-right:1px solid #2b3851}.pane-head{height:52px;min-height:52px;padding:0 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #28354b;color:#e7edf8}.pane-title{display:flex;gap:8px;align-items:center;font-size:12px;font-weight:800}.pane-title small{font-size:10px;color:#72829b;font-weight:500;margin-left:6px}.pane-dot{width:8px;height:8px;border-radius:50%;background:#6187ff}.pane-actions{display:flex;align-items:center;gap:12px;color:#7e8fa8;font-size:10px}.pane-icon-btn{color:#9baccc;background:transparent;border:1px solid #3b4960;border-radius:5px;padding:1px 7px;font-size:15px}.code-tabs{background:#1a2943;display:flex;border-bottom:1px solid #29354a;min-height:43px}.code-tab{border:0;border-bottom:2px solid transparent;color:#8192ad;background:transparent;padding:13px 17px;font-size:11px;white-space:nowrap;font-weight:650}.code-tab.active{color:#fff;background:#152137;border-bottom-color:#7096ff}.file-dot{display:inline-block;width:7px;height:7px;border-radius:3px;margin-right:5px}.html-dot{background:#ee976f}.css-dot{background:#74a4ee}.js-dot{background:#e5d170}.editor-area{flex:1;min-height:0;position:relative}.editor-area textarea{width:100%;height:100%;font-size:12px;background:#152137;color:#d9e1f3;border:0;padding:15px;resize:none;outline:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.8}.CodeMirror{height:100%;background:#152137!important;color:#dbe6f3;font-size:12px;line-height:1.75;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.CodeMirror-gutters{background:#152137;border-right:1px solid #28334b}.CodeMirror-linenumber{color:#53647d}.CodeMirror-cursor{border-left:1px solid #f9fafb}.CodeMirror-activeline-background{background:rgba(77,107,172,.15)}.cm-s-default .cm-tag{color:#ee8b98}.cm-s-default .cm-attribute{color:#f1c47b}.cm-s-default .cm-string{color:#b6d98b}.cm-s-default .cm-property{color:#9cbdf1}.cm-s-default .cm-qualifier{color:#80c2db}.cm-s-default .cm-def{color:#9dc5f5}.cm-s-default .cm-keyword{color:#bbaaeb}.cm-s-default .cm-number{color:#e9c581}.cm-s-default .cm-comment{color:#7187a5}.cm-s-default .cm-variable{color:#b8d0f1}.cm-s-default .cm-atom{color:#f8bd82}.CodeMirror-selected{background:#35486f!important}.editor-footer{height:36px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;background:#182742;border-top:1px solid #2d3a51;color:#7484a1;font-size:10px}.preview-pane{background:#f5f7fb}.preview-head{background:white;color:#2b3548;border-bottom:1px solid #e9edf3}.preview-icon{color:#20b5a3;font-size:15px}.device-switch{display:flex;gap:2px;padding:2px;border:1px solid #e7eaf0;border-radius:7px}.device{font-size:10px;border:0;color:#8b98ad;background:transparent;padding:5px 9px;border-radius:4px;font-weight:700}.device.active{color:#2d53cb;background:#eaf0ff}.preview-toolbar{height:44px;min-height:44px;padding:0 12px;display:flex;align-items:center;gap:9px;background:#f8fafc;border-bottom:1px solid #e5e9f1}.fake-url{background:#fff;border:1px solid #e5e9ef;border-radius:6px;height:26px;flex:1;min-width:0;padding:5px 9px;font-size:10px;color:#9ba5b3;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.run-btn{height:27px;background:#fff;border:1px solid #e0e5ee;border-radius:6px;font-size:10px;color:#60718b;font-weight:800;padding:0 9px}.preview-stage{display:flex;justify-content:center;align-items:stretch;min-height:0;flex:1;overflow:auto;padding:15px}.preview-stage iframe{height:100%;width:100%;max-width:100%;background:white;border:1px solid #e1e5ec;box-shadow:0 4px 15px rgba(29,43,62,.08);border-radius:5px;transition:width .2s;min-height:370px}.preview-stage.device-tablet iframe{width:min(768px,100%)}.preview-stage.device-mobile iframe{width:min(375px,100%)}.preview-bottom{min-height:39px;padding:5px 12px;display:flex;align-items:center;justify-content:space-between;gap:6px;border-top:1px solid #e8ebf0;background:#fff;font-size:10px;color:#8c97a6}.live-dot{display:inline-block;background:#11c495;width:6px;height:6px;border-radius:50%;margin-right:7px}.export-tools{display:flex;gap:6px}.export-tools button{background:none;border:none;color:#4766a1;font-weight:750;font-size:10px;padding:6px 2px}.toast{position:fixed;right:22px;bottom:22px;padding:12px 17px;border-radius:10px;background:#1d2d4a;color:#fff;font-size:12px;box-shadow:0 10px 30px #1b294846;z-index:30;opacity:0;transform:translateY(12px);transition:opacity .2s,transform .2s;pointer-events:none}.toast.show{opacity:1;transform:none}.modal-backdrop{position:fixed;inset:0;background:rgba(13,23,41,.6);z-index:20;display:flex;justify-content:center;align-items:center;padding:20px}.modal{width:min(650px,100%);max-height:90vh;display:flex;flex-direction:column;border-radius:15px;background:white;box-shadow:0 18px 80px #0b142755;overflow:hidden}.modal-head{padding:18px 23px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e5eaf1}.modal-head h2{font-size:18px;margin:0}.modal-head button{border:0;background:#f1f4fa;border-radius:6px;width:28px;height:28px}.modal-content{padding:21px 23px;overflow:auto;font-size:13px;line-height:1.8;color:#465469}.modal-content pre{font-size:11px;line-height:1.6;white-space:pre-wrap;word-break:break-word;background:#152137;color:#e5ecf6;padding:14px;border-radius:9px;max-height:40vh;overflow:auto}.modal-actions{border-top:1px solid #edf0f4;display:flex;justify-content:end;gap:9px;padding:15px 22px}.modal-actions button{padding:10px 15px;border:1px solid #e2e7ed;border-radius:8px;background:#fff;font-size:12px}.modal-actions button.primary{color:#fff;border-color:#345de0;background:#345de0}.welcome{padding:5vw;display:flex;min-height:100%;justify-content:center;align-items:center;gap:5vw;background:linear-gradient(125deg,#f5f8ff 5%,#fff 65%)}.welcome-copy{max-width:490px}.pill{display:inline-block;background:#e8efff;color:#3d68de;font-size:11px;letter-spacing:1px;font-weight:850;border-radius:50px;padding:8px 13px}.welcome h2{font-size:clamp(25px,3.1vw,44px);line-height:1.42;letter-spacing:-1.7px}.welcome-copy>p{color:#6d7d95;font-size:14px;line-height:2}.welcome-stats{display:flex;gap:24px;margin:32px 0}.welcome-stats span{font-size:12px;color:#78859c;display:flex;align-items:baseline;gap:5px}.welcome-stats strong{font-size:23px;color:#1b2c4a}.primary-btn{font-size:14px;border:0;border-radius:10px;background:#3662df;color:white;padding:15px 22px;font-weight:800}.welcome-visual{min-width:290px;max-width:460px;flex:1;background:#17263c;border-radius:15px;color:#d0dff2;box-shadow:0 25px 70px #263f7360;overflow:hidden}.visual-top{height:46px;background:#213553;padding:14px 17px;color:#a5b7d0;font-size:12px}.visual-top i{font-style:normal;color:#638bd6;float:right}.welcome-visual pre{padding:23px;font-size:12px;line-height:1.7}.welcome-visual pre span{color:#ef9da5}.welcome-visual pre .v-color{color:#b5a8f6}.welcome-visual pre .v-highlight{color:#a7d99a}.visual-bottom{background:#213553;padding:14px 17px;color:#a3b8d2;font-size:11px}.advanced-banner{position:fixed;bottom:48px;right:32px;z-index:5;background:#fff;border:1px solid #dae7f8;border-left:4px solid #3683df;border-radius:11px;box-shadow:0 6px 22px #21324d20;padding:15px 18px;max-width:365px;font-size:12px;color:#60708a}.advanced-banner strong{color:#18305d}.advanced-banner a{color:#1d55d5;font-weight:800;text-decoration:underline}.editor-expand .workspace{grid-template-columns:260px minmax(520px,1.8fr) minmax(280px,.5fr)}.editor-expand .instruction-scroll{padding:17px}.editor-expand .instruction h2{font-size:18px}@media(max-width:1280px){.layout{grid-template-columns:206px 1fr}.workspace{grid-template-columns:minmax(220px,250px) minmax(300px,1fr) minmax(300px,1fr)}.instruction-scroll{padding:20px 17px}.instruction h2{font-size:21px}.code-tab{padding:13px 11px}.pane-head{padding:0 10px}.pane-title small{display:none}}@media(max-width:1080px){html,body{height:auto;min-height:100%}.layout{height:auto;min-height:100dvh;grid-template-columns:190px 1fr}.workspace{height:auto;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.instruction{grid-column:1/-1;border-right:0;border-bottom:1px solid var(--line)}.instruction-scroll{overflow:visible}.instruction-bottom{padding:8px 16px}.editor-pane,.preview-pane{height:650px}.top-mode{display:none}.editor-expand .workspace{grid-template-columns:1fr 1fr}.editor-expand .instruction{grid-column:1/-1}}@media(max-width:680px){.topbar{padding:0 12px}.top-brand{gap:8px}.top-separator,.top-product,.top-resource{display:none}.layout{grid-template-columns:1fr}.sidebar{max-height:350px;border-bottom:1px solid var(--line)}.sidebar-title{padding:12px 15px}.sidebar h1{font-size:15px;margin:3px 0}.sidebar-title p,.sidebar-bottom{display:none}.progress-wrap{margin:0 12px 7px;padding:7px}.course-nav{padding:0 8px 5px}.group-label{margin:12px 6px 5px}.lesson-item{display:inline-flex;width:auto;padding:7px 10px;max-width:250px}.workspace{grid-template-columns:1fr}.instruction{grid-column:auto}.editor-pane,.preview-pane{height:480px}.preview-pane{height:560px}.welcome{display:block;padding:30px 17px}.welcome-visual{margin-top:26px}.welcome-stats{gap:13px;flex-wrap:wrap}.advanced-banner{position:static;max-width:none;margin:10px}}

/* R04: easier direct-typing workspace, preview in a dedicated window */
.workspace{grid-template-columns:minmax(320px,390px) minmax(520px,1fr)}
.instruction-scroll{padding:28px 26px 22px}
.instruction h2{font-size:25px}
.lead,.goal,.lesson-task p{font-size:13px}
.lesson-task p{line-height:1.9}
.editor-pane{border-right:0}
.editor-area .CodeMirror{font-size:14px;line-height:1.9}
.editor-area textarea{font-size:14px;line-height:1.9}
.top-live-preview{display:inline-flex;align-items:center;gap:9px;border:0;border-radius:9px;background:#2454d4;color:#fff;font-size:12px;font-weight:850;padding:10px 15px;box-shadow:0 5px 14px #1b54d52c;white-space:nowrap}
.top-live-preview:hover{background:#1543c4}
.top-live-preview small{font-size:10px;color:#dce5ff;font-weight:650}
.top-live-dot{width:7px;height:7px;display:inline-block;background:#42e6ab;border-radius:50%;box-shadow:0 0 0 4px #ffffff20}
.preview-control{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:11px;background:#172742;border-top:1px solid #34435c;padding:13px 20px 11px}
.preview-control-main{display:flex;align-items:center;gap:12px}
.preview-control-light{width:26px;height:26px;border-radius:9px;display:inline-grid;place-items:center;background:#254f68;position:relative;flex-shrink:0}
.preview-control-light:after{content:'↗';font-size:17px;color:#9cf9c8}
.preview-control-main strong{font-size:12px;color:#edf3ff;display:block}
.preview-control-main p{font-size:10px;color:#96a8c7;margin:4px 0 0}
.preview-control-buttons{display:flex;gap:7px}
.preview-quick{color:#fff;background:#315cc8;border:1px solid #4f72d4;border-radius:9px;padding:10px 12px;font-size:11px;font-weight:850;white-space:nowrap}
.preview-quick:hover{background:#496fe3}
.preview-quick[data-preview-device=mobile]{background:#283958;border-color:#50617b}
.preview-quick[data-preview-device=mobile]:hover{background:#344968}
.preview-connection{display:block;flex-basis:100%;font-size:10px;color:#99acc9}
.editor-downloads{display:flex;justify-content:space-between;align-items:center;gap:9px;padding:9px 20px;background:#102039;border-top:1px solid #273a56;font-size:10px;color:#97aecf}
.editor-downloads>div{display:flex;flex-wrap:wrap;gap:10px}
.editor-downloads button{background:none;border:0;padding:5px 0;color:#c5d5ec;font-size:10px;cursor:pointer;font-weight:750}
.editor-downloads button:hover{color:#fff;text-decoration:underline}
.popup-fallback{position:fixed;z-index:90;right:20px;bottom:20px;max-width:365px;display:flex;flex-direction:column;gap:8px;padding:18px 42px 18px 18px;background:#fff;border:1px solid #d5deee;border-left:4px solid #e49320;box-shadow:0 10px 40px #0002;border-radius:12px;font-size:12px;color:#596981}
.popup-fallback strong{color:#24314c;font-size:13px}
.popup-fallback a{color:#2556cf;text-decoration:underline;font-weight:750}
.popup-fallback button{position:absolute;top:9px;right:10px;background:none;border:0;color:#50607b}
.editor-expand .workspace{grid-template-columns:minmax(210px,255px) minmax(520px,1fr)}
.editor-expand .instruction-scroll{padding:17px}
.editor-expand .instruction h2{font-size:18px}
@media(max-width:1200px){.workspace{grid-template-columns:minmax(265px,340px) minmax(410px,1fr)}.instruction-scroll{padding:20px 19px}}
@media(max-width:990px){html,body{height:auto;min-height:100%}.workspace{height:auto;grid-template-columns:minmax(0,1fr)}.editor-expand .workspace{grid-template-columns:1fr}.editor-pane{height:680px}.instruction{border-right:0;border-bottom:1px solid #e8ebf0}.instruction-scroll{overflow:visible}.layout{height:auto}.main{min-height:100vh}}
@media(max-width:680px){.layout{grid-template-columns:1fr}.topbar{padding:0 12px}.top-actions{gap:7px}.top-live-preview{padding:10px 12px}.top-live-preview small{display:none}.workspace{grid-template-columns:1fr}.preview-control{padding:12px}.preview-control-buttons{width:100%}.preview-quick{flex:1}.editor-downloads{padding:10px 12px}.editor-pane{height:680px}.lesson-task p{font-size:13px}}

/* R13 member/guest progress status */
.kbwd-cloud-panel{margin:12px 12px 4px;padding:12px 11px;border:1px solid #cadcf1;background:#f5f9ff;border-radius:11px;color:#274363}
.kbwd-cloud-panel>strong{font-size:12px;display:block}
.kbwd-cloud-panel p{font-size:11px;line-height:1.55;margin:7px 0;color:#415e7d;overflow-wrap:anywhere}
.kbwd-cloud-actions{display:flex;flex-wrap:wrap;gap:5px}
.kbwd-cloud-actions button{border:1px solid #cad6e7;background:#fff;border-radius:7px;font-size:10px;padding:7px 8px;color:#28466f;cursor:pointer}
.kbwd-cloud-actions button:hover{background:#e6effe}
.kbwd-cloud-panel a{display:inline-block;margin-top:8px;font-size:10px;color:#3056a7;font-weight:800}
