:root{color:#172033;background:#f5f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;line-height:1.5;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:0;min-height:100vh;background:#f5f7fb}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.app-loading{min-height:100vh;display:grid;place-items:center}.app-frame{min-height:100vh;display:flex;flex-direction:column}.catalog-shell{flex:1;display:grid;gap:24px;width:min(1180px,calc(100% - 48px));margin:0 auto;padding:32px 0 48px}.catalog-header{display:flex;align-items:end;justify-content:space-between;gap:24px;padding:8px 0}.catalog-header h1{margin:0;color:#14213d;font-size:3.4rem;line-height:1}.catalog-header p:not(.eyebrow){max-width:720px;margin:12px 0 0;color:#5f6f86;font-size:1.05rem}.catalog-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.summary-tile,.lesson-card{min-width:0;border:1px solid #dfe6f2;border-radius:8px;background:#fff;box-shadow:0 18px 40px #27375614}.summary-tile{display:grid;gap:8px;padding:18px}.summary-tile span{color:#607087;font-weight:800}.summary-tile strong{color:#14213d;font-size:2rem;line-height:1}.lesson-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.lesson-card{display:grid;gap:16px;align-content:start;padding:20px}.lesson-card h2{margin:0;color:#172033;font-size:1.45rem;line-height:1.15;overflow-wrap:anywhere}.lesson-card p{min-height:24px;margin:0;color:#607087;overflow-wrap:anywhere}.lesson-card-topline,.lesson-card-meta,.star-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.lesson-card-topline{justify-content:space-between;color:#607087;font-size:.82rem;font-weight:900;text-transform:uppercase}.lesson-status{padding:4px 8px;border-radius:999px;background:#eef2f7;color:#5e6b7d;text-transform:none}.lesson-status.is-completed{background:#e4f5ec;color:#21633f}.lesson-status.is-ready-for-review{background:#fff4d8;color:#7a5511}.lesson-card-meta{color:#43536b;font-size:.9rem;font-weight:800}.lesson-card-meta span{display:inline-flex;align-items:center;gap:6px}.star-row svg{fill:none;color:#9aa8bc}.star-row svg.is-earned{fill:#f1b941;color:#c08311}.lesson-shell{flex:1;display:grid;grid-template-columns:280px minmax(520px,1fr) 320px;gap:24px;min-height:calc(100vh - 58px);padding:24px}.icp-footer{display:flex;justify-content:center;gap:4px;padding:16px 24px 20px;color:#5f6f86;font-size:.86rem;font-weight:700}.icp-footer a{color:#315f88;text-decoration:none}.icp-footer a:hover,.icp-footer a:focus{color:#143c5e;text-decoration:underline}.admin-login-shell,.admin-console{width:min(1120px,calc(100% - 48px));margin:0 auto;padding:32px 0 48px}.admin-login-shell{min-height:100vh;display:grid;place-items:center}.admin-login-card,.admin-panel,.admin-metric{border:1px solid #dfe6f2;border-radius:8px;background:#fff;box-shadow:0 18px 40px #27375614}.admin-login-card{display:grid;gap:14px;width:min(420px,100%);padding:28px}.admin-login-card h1,.admin-topbar h1,.admin-panel h2{margin:0;color:#14213d}.admin-login-card label{color:#43536b;font-weight:800}.admin-login-card input{min-height:44px;border:1px solid #cfd9ea;border-radius:8px;padding:10px 12px;color:#172033}.admin-console{display:grid;gap:18px}.admin-topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px;border:1px solid #dfe6f2;border-radius:8px;background:#fff}.admin-nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.admin-nav-button,.admin-link-button{border:1px solid #cfd9ea;border-radius:8px;background:#fff;color:#24324a;cursor:pointer;font-weight:900}.admin-nav-button{min-height:40px;padding:8px 12px}.admin-nav-button:hover,.admin-link-button:hover{border-color:#7b95bd;background:#f8fbff}.admin-nav-button:active,.admin-link-button:active{transform:translateY(1px);box-shadow:inset 0 2px 6px #17203329}.admin-nav-button.is-active,.admin-nav-button[aria-current=page]{border-color:#2f6f73;background:#e8f6f4;color:#17474a;box-shadow:0 0 0 3px #2f6f7329}.admin-error-row,.admin-panel-header,.admin-detail-topline{display:flex;align-items:center;justify-content:space-between;gap:12px}.admin-error-row{align-items:flex-start;padding:12px;border:1px solid #f0c8c3;border-radius:8px;background:#fff7f6}.admin-error-row p{margin:0}.admin-metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.admin-metric{display:grid;gap:8px;min-width:0;padding:18px}.admin-metric-wide{grid-column:span 2}.admin-metric span,.admin-table th{color:#607087;font-size:.82rem;font-weight:900;text-transform:uppercase}.admin-metric strong{color:#14213d;font-size:2rem;line-height:1}.admin-panel{display:grid;gap:14px;padding:18px}.admin-table-wrap{width:100%;overflow-x:auto}.admin-table{width:100%;border-collapse:collapse}.admin-table th,.admin-table td{border-bottom:1px solid #e5ebf3;padding:10px;text-align:left;vertical-align:top}.admin-table td{color:#24324a;font-weight:700}.admin-link-button{max-width:420px;padding:6px 8px;color:#245fbb;text-align:left;overflow-wrap:anywhere}.admin-content-status{align-items:center;display:flex;gap:16px;justify-content:space-between}.admin-mono{margin:6px 0 0;color:#24324a;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-weight:800;overflow-wrap:anywhere}.admin-status-pill{border-radius:999px;flex:0 0 auto;font-size:.8rem;font-weight:900;padding:8px 12px}.admin-status-pill.is-valid{background:#daf5e6;color:#156f3a}.admin-status-pill.is-invalid{background:#ffe0df;color:#a42822}.admin-list{margin:8px 0 0;padding-left:20px;color:#7b211d;font-weight:800}.admin-hidden-input{display:none}.admin-upload-status{display:grid;gap:6px;padding:12px;border:1px solid #b8d3df;border-radius:8px;background:#eef8fb;color:#23495a}.admin-upload-status strong{color:#183f51;overflow-wrap:anywhere}.admin-draft-preview{display:grid;gap:12px}.admin-draft-preview p{margin:0;white-space:pre-wrap}.admin-muted{margin:0;color:#607087;font-weight:800}.admin-detail-topline{align-items:flex-start}.admin-detail-grid,.admin-score-grid{display:grid;gap:12px}.admin-detail-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-score-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.admin-detail-item{display:grid;gap:6px;min-width:0;padding:14px;border:1px solid #d7e1ee;border-radius:8px;background:#f8fbff}.admin-detail-item span{color:#607087;font-size:.78rem;font-weight:900;text-transform:uppercase}.admin-detail-item strong{color:#18253a;overflow-wrap:anywhere}.admin-detail-section{display:grid;gap:10px}.admin-detail-section h3{margin:0;color:#18253a;font-size:1.05rem}.admin-plain-list{display:grid;gap:8px;margin:0;padding-left:20px;color:#526177;font-weight:700}.admin-chip-row{display:flex;flex-wrap:wrap;gap:8px}.admin-chip{padding:4px 8px;border-radius:999px;background:#e9f2ff;color:#24538a;font-size:.82rem;font-weight:900}.lesson-sidebar,.context-panel,.lesson-workspace{min-width:0;background:#fff;border:1px solid #dfe6f2;border-radius:8px;box-shadow:0 18px 40px #27375614}.lesson-sidebar,.context-panel{align-self:start;padding:20px}.lesson-workspace{min-height:calc(100vh - 48px);padding:32px}.eyebrow{margin:0 0 8px;color:#52708f;font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.lesson-sidebar h1{margin:0;color:#14213d;font-size:1.75rem;line-height:1.15}.lesson-meta{margin:12px 0 20px;color:#5f6f86;font-size:.95rem}.step-nav{display:grid;gap:10px}.step-button,.ghost-button{border:1px solid #cfd9ea;border-radius:8px;background:#fff;color:#24324a;cursor:pointer;font-weight:700}.step-button{display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 12px;text-align:left;transition:background .12s ease,border-color .12s ease,color .12s ease,transform .12s ease}.step-button:hover,.ghost-button:hover{border-color:#7b95bd;background:#f8fbff}.step-button:active,.ghost-button:active,.primary-action:active,.secondary-action:active,.button-row button:active{transform:translateY(1px);box-shadow:inset 0 2px 6px #17203329}button[aria-pressed=true]{border-color:#2f6f73;background:#e8f6f4;color:#17474a;box-shadow:0 0 0 3px #2f6f7329}.step-button.is-active{border-color:#2f6f73;background:#e8f6f4;color:#17474a;box-shadow:inset 4px 0 #2f6f73}.step-button.is-done{border-color:#86c89f;background:#eefaf3;color:#1f5f3d}.step-button:disabled{border-color:#d8e0ec;background:#eef2f7;color:#8794a8;cursor:not-allowed;opacity:1;transform:none;box-shadow:none}.step-button:disabled:hover,.step-button:disabled:active{border-color:#d8e0ec;background:#eef2f7;color:#8794a8;transform:none;box-shadow:none}.step-badge{margin-left:auto;padding:3px 8px;border-radius:999px;font-size:.72rem;font-weight:900;line-height:1}.step-badge.is-locked{border:1px solid #bdc9da;background:#e8edf5;color:#56647a}.step-badge.is-current{border:1px solid #9bcac7;background:#dcefed;color:#17474a}.step-badge.is-done{border:1px solid #8fd3aa;background:#dff3e8;color:#1f5f3d}.ghost-button{width:100%;margin-top:16px;padding:10px 12px}.ghost-button.is-top{margin:0 0 16px}.progress-card{display:grid;gap:8px;margin-top:8px;padding:14px;border-radius:8px;background:#f1f5fb;color:#43536b;font-size:.9rem;font-weight:700}.progress-card div:first-child{display:flex;align-items:center;gap:8px}.reserved-modules{display:grid;gap:8px;margin-top:20px;padding-top:18px;border-top:1px solid #dfe6f2;color:#65758c}.reserved-modules h2,.context-panel h2,.lesson-workspace h2{margin:0;color:#18253a}.reserved-modules h2{font-size:.95rem}.reserved-modules p,.context-panel p{margin:0}.context-panel [role=region]:focus{border-radius:8px;outline:3px solid rgba(47,111,115,.28);outline-offset:8px}.word-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:20px}.word-card{display:grid;gap:12px;min-height:236px;padding:16px;border:1px solid #d7e1ee;border-radius:8px;background:#f9fbff}.word-card-serial{max-width:620px;margin-top:20px}.word-card.is-selected{border-color:#2f6f73;background:#eef8f6;box-shadow:0 0 0 3px #2f6f7329}.word-card-main{display:grid;gap:6px;width:100%;min-height:126px;padding:0;border:0;background:transparent;color:#26364d;cursor:pointer;text-align:left}.word-card-main:hover strong{color:#2f6f73}.word-card-main strong{color:#14213d;font-size:1.3rem;line-height:1.2}.word-count{width:fit-content;padding:3px 8px;border-radius:999px;background:#e9f2ff;color:#24538a;font-size:.78rem;font-weight:900}.word-meta{color:#5f6f86;font-size:.85rem;font-weight:800;text-transform:uppercase}.source-sentence{margin-top:6px;padding-left:10px;border-left:3px solid #9eb7d8;color:#43536b;font-weight:700}.word-clue{display:grid;gap:4px;margin-top:14px;padding:12px;border-radius:8px;background:#f1f5fb;color:#43536b}.word-clue strong{color:#18253a;font-size:.85rem}.word-sound-panel{display:grid;gap:8px;margin-top:12px;padding:12px;border:1px solid #b8d3df;border-radius:8px;background:#eef8fb;color:#23495a;font-weight:800}.button-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.button-row button{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:8px 10px;border:1px solid #cfd9ea;border-radius:8px;background:#fff;color:#24324a;cursor:pointer;font-weight:800}.button-row button:hover{border-color:#7b95bd;background:#f8fbff}.button-row button:disabled,.button-row button:disabled:hover,.button-row button:disabled:active{border-color:#cfd9ea;background:#dbe3ef;color:#75849a;cursor:not-allowed;transform:none;box-shadow:none}.words-complete-card{display:grid;gap:12px;max-width:620px;margin-top:20px;padding:24px;border:1px solid #b9dcc8;border-radius:8px;background:#f0faf4;color:#24324a}.words-complete-card svg{color:#1f7a46}.words-complete-card p{margin:0}.status-line{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:28px;margin:12px 0 0;color:#5f6f86;font-size:.9rem;font-weight:800}.status{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;font-size:.78rem;font-weight:900}.status.is-known{background:#e6f5ed;color:#1f6b42}.status.is-practice{background:#fff1dd;color:#87510d}.status.is-quiz-review{background:#eef2ff;color:#354199}blockquote{margin:16px 0 0;padding:12px 14px;border-left:4px solid #2f6f73;border-radius:0 8px 8px 0;background:#f8fbff;color:#26364d;font-weight:700}.reading-card{display:grid;gap:18px;margin-top:20px;padding:24px;border:1px solid #dfe6f2;border-radius:8px;background:#fff;color:#24324a;font-size:20px;line-height:1.9}.reading-card p{margin:0}.source-paragraph{border-radius:8px;box-shadow:0 0 0 4px #2f6f732e;background:#eef8f6}.source-paragraph:focus{outline:3px solid rgba(47,111,115,.4);outline-offset:4px}.highlight-word{display:inline;margin:0 2px;padding:2px 6px;border:1px solid #f3a4c7;border-radius:6px;background:#ffe4f0;color:#8a2757;cursor:pointer;font-weight:800;line-height:1.3}.highlight-word:hover{background:#ffd2e6}.highlight-word:focus-visible{outline:3px solid rgba(47,111,115,.32);outline-offset:2px}.recording-panel{display:grid;gap:12px;margin-top:20px;padding:16px;border:1px solid #d7e1ee;border-radius:8px;background:#f8fbff}.recording-status,.reading-score{display:flex;flex-wrap:wrap;gap:10px;align-items:center;color:#43536b;font-weight:800}.recording-status strong,.reading-score strong{color:#18253a}.reading-score span{padding:3px 8px;border-radius:999px;background:#e9f2ff;color:#24538a;font-size:.82rem;font-weight:900}.primary-action{min-height:44px;margin-top:20px;padding:10px 16px;border:1px solid #245fbb;border-radius:8px;background:#2f6fdb;color:#fff;cursor:pointer;font-weight:900}.primary-action:hover{background:#245fbb}.primary-action:disabled,.secondary-action:disabled{border-color:#cfd9ea;background:#dbe3ef;color:#75849a;cursor:not-allowed}.primary-action:disabled:hover,.primary-action:disabled:active,.secondary-action:disabled:hover,.secondary-action:disabled:active{border-color:#cfd9ea;background:#dbe3ef;color:#75849a;transform:none;box-shadow:none}.quiz-list{display:grid;gap:16px;margin-top:20px}.quiz-section{display:grid;gap:12px;margin-top:24px}.quiz-section h3{margin:0;color:#18253a;font-size:1.2rem}.quiz-card{display:grid;gap:14px;padding:20px;border:1px solid #dfe6f2;border-radius:8px;background:#fff}.quiz-fieldset{display:grid;gap:10px;min-inline-size:0;margin:0;padding:0;border:0}.quiz-fieldset legend{margin:0 0 4px;padding:0;color:#18253a;font-size:1.1rem;line-height:1.35;font-weight:900}.option-list{display:grid;gap:10px}.option-list label{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid #d7e1ee;border-radius:8px;background:#f9fbff;color:#26364d;cursor:pointer;font-weight:700}.option-list label:hover{border-color:#7b95bd;background:#f8fbff}.option-list label.is-selected,.option-list label:has(input:checked){border-color:#2f6f73;background:#e8f6f4;color:#17474a;box-shadow:0 0 0 3px #2f6f7324}.option-list label:has(input:disabled){cursor:default}.option-list label:has(input:disabled):hover{border-color:#d7e1ee;background:#f9fbff}.option-list label.is-selected:has(input:disabled),.option-list label:has(input:checked:disabled){border-color:#7fb99c;background:#edf8f2;color:#1f5f3d}.option-list input{margin-top:4px;accent-color:#2f6f73}.secondary-action{justify-self:start;min-height:40px;padding:8px 12px;border:1px solid #cfd9ea;border-radius:8px;background:#fff;color:#24324a;cursor:pointer;font-weight:900}.secondary-action:hover{border-color:#7b95bd;background:#f8fbff}.feedback{display:grid;gap:6px;padding:14px;border:1px solid #d7e1ee;border-radius:8px;background:#f8fbff;color:#26364d}.feedback strong{color:#18253a}.feedback p{margin:0}.source-button{justify-self:start;padding:0;border:0;background:transparent;color:#245fbb;cursor:pointer;font-weight:800;text-align:left;text-decoration:underline}.source-button:hover{color:#1e4f9d}.feedback.is-correct{border-color:#a7d8bd;background:#eaf7f0}.feedback.is-wrong{border-color:#f2c38b;background:#fff4e6}.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}.score-overview{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:12px;margin-top:20px}.score-overview div,.score-card,.reading-detail{display:grid;gap:6px;padding:16px;border:1px solid #c6d8e7;border-radius:8px;background:linear-gradient(180deg,#fbfdff,#f3f8fb)}.score-overview div:first-child{border-color:#86c89f;background:linear-gradient(135deg,#eaf8f0,#f7fcfa)}.score-overview div:nth-child(2){border-color:#94c5d5;background:linear-gradient(135deg,#e9f7fb,#f7fcfd)}.score-overview span,.score-card span,.reading-detail span{color:#5f6f86;font-size:.78rem;font-weight:900;text-transform:uppercase}.score-overview strong{color:#0f2f3a;font-size:1.8rem;line-height:1.1}.score-grid,.reading-detail-grid{display:grid;gap:12px;margin-top:16px}.score-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.reading-detail-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:0}.score-card strong,.reading-detail strong{color:#18253a;font-size:1.15rem;line-height:1.2}.score-card:nth-child(1){border-color:#c5d7f1;background:#f3f7ff}.score-card:nth-child(2){border-color:#b8d3df;background:#f0f8fb}.score-card:nth-child(3){border-color:#b9dcc8;background:#f0faf4}.score-card:nth-child(4){border-color:#d5c8ef;background:#f7f3ff}.score-card p{margin:0;color:#526177;font-size:.9rem;font-weight:700}.summary-card{min-height:86px;padding:16px;border:1px solid #d7e1ee;border-radius:8px;background:#f8fbff;color:#24324a;font-size:1rem;font-weight:900}.review-section{display:grid;gap:12px;margin-top:24px}.review-section h3,.review-section p,.review-section ul{margin:0}.review-section h3{color:#18253a;font-size:1.1rem}.review-section p,.review-section li{color:#526177;font-weight:700}.question-review-list{display:grid;gap:10px;padding:0;list-style:none}.question-review-list li{display:grid;gap:10px;padding:14px;border:1px solid #d7e1ee;border-radius:8px;background:#fff}.question-review-list strong{color:#18253a}.question-review-list p{margin:0;color:#526177;font-weight:700}.review-evidence,.answer-row{display:flex;align-items:flex-start;gap:8px;min-width:0}.review-evidence{padding:10px;border:1px solid #d8e7f3;border-radius:8px;background:#f4f9fd;color:#314c68}.review-evidence svg{flex:0 0 auto;color:#2f6f73}.review-evidence strong,.answer-row strong{margin-right:4px}.answer-row{padding:8px 10px;border-radius:8px}.answer-row svg{flex:0 0 auto}.answer-row.is-student-choice{border:1px solid #f1c7c1;background:#fff5f3;color:#8a3328}.answer-row.is-student-choice svg,.answer-row.is-student-choice strong{color:#b33a2e}.answer-row.is-correct-answer{border:1px solid #b9dfc8;background:#f0faf4;color:#1f6b42}.answer-row.is-correct-answer svg,.answer-row.is-correct-answer strong{color:#23834f}.review-list{display:grid;gap:10px}.review-item{display:grid;grid-template-columns:minmax(120px,1fr) minmax(140px,1fr);gap:12px;align-items:center;min-height:64px;padding:14px;border:1px solid #d7e1ee;border-radius:8px;background:#fff}.review-item strong{color:#14213d;font-size:1.05rem}.review-item span{color:#526177;font-weight:700}.completion-note{margin:12px 0 0;color:#1f6b42;font-weight:800}.completion-note.is-warning,.form-error,.sync-banner.is-warning{color:#9f2d20}.sync-banner{margin:0 auto 18px;max-width:1120px;color:#526177;font-weight:800}.sync-banner.is-ready{color:#22745b}@media(max-width:1120px){body{min-width:0}.lesson-shell{grid-template-columns:240px minmax(420px,1fr) 260px;gap:16px;padding:16px}.lesson-workspace{min-height:calc(100vh - 32px);padding:24px}.word-grid,.summary-grid,.score-overview,.score-grid,.reading-detail-grid,.review-item{grid-template-columns:1fr}}@media(max-width:760px){body{min-width:0}.admin-login-shell,.admin-console{width:min(100% - 24px,1120px);padding:18px 0 32px}.admin-topbar{align-items:flex-start;flex-direction:column}.admin-nav,.admin-error-row,.admin-panel-header,.admin-detail-topline{align-items:stretch;flex-direction:column;width:100%}.admin-nav-button,.admin-nav .secondary-action,.admin-error-row .secondary-action{width:100%}.admin-metric-grid,.admin-detail-grid,.admin-score-grid{grid-template-columns:1fr}.lesson-shell{grid-template-columns:minmax(0,1fr);gap:12px;padding:12px}.lesson-sidebar,.context-panel{width:100%;padding:16px}.lesson-workspace{width:100%;min-height:auto;padding:18px}.lesson-sidebar h1{font-size:1.4rem}.reading-card,.quiz-card,.words-complete-card{padding:16px}.reading-card{font-size:18px;line-height:1.75}.score-overview strong{font-size:1.5rem}.option-list label,.review-section p,.question-review-list li{overflow-wrap:anywhere}}
