@font-face{font-family:Pretendard;src:url('assets/fonts/PretendardVariable.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{--workshop-ready:1;font-family:Pretendard,'Apple SD Gothic Neo',sans-serif;color:#203824;background:#f7f9f3;font-synthesis:none;--line:#cbd8bf;--green:#73953d;--lime:#c9da76}
*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden}button,select{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:default;opacity:.48}button,a,select{ -webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #478e7b;outline-offset:2px}button{border:0}h1,h2,h3,p{margin:0}[hidden]{display:none!important}a{color:inherit}main{height:calc(100dvh - 44px);max-width:1700px;margin:auto;padding:8px 18px 12px;display:flex;flex-direction:column;gap:7px;min-height:0}.site-header{height:44px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:15px;padding:0 18px;background:#fffefb}.brand{display:flex;align-items:center;gap:9px;text-decoration:none;font-size:13px;font-weight:650}.brand img{object-fit:contain}.lesson-name{font-size:13px;color:#5a704b}.lesson-tabs{display:grid;grid-template-columns:repeat(3,1fr);width:min(650px,100%);border:1px solid var(--line);padding:3px;border-radius:6px;gap:3px;flex-shrink:0}.lesson-tabs button{font-size:12px;line-height:1.4;min-height:34px;padding:6px 10px;border-radius:4px;background:transparent;color:#506842}.lesson-tabs button[aria-selected=true]{background:#26422e;color:#f2f6e8}#workshop{flex:1;min-height:0;display:grid;grid-template-rows:36px minmax(0,1fr) auto;gap:8px}.lesson-nav{display:flex;align-items:center;gap:6px;min-width:0}.lesson-nav select{width:min(300px,60%);min-width:0;height:34px;border:1px solid #c5d3b8;border-radius:4px;padding:5px 8px;background:#fff;color:#425c34;font-size:12px}.lesson-nav>button{width:34px;height:34px;padding:3px}.lesson-caption{font-size:12px;color:#657b55;margin-left:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.secondary,.text-button,.history-button{background:#f7faef;color:#496137;border:1px solid #c6d5b6;border-radius:4px;padding:6px 10px;font-size:12px;line-height:1.4}.text-button{background:transparent;padding:5px 8px;min-height:28px}.workshop-map{display:grid;grid-template-rows:minmax(0,1.05fr) minmax(0,1fr);gap:12px;min-height:0}.repo{min-width:0;min-height:0;border:1px solid var(--line);border-radius:8px;background:#fffefb;padding:12px;display:flex;flex-direction:column;gap:8px;overflow:hidden}.repo.remote{background:#edf4ef;border-top:4px solid #55806a}.repo-heading{display:flex;align-items:center;gap:10px;min-height:28px;flex-shrink:0}.repo-heading h2{font-size:17px;letter-spacing:-.025em;white-space:nowrap}.repo-heading>.text-button:last-child{margin-left:auto}.reviewer,.local-role{font-size:11px;color:#6d784e}.main-badge{border:1px solid #b5c995;border-radius:4px;padding:6px 9px;background:#e7efd8;color:#3f5f29;min-height:30px;font-size:12px;white-space:nowrap}.issue-list{display:flex;gap:7px;align-items:center;flex-shrink:0}.assignee-pool{display:flex;gap:3px}.avatar{display:inline-grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#dbe9b4;font-size:11px;color:#415e2a}.avatar.minsu{background:#e3def2;color:#6d5286}.issue-card{display:flex;align-items:center;justify-content:center;gap:7px;padding:6px 9px;min-height:34px;border:1px solid #c6d5bd;border-radius:5px;background:#fff;color:#3e5731;font-size:12px;min-width:0;flex:1}.issue-card.closed{background:#ece9f3;border-color:#cfc6df}.issue-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.assignee{font-size:11px;color:#6a753e;background:#e9efd8;border-radius:3px;padding:3px 6px;white-space:nowrap}.assignee.empty{color:#858d7d;background:#f0f2e9}.issue-closed{color:#7a5e94}.remote-flow{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:42px;flex:1}.main-trail,.branch-tips,.remote-branch{display:flex;align-items:center;gap:7px}.branch-tips{flex-wrap:wrap;justify-content:end}.remote-branch{background:#f8fbf1;padding:4px 7px;border-radius:5px;border:1px solid #d5dfc9;font-size:12px}.flow-label{font-size:11px;color:#687a53;margin-right:4px}.link-arrow{color:#93a36c;font-size:16px}.record{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:3px 7px;border:1px solid #b6ca94;border-radius:50%;background:#e3edc5;color:#3c5825;font:12px ui-monospace,monospace;flex-shrink:0}.record.current{outline:2px solid #7e9d43;outline-offset:2px}.record.excluded{background:#ece6f0;color:#806b88;border-style:dashed}.pr-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:9px;flex-shrink:0;min-height:65px}.pr-card{display:grid;grid-template-columns:1fr auto;gap:5px 10px;text-align:left;min-width:0;padding:10px 12px;background:#fbfdf4;border:1px solid #bbcfa6;border-radius:6px;color:#415d30}.pr-title{font-size:13px;white-space:nowrap}.pr-route{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pr-status{grid-column:1/-1;font-size:12px;font-weight:650;color:#6c7e4b}.pr-card.approved .pr-status{color:#46702f}.pr-card.conflict{border:2px solid #b56c32;background:#fff2df}.pr-card.conflict .pr-status{color:#9b4c28}.pr-card.merged{background:#ece6f5;border-color:#c3b4d5}.pr-card.merged .pr-status{color:#73558c}.pr-card.excluded,.pr-card.closed{background:#f0e8e7;border-color:#cab4b1}.pr-card.closed .pr-status,.pr-card.excluded .pr-status{color:#8c5650}.empty-pr{font-size:12px;color:#7a8b67;align-self:center;grid-column:1/-1}.local-repos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-height:0}.local-repos[data-count="1"]{grid-template-columns:1fr}.local-repos[data-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.repo.local{border-bottom:3px solid #8fa55b}.repo.jisu{background:#fcf8ed;border-color:#d4c7ad;border-bottom:3px solid #b28c4c}.repo.minsu{background:#f6f2fb;border-color:#cfc2de;border-bottom:3px solid #9b80b5}.repo.active{outline:2px solid #819b41;outline-offset:2px}.empty-repo{flex:1;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px;border:1px dashed #c7d1b9;border-radius:5px;background:#f2f5ea;color:#728461;padding:9px;text-align:center;font-size:12px;min-height:0}.empty-repo strong{font-size:14px}.project-folder{display:flex;flex-direction:column;gap:8px;min-height:0;flex:1}.git-folder{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.history-button{padding:5px 7px;font-size:11px;min-height:28px}.branch-lanes{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.branch-lane,.fetched-branch{display:flex;align-items:center;gap:6px;border-left:3px solid #bacb9d;padding:3px 6px;background:#f4f7ed;border-radius:3px;font-size:11px}.branch-lane.current{background:#e7f0d0;border-color:#8aa544}.branch-lane .record,.fetched-branch .record{height:28px;min-width:28px;font-size:11px}.working-file{min-height:0;border-top:1px solid #dae2cf;padding-top:7px;display:flex;flex-direction:column;gap:6px;flex:1}.file-label,.file-state{font-size:11px;color:#667953}.file-preview{font-size:13px;line-height:1.7;word-break:keep-all;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.local-conflict{display:flex;align-items:center;gap:6px;min-height:35px;flex-shrink:0;padding:6px;background:#fff3dd;border:1px solid #d4ad73;border-radius:5px;font-size:13px}.conflict-input{min-height:26px;min-width:30px;background:#f8e7c6;border:1px solid #c8a166;color:#77501f;border-radius:4px;font-size:12px}.resolution-target{font-size:11px;color:#9b5028}.resolution-target.resolved{color:#557432}.resolution-target .record{height:27px;min-width:27px}.action-area{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.65fr);gap:16px;align-items:center;min-height:82px;border-top:1px solid var(--line);padding-top:8px}.last-change{min-width:0}.summary-heading{display:flex;align-items:center;gap:6px}.summary-heading .text-button{padding:3px 7px;font-size:11px;min-height:26px}.concept{font-size:11px;color:#6d8252;margin-right:auto}.summary-text{font-size:13px;line-height:1.65;margin-top:5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.action-control{display:grid;gap:4px;min-width:0}.action-location{font-size:11px;color:#5f764a}.primary{background:var(--lime);border:1px solid #a5b957;color:#2d431d;font-weight:650;min-height:43px;border-radius:6px;padding:9px 13px;font-size:13px;line-height:1.5;width:100%}.primary:disabled{opacity:1;background:#e2e4cf;border-color:#c6cbb0;color:#7d866b}.completion-title{font-size:13px;color:#58743a;outline:none}.restart{font-size:12px}.error-message{position:fixed;bottom:5px;left:10px;right:10px;z-index:100;padding:10px;background:#f4d7ca;color:#853e29;border-radius:5px;font-size:12px}
dialog{border:1px solid #becdaf;border-radius:12px;background:#fbfdf7;color:#28432c;padding:21px;width:min(620px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;box-shadow:0 25px 80px #1c342a38}dialog::backdrop{background:#172b2245}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.dialog-heading h2{font-size:20px;line-height:1.5}.close{background:transparent;color:#6c7f5d;font-size:28px;min-width:40px;min-height:40px}.file-diff{padding:13px;margin:10px 0;border:1px solid #d3ddc6;border-radius:6px;background:#f0f4e7}.file-diff h3{font-size:12px;color:#6b7d54;margin:0 0 7px}.file-diff p{font-size:15px;line-height:1.85}.file-diff.before p{color:#7e8575;text-decoration:line-through}.file-diff.after{background:#e8f1d3;border-color:#a8be78}.file-conflicts{display:grid;grid-template-columns:1fr 1fr;gap:9px}.file-conflicts .file-diff p{text-decoration:none;color:#6b592c}.file-conflicts .file-diff{background:#f5ecd7}.file-conflicts .file-diff:first-child{background:#eef3df}#file-save{margin-top:15px}#record-content,.info-pre{white-space:pre-wrap;overflow-wrap:anywhere;font:14px/1.9 Pretendard,sans-serif;background:#eef3e4;padding:13px;border-radius:6px}#record-location,#record-parents{font-size:12px;line-height:1.8;margin:10px 0;color:#61764f}#info-body p{font-size:14px;line-height:1.8;margin:10px 0}.info-records{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.info-note{background:#f0f4e7;border-left:3px solid #98b25b;padding:12px}.just-changed{outline:2px solid #a7ba80;outline-offset:1px}.map-flight{position:fixed;z-index:20;transform:translate(-50%,-50%);padding:7px 10px;max-width:180px;border:1px solid #7d9d3c;border-radius:18px;background:#d6e58f;box-shadow:0 3px 14px #72972c55;color:#3e5a1e;font-size:12px;text-align:center;pointer-events:none}body[data-transition=animating] .record:disabled,body[data-transition=animating] .main-badge:disabled{opacity:1}
@media(max-height:760px){.repo{padding:9px;gap:6px}.repo-heading h2{font-size:15px}.repo-heading{gap:7px;min-height:25px}.pr-list{min-height:53px}.pr-card{padding:7px 9px;gap:4px}.record{height:28px;min-width:28px;font-size:11px}.remote-flow{min-height:34px}.issue-card{min-height:28px;padding:4px 6px;font-size:11px}.file-preview{-webkit-line-clamp:2;font-size:12px}.main-badge{min-height:28px;font-size:11px}.working-file{gap:4px}.action-area{min-height:76px}.summary-text{font-size:12px}}
@media(max-width:800px){main{padding:6px 8px 8px}.site-header{padding:0 9px}.lesson-name,.lesson-caption{display:none}.lesson-tabs{width:100%}.lesson-tabs button{padding:5px;font-size:11px;min-height:35px}.repo-heading h2{font-size:14px}.reviewer{font-size:10px}.repo-heading{gap:6px}.workshop-map{gap:8px;grid-template-rows:minmax(0,1fr) minmax(0,1fr)}.local-repos{gap:8px}.pr-card{grid-template-columns:1fr;gap:3px;padding:6px}.pr-route{display:none}.pr-title,.pr-status{font-size:11px}.action-area{grid-template-columns:1fr;gap:5px;min-height:105px;padding-top:6px}.action-control{grid-template-columns:1fr;gap:3px}.action-location{display:none}.summary-text{-webkit-line-clamp:2;font-size:11px;margin-top:2px}.summary-heading{height:22px}.concept{font-size:10px}.summary-heading .text-button{font-size:10px;min-height:22px;padding:2px 6px}.primary{min-height:38px;font-size:12px;padding:7px}.remote-flow{gap:8px}.branch-tips{gap:5px}.remote-branch{gap:4px;padding:3px 5px;font-size:10px}.flow-label{display:none}.record{height:27px;min-width:27px;font-size:11px}.issue-list{gap:5px}.issue-card{gap:4px;font-size:10px;padding:4px}.issue-name,.issue-closed{display:none}.assignee{font-size:10px;padding:2px 4px}.assignee-pool{display:none}.main-trail{gap:5px}.git-folder{gap:5px}.history-button{padding:3px 5px}.file-preview{font-size:12px}}
@media(max-width:600px){.site-header{height:38px}.brand{font-size:12px}.brand img{width:27px;height:27px}main{height:calc(100dvh - 38px);gap:5px}#workshop{grid-template-rows:31px minmax(0,1fr) auto;gap:6px}.lesson-nav select,.lesson-nav>button{height:30px;font-size:11px}.lesson-nav select{flex:1;width:auto}.workshop-map{grid-template-rows:minmax(140px,1fr) minmax(0,1.15fr)}.local-repos,.local-repos[data-count="3"],.local-repos[data-count="1"]{grid-template-columns:1fr;gap:5px}.repo.local{display:grid;grid-template-columns:80px minmax(0,1fr);padding:6px;gap:6px;align-items:center;border-bottom-width:2px}.repo.local .repo-heading{display:flex;flex-wrap:wrap;gap:2px}.repo.local .repo-heading h2{font-size:12px}.repo.local .local-role{display:none}.repo.local .repo-heading .text-button{margin:0;min-height:23px;padding:2px 5px;font-size:10px}.project-folder{gap:3px}.git-folder{gap:4px;flex-wrap:nowrap}.main-badge{padding:4px 5px;font-size:10px;min-height:25px}.branch-lanes{gap:3px;flex-wrap:nowrap}.branch-lane{padding:1px 4px;gap:3px;font-size:10px}.branch-lane:not(.current){display:none}.branch-lane .record,.fetched-branch .record{height:24px;min-width:24px;font-size:10px;padding:2px}.history-button{font-size:10px;min-height:24px}.working-file{padding-top:3px;flex:0}.file-preview{display:none}.file-label{display:none}.file-state{font-size:10px}.empty-repo{padding:3px;gap:3px;font-size:10px}.empty-repo strong{font-size:11px}.empty-repo span{display:none}.local-conflict{padding:3px 5px;gap:5px;min-height:27px}.conflict-input{min-height:22px;font-size:10px;min-width:26px}.resolution-target{font-size:10px}.resolution-target .record{height:23px;min-width:23px}.repo.jisu:has(.local-conflict) .branch-lanes,.repo.jisu:has(.local-conflict) .working-file{display:none}.repo.remote{padding:7px;gap:5px}.repo.remote .repo-heading h2{font-size:14px}.repo.remote .reviewer{margin-left:auto;font-size:10px}.repo.remote .repo-heading>.text-button{font-size:10px;padding:3px 5px;min-height:24px}.remote-flow{flex:1;flex-wrap:wrap;gap:4px}.main-trail,.branch-tips{flex-wrap:nowrap}.branch-tips{gap:4px}.remote-branch{font-size:9px;padding:2px 4px}.remote-branch .record{height:23px;min-width:23px;font-size:10px;padding:2px}.main-trail .record{height:25px;min-width:25px}.pr-list{min-height:44px;gap:5px}.pr-card{padding:5px;gap:3px}.pr-title,.pr-status{font-size:10px}.pr-status{white-space:nowrap}.action-area{min-height:105px}.completion-title{font-size:11px}.file-conflicts{gap:6px}.file-diff{padding:10px}.file-diff p{font-size:13px}dialog{padding:17px}.dialog-heading h2{font-size:18px}}
@media(max-width:600px) and (max-height:650px){.workshop-map{grid-template-rows:minmax(130px,1fr) minmax(0,1fr)}.repo.local .history-button{display:none}.repo.local .working-file{display:none}.local-repos[data-count="3"] .repo.local{grid-template-columns:72px minmax(0,1fr)}.repo.local .repo-heading .text-button{padding:1px 4px;min-height:20px}.repo.local .repo-heading h2{font-size:11px}.action-area{min-height:97px}.summary-text{line-height:1.45}.concept{max-width:55%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media(prefers-reduced-motion:reduce){.map-flight{display:none!important}}
.file-open.dirty{background:#f7e4bc;border-color:#c79c58;color:#825521}.repo.jisu:has(.local-conflict) .git-folder{display:flex}@media(max-width:600px){.repo.jisu:has(.local-conflict) .git-folder{display:none}.repo.jisu:has(.local-conflict) .local-conflict{margin:0}.pr-list{grid-template-columns:repeat(3,minmax(0,1fr))}.pr-list:has(>.pr-card:first-child:last-child){grid-template-columns:1fr}.pr-list:has(>.pr-card:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px) and (max-height:650px){.remote-flow .main-trail{display:none}.branch-tips{justify-content:start}.remote-flow{flex:0;min-height:25px}.pr-list{min-height:40px}.pr-card{padding:4px}.repo.remote{gap:4px}}
@media(max-height:650px){.file-preview{display:none}.working-file{flex:0}}
body[data-transition=animating] .workshop-map button:disabled{opacity:1}
/* On short, wide screens keep GitHub beside the local repositories. */
@media(min-width:601px) and (max-height:650px){
 .site-header{height:32px}.brand{font-size:12px}.brand img{width:26px;height:26px}.lesson-name{display:none}main{height:calc(100dvh - 32px);padding:5px 10px 7px;gap:5px}.lesson-tabs{padding:2px}.lesson-tabs button{min-height:27px;padding:3px 8px;font-size:11px}#workshop{grid-template-rows:28px minmax(0,1fr) auto;gap:6px}.lesson-nav select,.lesson-nav>button{height:27px;font-size:11px}
 .workshop-map{grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr);gap:10px}.local-repos,.local-repos[data-count="1"],.local-repos[data-count="3"]{grid-template-columns:1fr;gap:6px}.repo.local{display:grid;grid-template-columns:95px minmax(0,1fr);align-items:center;padding:6px;gap:6px}.repo.local .repo-heading{flex-wrap:wrap;gap:3px}.repo.local .repo-heading h2{font-size:12px}.repo.local .local-role,.repo.local .working-file,.repo.local .history-button{display:none}.repo.local .repo-heading .text-button{margin:0;font-size:10px;min-height:22px;padding:2px 5px}.git-folder{gap:5px}.branch-lanes{gap:4px}.branch-lane{padding:2px 4px;gap:4px}.branch-lane:not(.current){display:none}.branch-lane .record{height:24px;min-width:24px}.repo.jisu:has(.local-conflict) .git-folder{display:none}.local-conflict{font-size:11px;padding:4px;gap:5px}.conflict-input{font-size:10px;min-height:24px}.project-folder{flex:0}
 .repo.remote{padding:8px;gap:5px}.remote .repo-heading h2{font-size:14px}.reviewer{font-size:10px}.remote .repo-heading>.text-button{padding:4px 5px;font-size:10px}.remote-flow{flex-direction:column;align-items:start;justify-content:center;gap:8px}.branch-tips{justify-content:start;gap:6px}.remote-branch{font-size:10px;padding:3px 5px}.pr-card{grid-template-columns:1fr;padding:6px;gap:4px}.pr-route{display:none}.pr-title,.pr-status{font-size:11px}.pr-list{min-height:44px;gap:6px}.issue-name,.assignee-pool{display:none}.issue-card{min-height:26px;font-size:10px}.assignee{font-size:10px}
 .action-area{grid-template-columns:minmax(0,1fr) minmax(250px,.65fr);gap:12px;min-height:60px;padding-top:4px}.summary-heading{height:22px}.concept{font-size:10px}.summary-heading .text-button{font-size:10px;min-height:22px;padding:2px 6px}.summary-text{font-size:11px;line-height:1.45;margin-top:3px}.action-location{font-size:10px}.primary{min-height:36px;padding:7px 9px;font-size:12px}.completion-title{font-size:11px}
}

.header-tools{display:flex;align-items:center;gap:6px;flex-shrink:0}#language-select{font:inherit;font-size:12px;color:#425c34;background:#fffefb;border:1px solid #c5d3b8;border-radius:4px;padding:4px;min-height:28px}.brand{min-width:0}.brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brand img{flex-shrink:0}#load-status{grid-row:1/-1;align-self:center;text-align:center;font-size:14px}
@media(max-width:600px){.site-header{gap:6px}.header-tools{gap:4px}#language-select{font-size:11px;max-width:78px}.brand{gap:5px}:lang(en) .brand{font-size:11px}:lang(en) .repo.local{grid-template-columns:94px minmax(0,1fr)}:lang(en) .repo.local .repo-heading h2{white-space:normal;font-size:11px}:lang(en) .reviewer{font-size:9px}:lang(en) .pr-title,:lang(en) .pr-status{font-size:10px}:lang(en) .repo.local .main-badge{padding:3px;font-size:10px}:lang(en) .summary-text{line-height:1.4}}

@media(max-width:600px){:lang(en) .repo.local .repo-heading h2{font-size:10px;white-space:nowrap;letter-spacing:-.02em}:lang(en) .repo.local .repo-heading{gap:1px}}
@media(min-width:601px) and (max-height:650px){:lang(en) .repo.local .repo-heading h2{font-size:10px}}
