:root{--ink:#141414;--ink-2:#3a3a3a;--muted:#5c5c5c;--line:#b5b5b5;--rule:#e2e2e2;--tint:#f6f6f4;--accent:#1f3a93;--accent-soft:#c9d1ea;--warn:#8a4a12;--warn-soft:#fbeee0;--danger:#a3221b;--ok:#1d6b3a;--serif:"Source Serif 4","Times New Roman",Times,serif;--sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--test-serif:"Times New Roman",Tinos,Times,serif}*{box-sizing:border-box}body,html{margin:0;padding:0;background:#fff;color:var(--ink)}body{font-family:var(--sans);font-size:15px;line-height:1.5}a{color:var(--accent)}a:hover{color:#132560}button{font:inherit}img{max-width:100%}.serif{font-family:var(--serif)}.muted{color:var(--muted)}.small{font-size:13px}.nowrap{white-space:nowrap}.right{text-align:right}.center{text-align:center}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app-header{border-bottom:1px solid var(--ink);background:#fff}.app-header-inner{max-width:1240px;margin:0 auto;padding:14px 24px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 36px}.brand{font-family:var(--serif);font-size:24px;font-weight:700;letter-spacing:-.01em;color:var(--ink);text-decoration:none}.app-nav{display:flex;flex-wrap:wrap;gap:6px 24px;flex:1 1 auto}.app-nav a{color:var(--ink-2);text-decoration:none;padding:4px 0;border-bottom:2px solid transparent}.app-nav a[aria-current=page]{color:var(--ink);font-weight:600;border-bottom-color:var(--ink)}.app-nav a:hover{color:var(--ink)}.app-user{display:flex;align-items:center;gap:14px;font-size:14px}.app-user,.app-user a,.app-user button.linklike{color:var(--ink-2)}.container{max-width:1240px;margin:0 auto;padding:32px 24px 64px}.page-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 24px;margin-bottom:28px}h1{font-size:36px;letter-spacing:-.01em;margin:0;line-height:1.15}h1,h2{font-family:var(--serif);font-weight:600}h2{font-size:22px;margin:0 0 12px}h3{font-family:var(--serif);font-weight:600;font-size:18px;margin:0 0 8px}.section{border-top:1px solid var(--ink);padding-top:16px;margin-bottom:40px}.row{display:flex;flex-wrap:wrap;gap:40px}.row>*{min-width:0}.stack{display:flex;flex-direction:column;gap:12px}.inline{gap:8px 12px}.inline,.spread{display:flex;flex-wrap:wrap;align-items:center}.spread{justify-content:space-between;gap:8px 16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:14px;font-weight:600;padding:9px 18px;border:1px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer;text-decoration:none;line-height:1.2;min-height:38px}.btn:hover{background:#333;color:#fff}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-outline{background:#fff;color:var(--ink)}.btn-outline:hover{background:var(--tint);color:var(--ink)}.btn-sm{padding:5px 12px;font-size:13px;min-height:30px}.btn-danger{background:#fff;color:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:#fbeceb;color:var(--danger)}.btn-accent{background:var(--accent);border-color:var(--accent)}.btn-accent:hover{background:#172d75}.linklike{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;text-decoration:underline}.chips{display:inline-flex;flex-wrap:wrap;gap:6px}.chip{font-size:13px;padding:5px 12px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;text-decoration:none}.chip.on,.chip[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}.seg{display:inline-flex;flex-wrap:wrap;align-self:flex-start;border:1px solid var(--ink)}.seg>*{font-size:13px;padding:6px 14px;background:#fff;color:var(--ink);border:0;border-right:1px solid var(--ink);cursor:pointer;text-decoration:none}.seg>:last-child{border-right:0}.seg>.on,.seg>[aria-pressed=true]{background:var(--ink);color:#fff}.tag{display:inline-block;font-size:12px;padding:1px 8px;border:1px solid var(--line);color:var(--ink-2);background:#fff;white-space:nowrap}.tag-dark{border-color:var(--ink);color:var(--ink)}.tag-warn{border-color:#e7c39c;color:var(--warn);background:var(--warn-soft)}.tag-ok{border-color:#a9d3b6;color:var(--ok);background:#eef8f1}.tag-bad{border-color:#e6b0ad;color:var(--danger);background:#fbeceb}.field{display:flex;flex-direction:column;gap:5px;font-size:14px}.field>span,.label{font-size:13px;color:var(--ink-2);font-weight:500}input[type=date],input[type=datetime-local],input[type=number],input[type=password],input[type=search],input[type=text],input[type=url],select,textarea{font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:0;min-height:38px;width:100%}textarea{min-height:90px;resize:vertical}a:focus-visible,button:focus-visible,input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:14px 20px;gap:14px 20px}.checkbox{display:inline-flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse;font-size:14px}table.table th{text-align:left;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2);font-weight:500;padding:8px 10px 8px 0;border-bottom:1px solid var(--ink);white-space:nowrap}table.table td{padding:11px 10px 11px 0;border-bottom:1px solid var(--rule);vertical-align:top}table.table tr.clickable{cursor:pointer}table.table tr.clickable:hover td{background:var(--tint)}table.table tr.dim td{color:var(--muted)}.notice{border:1px solid var(--ink);padding:12px 16px;font-size:14px}.notice-warn{border-color:#e7c39c;background:var(--warn-soft);color:var(--warn)}.notice-error{border-color:#e6b0ad;background:#fbeceb;color:var(--danger)}.notice-ok{border-color:#a9d3b6;background:#eef8f1;color:var(--ok)}.empty{border:1px dashed var(--line);padding:28px;text-align:center;color:var(--muted)}.load-more{padding:18px 0}.load-more,.modal-backdrop{display:flex;justify-content:center}.modal-backdrop{position:fixed;inset:0;background:rgba(20,20,20,.45);align-items:center;padding:16px;z-index:1000}.modal{background:#fff;border:1px solid var(--ink);max-width:640px;width:100%;max-height:calc(100vh - 32px);overflow:auto;padding:24px}.modal-wide{max-width:1100px}.modal h2{margin-bottom:8px}.modal-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:20px}.rt{font-family:var(--test-serif);font-size:17px;line-height:1.55;color:#111;overflow-wrap:anywhere}.rt p{margin:0 0 .7em}.rt p:last-child{margin-bottom:0}.rt ol,.rt ul{margin:0 0 .7em;padding-left:1.6em}.rt li p{margin:0}.rt img{max-width:100%;height:auto;display:block;margin:.4em 0}.rt table{border-collapse:collapse;margin:.4em 0 .8em;max-width:100%}.rt td,.rt th{border:1px solid #555;padding:4px 8px;vertical-align:top;font-size:.93em}.rt th{background:#f2f2f2;font-weight:600}.rt [data-indent="1"]{margin-left:2em}.rt [data-indent="2"]{margin-left:4em}.rt [data-indent="3"]{margin-left:6em}.rt-inline p{display:inline;margin:0}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;font-family:var(--test-serif)}.login-box{width:100%;max-width:360px}.login-box h1{font-weight:700;font-size:28px;text-align:center;margin-bottom:28px}.login-box h1,.login-box input,.login-box label{font-family:var(--test-serif)}.login-box input{font-size:16px}.rte{border:1px solid var(--line);background:#fff}.rte:focus-within{border-color:var(--ink)}.rte-toolbar{display:flex;flex-wrap:wrap;gap:2px;padding:4px;border-bottom:1px solid var(--rule);background:var(--tint)}.rte-btn{font-size:13px;min-width:32px;height:30px;padding:0 8px;border:1px solid transparent;background:transparent;cursor:pointer;color:var(--ink)}.rte-btn:hover{border-color:var(--line);background:#fff}.rte-btn[aria-pressed=true]{background:var(--ink);color:#fff}.rte-btn:disabled{opacity:.35;cursor:default}.rte-sep{width:1px;background:var(--line);margin:4px}.rte-content{padding:12px 14px;outline:none}.rte-content:focus{outline:none}.rte-content img.ProseMirror-selectednode{outline:2px solid var(--accent)}.rte-content .selectedCell{background:#e8ecf7}.rte-content table{table-layout:fixed}.rte-content p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:#aaa;float:left;height:0;pointer-events:none}.choice-radio{display:inline-flex;flex-direction:column;align-items:center;gap:2px;padding-top:6px;cursor:pointer;font-weight:600;width:28px}.q-preview{display:flex;flex-wrap:wrap;border:1px solid var(--line);min-height:320px}.q-preview-left{flex:1 1 380px;padding:24px;border-right:3px solid #ccc;min-width:0}.q-preview-right{flex:1 1 340px;padding:24px;min-width:0}.q-preview-choice{display:flex;gap:12px;align-items:center;border:1px solid #333;border-radius:8px;padding:10px 14px}.q-preview-choice.is-correct{border-width:2px;border-color:var(--ok)}.q-letter{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:1.5px solid #222;border-radius:50%;font-size:13px;font-weight:600;flex:none;font-family:var(--sans)}.builder-row{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--rule);background:#fff}.builder-row[draggable=true]{cursor:-webkit-grab;cursor:grab}.builder-num{width:28px;flex:none;font-weight:600;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.builder-empty{color:var(--muted);padding:6px 0}.assign-row{display:flex;flex-wrap:wrap;gap:16px 32px;padding:18px 0;border-top:1px solid var(--ink)}.assign-row:last-child{border-bottom:1px solid var(--ink)}.q-preview-choice.is-wrong{border-width:2px;border-color:var(--danger)}.score-box{border:1px solid var(--ink);display:flex;flex-wrap:wrap}.score-left{flex:1 1 240px;padding:20px 24px;border-right:1px solid var(--ink)}.score-right{flex:3 1 480px;padding:20px 24px;min-width:0}.score-label{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);font-weight:600}.score-big{font-size:56px;line-height:1.05}.score-big,.score-mid{font-family:var(--serif);font-weight:600}.score-mid{font-size:34px;line-height:1.1}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:24px 40px;gap:24px 40px}.skill{display:block;padding:8px 0;color:var(--ink);text-decoration:none}.skill:hover .seg7 span.on{background:var(--accent)}.skill-name{font-weight:600;font-size:14px}.seg7{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px;margin-top:6px}.seg7 span{height:12px;border:1px solid #555;background:#fff}.seg7 span.on{background:#444}.review-row{display:flex;flex-wrap:wrap;gap:8px 24px;padding:14px 4px;border-top:1px solid var(--rule);color:var(--ink);text-decoration:none}.review-row:hover{background:var(--tint);color:var(--ink)}.review-excerpt{font-family:var(--test-serif);font-size:16px;color:#222;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.practice-choice{background:#fff;cursor:pointer;font:inherit;width:100%}.practice-choice:disabled{cursor:default;color:inherit}.practice-choice.is-picked{border-width:2px;border-color:var(--accent)}.bars{display:flex;align-items:flex-end;gap:32px;border-bottom:1px solid var(--ink);padding:0 12px}.bar-col{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;position:relative;height:100%}.bar-pct{font-size:15px;font-weight:600}.bar{display:block;width:100%;max-width:96px;background:var(--accent-soft);border:0;padding:0;cursor:pointer}.bar.is-hover,.bar:focus-visible{background:var(--accent);outline:2px solid var(--ink);outline-offset:2px}.bar:disabled{cursor:default}.bar-tip{position:absolute;bottom:60%;left:calc(50% + 40px);background:var(--ink);color:#fff;font-size:12px;padding:8px 10px;width:160px;line-height:1.5;z-index:5;pointer-events:none}.bars-labels{display:flex;gap:32px;padding:8px 12px 0;font-size:13px;color:var(--ink-2)}.bars-labels span{flex:1 1;text-align:center}.dash-num{display:flex;justify-content:space-between;align-items:baseline;padding:10px 0;border-bottom:1px solid var(--rule);color:var(--ink);text-decoration:none}.dash-num:hover{color:var(--accent)}.dash-num strong{font-family:var(--serif);font-size:28px;font-weight:600}.weak-box{border:1px solid var(--ink);padding:16px;display:flex;flex-direction:column;gap:6px}table.table .num-col{width:90px;text-align:right;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}table.table td.right,table.table th.right{text-align:right}table.table .num-col{padding-right:24px}.test-option{display:flex!important;justify-content:space-between;align-items:center;gap:12px;width:100%;text-align:left;padding:8px 10px;border-bottom:1px solid var(--rule);text-decoration:none;color:var(--ink)}.test-option:hover{background:var(--tint)}.builder-row.is-target{background:var(--warn-soft);box-shadow:inset 3px 0 0 var(--warn)}.field-error{color:var(--danger)}.feedback-box{border:1px solid var(--line);border-left:3px solid var(--accent);padding:8px 12px;background:#fff}