@import url('https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;500;600;700;800&display=swap');
@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css');
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Source+Serif+4:wght@400;500;600&display=swap');
:root{--bg:#FBF9F6;--ink:#1A1A1A;--body:#4A4A48;--muted:#8A857C;--navy:#1B2F5E;--navy2:#24407A;--red:#D0343A;--card:#FFFFFF;--soft:#F6F3EE;--line:rgba(26,26,26,.10);--strong:rgba(26,26,26,.18);--tint:#EEF1F7;--ok:#2E6B4F;--okbg:#EEF4F0;--bad:#D0343A;--badbg:#FBF1F1;--mono:'IBM Plex Mono',monospace}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--body);font:16px/1.65 'Pretendard Variable',sans-serif}a{color:var(--navy);cursor:pointer;text-underline-offset:4px}button,input,textarea,select,a{touch-action:manipulation}button,input,textarea,select{max-width:100%;transition:background 150ms,box-shadow 150ms,border-color 150ms}:focus-visible{outline:3px solid var(--tint);outline-offset:3px}h1,h2,h3{color:var(--ink);font-weight:800;letter-spacing:-.03em;line-height:1.2}h1{font-size:clamp(32px,4vw,40px);margin:12px 0 16px}h2{font-size:28px;margin:8px 0 24px}h3{font-size:19px;margin:32px 0 12px}p{margin:16px 0}.muted{color:var(--muted)}.small{font-size:14px}.red{color:var(--red)}
.top{height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 24px;background:white;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:8px;font-size:23px;letter-spacing:-.03em;color:var(--ink);white-space:nowrap}.brand img{width:28px;height:28px;object-fit:contain}.brand>span{font-size:12px}.top-right{display:flex;align-items:center;gap:16px}.lab-label,.kicker,.sname,.tag,th{font:500 11px/1.6 var(--mono);text-transform:uppercase;letter-spacing:.16em}.lab-label{color:var(--navy)}.who{font-size:12px}.who a{display:inline-flex;align-items:center;min-height:44px;margin-left:8px}.kicker{color:var(--red)}main{max-width:808px;padding:32px 24px 80px;margin:auto;overflow-wrap:anywhere}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:32px;margin:24px 0;box-shadow:0 1px 2px rgba(26,26,26,.04),0 8px 24px rgba(26,26,26,.05)}
button,.btn{font:600 15px/1.4 'Pretendard Variable',sans-serif;display:inline-flex;justify-content:center;align-items:center;min-height:48px;padding:12px 20px;border:1px solid transparent;border-radius:12px;background:var(--navy);color:white;cursor:pointer;text-decoration:none;text-align:center}button:hover,.btn:hover{background:var(--navy2)}button.ghost,.btn.ghost{background:transparent;color:var(--navy)}button.ghost:hover,.btn.ghost:hover{background:var(--soft)}button.secondary,.btn.secondary{background:white;color:var(--navy);border-color:var(--line)}button.secondary:hover{background:var(--soft)}button:disabled{opacity:.45;cursor:not-allowed}input[type=text],textarea,select{width:100%;min-height:56px;padding:16px;border:1px solid transparent;border-radius:12px;background:var(--soft);color:var(--ink);font:inherit}textarea{min-height:112px;resize:vertical;font-family:var(--mono);font-size:14px}input:focus,textarea:focus,select:focus{outline:none;box-shadow:0 0 0 2px var(--navy)}input.codebox{font:600 30px var(--mono);letter-spacing:.16em;text-align:center;text-transform:uppercase}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grow{flex:1;min-width:0}.err{color:var(--red);border-left:2px solid var(--red);padding-left:12px;margin:16px 0}.err:empty{display:none}.passage,.stem{font:400 19px/1.65 'Source Serif 4',serif;color:var(--ink)}.passage{padding:8px 0 24px;border-bottom:1px solid var(--line)}.stem{margin:24px 0}.steps{margin-top:32px}.step{padding:24px 0;margin:16px 0;border-top:1px solid var(--line)}.sname{color:var(--navy)}.sdesc,.choice-intro{font-size:14px;color:var(--muted);margin:8px 0 16px}.step.wait{opacity:.65}.mine{white-space:pre-wrap;margin:16px 0}.model,.hint,.take{padding:16px;background:var(--soft);border-radius:12px;margin:16px 0;font-size:15px}.model b,.why{color:var(--navy)}.why{font-size:14px}.marks{margin-top:16px}.marks button{min-height:44px;font-size:14px}.opt{display:flex;align-items:flex-start;gap:16px;min-height:56px;padding:16px;margin:8px 0;background:white;border:1px solid var(--line);border-radius:12px;transition:background 150ms}.opt .L{display:flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;border:1px solid var(--strong);border-radius:50%;color:var(--navy);font:500 12px var(--mono)}.opt.pickable{cursor:pointer}.opt.pickable:hover{background:var(--soft)}.opt.sel{background:var(--tint)}.opt.sel .L{background:var(--navy);color:white;border-color:var(--navy)}.opt.key{background:var(--okbg)}.opt.wrongpick{border-left:3px solid var(--red)}.judge{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.judge button{justify-content:flex-start;min-height:44px;background:var(--tint);color:var(--navy);font-size:14px}.judge button.ghost{background:white;border:1px solid var(--line)}.judge button:before{content:'';width:16px;height:16px;border:1px solid var(--navy);border-radius:50%;margin-right:8px;background:var(--navy);box-shadow:inset 0 0 0 4px var(--tint)}.judge button.ghost:before{background:white;box-shadow:none;border-color:var(--strong)}.judge select{grid-column:1/-1;font-size:14px}.verd{font-size:14px;margin-top:8px}.verd.good{color:var(--ok)}.verd.badv{color:var(--body)}.tag{display:inline-block;padding:4px 8px;background:var(--soft);border-radius:999px;color:var(--muted);margin:4px 0}.tag.ok{background:var(--okbg);color:var(--ok)}.tag.bad{color:var(--red);background:var(--badbg)}.bar{display:flex;gap:4px;margin:24px 0 12px;height:4px}.bar>i{display:block;height:100%;background:var(--navy);border-radius:999px}.bar{background:var(--line);border-radius:999px}.clock{font:500 12px var(--mono);letter-spacing:.08em;color:var(--navy);padding:8px 12px;background:var(--soft);border-radius:999px;white-space:nowrap}.clock:empty{display:none}.clock.over{color:var(--red)}.head{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}table{border-collapse:collapse;width:100%;font-size:13px}th,td{border-bottom:1px solid var(--line);padding:12px 8px;text-align:left;vertical-align:top}th{color:var(--muted);letter-spacing:.08em}.tablewrap{max-width:100%;overflow:auto}.dots{display:flex;flex-wrap:wrap;gap:4px;padding:4px;background:var(--soft);border-radius:12px;margin-bottom:24px}.dots button{min-width:44px;min-height:44px;padding:8px;background:transparent;color:var(--muted);font:500 12px var(--mono)}.dots button.ans{color:var(--navy)}.dots button.cur{background:white;color:var(--navy);box-shadow:0 1px 2px rgba(26,26,26,.04)}.outline{max-height:60vh;overflow:auto}.outline div{border-bottom:1px solid var(--line);padding:8px 0}.outline a,#back,#map,#rhome{display:inline-flex;align-items:center;min-height:44px}ul.tight{padding-left:24px}label:has(input[type=checkbox]){display:inline-flex;align-items:center;gap:8px;min-height:44px}.result-summary{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:8px 0 24px;margin-bottom:24px;border-bottom:1px solid var(--line);color:var(--navy);font:500 14px var(--mono)}.result-summary strong{font:500 clamp(36px,8vw,56px) var(--mono);letter-spacing:-.03em}.status-icon{width:18px;height:18px;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.8;flex:none}.right{color:var(--ok)}.notyet{color:var(--red)}.skill-meter{display:flex;gap:16px;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:16px 0}.meter-group{display:grid;gap:8px;flex:1}.meter-label{font:400 11px var(--mono);color:var(--muted)}.segments{display:flex;gap:4px}.segments i{height:4px;flex:1;max-width:32px;background:var(--line);border-radius:999px}.segments i.filled{background:var(--navy)}details.second-look{background:var(--soft);padding:16px;border:1px solid var(--line);border-radius:12px;margin:12px 0}summary{cursor:pointer;min-height:44px;align-content:center;font-weight:600;color:var(--navy)}.result-row{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.login{position:relative;isolation:isolate;overflow:hidden;max-width:760px;margin:24px auto 0;padding:38px 24px 100px}.login h1{font-size:clamp(44px,6vw,70px);font-weight:800;max-width:540px;margin:24px 0;line-height:1.08}.login .rule{width:70px;height:3px;background:var(--red);margin:28px 0}.login-form{max-width:440px}.login #go{width:100%;min-height:52px}.login .watermark{position:absolute;right:12px;bottom:-35px;z-index:-1;font:700 clamp(100px,18vw,200px) var(--mono);letter-spacing:-.08em;color:rgba(122,116,106,.09);pointer-events:none;user-select:none}.help{font-size:13px;margin-top:24px}.help a{display:inline-flex;min-height:44px;align-items:center}
@media(max-width:600px){.top{padding:0 16px;gap:8px}.brand{font-size:19px}.top-right{gap:8px}.lab-label{display:none}.who{font-size:11px}.who a{margin-left:4px}.who:empty{display:none}.clock{padding:8px;font-size:11px}main{padding:24px 16px 112px}.card{padding:24px 16px;margin:16px 0}h2{font-size:24px}.passage,.stem{font-size:18px}.opt{gap:12px;padding:16px 12px}.step{padding:16px 0}.login{margin:0;padding:24px 8px 80px}.login h1{font-size:48px}.row>button,.row>.btn{width:100%}.action-bar{position:fixed;bottom:0;left:0;right:0;z-index:6;background:white;border-top:1px solid var(--line);padding:12px 16px calc(12px + env(safe-area-inset-bottom));display:flex;gap:8px}.action-bar>button{width:100%;min-width:0}.action-bar .small{display:none}.skill-meter{gap:12px}.skill-meter>b{font-size:13px}.tablewrap table{font-size:11px}th,td{padding:12px 4px;overflow-wrap:anywhere}th{font-size:9px;letter-spacing:0}.judge button{padding:12px 8px}.brand>span{font-size:10px}.top:has(.brand>span){height:auto;min-height:64px;flex-wrap:wrap}.result-summary{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}
.progress-meter{display:flex;gap:4px;margin:24px 0 12px}.progress-meter i{flex:1;height:4px;background:var(--line);border-radius:999px}.progress-meter i.filled{background:var(--navy)}.judge .status-icon{margin-right:4px;color:inherit}
:root{--navy:#0B2E6F;--red:#C8102E}.sentence{display:block;text-align:left;width:100%;background:transparent;color:var(--ink);font:inherit;padding:12px 8px;border:1px solid transparent}.sentence:hover,.sentence.sel{background:var(--tint);color:var(--navy);border-color:var(--navy)}.sentence:disabled{opacity:1;cursor:default}.opt{width:100%;text-align:left;color:var(--ink)}.opt:hover{color:var(--ink)}meter{width:200px;max-width:100%}
:root{--navy:#1B2F5E;--red:#D0343A}.top .brand{font-size:19px}.top>span{font:11px var(--mono)}#timer{margin-left:auto;text-align:right;max-width:230px}#timer .clock{font:600 28px/1.1 var(--mono);background:none;padding:0}#timer-note{font:10px/1.3 var(--mono);max-width:230px}.drain{height:3px;background:var(--line);margin-top:4px}.drain i{display:block;height:100%;background:var(--navy)}#timer:has(.over) .drain i{background:var(--red)}.sentence{display:inline;width:auto;min-height:0;padding:3px 0;border:0;border-radius:3px;font:inherit;background:none;cursor:pointer}.sentence:hover{background:var(--soft);color:inherit}.sentence.sel{background:var(--tint);text-decoration:underline;text-decoration-color:var(--navy);text-underline-offset:4px}.passage blockquote{margin:0;padding:24px 16px;background:var(--soft);border-radius:12px}.passage li{margin-bottom:8px}.stepper{font:11px/2 var(--mono);color:var(--muted);padding:16px 0}.stepper .current{color:var(--navy);font-weight:700}.mine{background:var(--soft);padding:16px;border-radius:12px}.opt:disabled{opacity:1}.opt .verd{display:block;font-weight:400}.dots span{display:grid;place-items:center;width:32px;height:32px;color:var(--muted);font:12px var(--mono);border:1px solid var(--line);border-radius:50%}.dots .ans{background:var(--navy);color:white}.dots .cur{border:2px solid var(--navy);color:var(--navy)}.login{max-width:480px;margin:48px auto;padding:32px}.login h1{font-size:40px}.login button{width:100%;margin-top:24px}.featured{border-color:var(--navy)}.featured button{width:100%}.locked{opacity:.65}.action-bar{margin-top:24px}.teacher{max-width:1440px}.teacher table{table-layout:auto}.teacher th,.teacher td{white-space:nowrap;text-align:right;font-family:var(--mono);letter-spacing:0}.teacher th:first-child,.teacher td:first-child{text-align:left;white-space:normal;font-family:inherit;min-width:170px}.teacher tbody tr{cursor:pointer}.teacher tbody tr:hover{background:var(--soft)}.teacher-mobile{display:none}.detail{background:white;border:1px solid var(--line);border-radius:16px;padding:24px;margin-top:24px}.detail meter{width:100%}.teacher-actions{display:flex;gap:8px;flex-wrap:wrap}.detail h3{border-top:1px solid var(--line);padding-top:24px}.detail .step{padding:12px;background:var(--soft);border:0;border-radius:12px}.teacher label{display:block;margin:24px 0 8px}.teacher select{max-width:400px}.teacher-mobile dl{display:grid;grid-template-columns:1fr 1fr}.teacher-mobile dd{font-family:var(--mono);text-align:right;margin:0}.teacher-mobile dt,.teacher-mobile dd{padding:4px 0}@media(max-width:999px){.teacher-table{display:none}.teacher-mobile{display:block}}@media(max-width:600px){.top>span{display:none}.top .brand span{display:none}#timer{max-width:195px}#timer-note{max-width:195px;font-size:9px}#timer .clock{font-size:26px}.action-bar{margin:0}.login{margin-top:24px;padding:24px 16px}.login h1{font-size:36px}.stepper{font-size:10px}.detail{padding:16px}.teacher-actions>*{flex:1}.teacher-mobile button{width:100%}}

/* Chris's pacing reference: passage left, written steps right. */

:root{--navy:#0B2E6F;--red:#C8102E}
.ladder-page{max-width:1230px;font-family:'Public Sans',Arial,sans-serif}.ladder-page h1{font-size:26px}.ladder-page button,.ladder-page textarea{font-family:inherit}.ladder-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:28px;align-items:start}.ladder-grid>div{min-width:0}.ladder-page .passage{background:white;border:1px solid #D5DAE4;border-radius:10px;padding:22px 24px;font:19px/1.6 'Source Serif 4',Georgia,serif}.ladder-page .stem{font:700 15px/1.5 'Public Sans',Arial,sans-serif;color:#5E6677}.ladder-side{display:grid;gap:14px}.ladder-field label{display:block;font-size:14px;font-weight:800;color:var(--red)}.ladder-field label span{font-weight:500;color:#5E6677;margin-left:8px}.ladder-field textarea{background:white;border:1px solid #D5DAE4;border-radius:8px;margin-top:5px;min-height:64px;padding:9px 11px}.ladder-clock{margin:18px 0;border-bottom:1px solid #D5DAE4;padding-bottom:16px}.ladder-clock .row{margin-bottom:10px;font-size:13px}.level-chip{color:var(--navy);background:#EAEFF8;font-weight:800;letter-spacing:.04em}#ladder-clock{font-size:32px;color:var(--ink);min-width:105px;font-variant-numeric:tabular-nums}.ladder-segments{display:flex;gap:3px;height:14px}.ladder-segments i{flex:1;min-width:0;border-radius:2px}.ladder-segments .write{background:var(--red)}.ladder-segments .choose{background:var(--navy)}.ladder-segments .spent{background:#DDE2EC}.seglabels{display:flex;justify-content:space-between;font:600 11px/1.5 var(--mono);color:#5E6677;margin-top:4px}.ladder-page .opt{width:100%;color:var(--ink);text-align:left;margin:0}.ladder-page .opt.sel{background:#EAEFF8;border-color:var(--navy)}mark.f{background:none;color:var(--navy);font-weight:600;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}mark.k{background:none;color:var(--red);font-weight:600}.level-banner{padding:16px;background:#E3F3EA;color:#1E7A45;font-weight:800}.level-path{display:flex;gap:6px;flex-wrap:wrap}.written-review{border-bottom:1px solid var(--line)}.written-review p{white-space:pre-wrap}.ladder-page .action-bar{margin-top:6px}.ladder-page .verdict{margin:6px 0}.ladder-page details{border:1px solid var(--line);padding:12px;border-radius:8px}
@media(max-width:700px){.ladder-grid{grid-template-columns:minmax(0,1fr);gap:20px}.ladder-page .passage{padding:18px;font-size:18px}.ladder-page h1{font-size:24px}.ladder-clock .row{gap:8px}.ladder-segments{gap:1px}.ladder-page{padding-bottom:120px}}
body:has(.ladder-page){background:#F5F6F9}.ladder-page .action-bar{z-index:6}.ladder-page .seglabels{letter-spacing:.06em}.ladder-page .ladder-clock .red{color:var(--red)}

.ladder-page .passage p{margin:0 0 14px}.ladder-page .passage p:last-child{margin-bottom:0}.ladder-page .passage .xt{font:700 13px/1.4 'Public Sans',Arial,sans-serif;letter-spacing:.06em;color:var(--navy);margin:8px 0 6px}.ladder-page .passage ul.notes{margin:0 0 14px;padding-left:22px}.ladder-page .passage ul.notes li{margin:0 0 6px}
