:root{color:#17201d;font-synthesis:none;background:#f5f7f3;font-family:Inter,Noto Sans SC,Hiragino Sans GB,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,.button-link{color:#fff;cursor:pointer;background:#245f4a;border:0;border-radius:10px;padding:.8rem 1.2rem;font-weight:700;display:inline-block}button:disabled{opacity:.55;cursor:wait}.topbar{z-index:5;background:#fff;border-bottom:1px solid #dfe6df;justify-content:space-between;align-items:center;height:68px;padding:0 max(24px,50vw - 560px);display:flex;position:sticky;top:0}.brand{letter-spacing:-.02em;font-weight:800}.brand span{color:#738078;margin-left:.35rem;font-size:.7rem}nav{background:#eef2ed;border-radius:9px;gap:.25rem;padding:.25rem;display:flex}nav a,nav .nav-logout{color:#627068;border-radius:7px;padding:.45rem .75rem;font-size:.88rem}nav a.active{color:#17201d;background:#fff;box-shadow:0 1px 4px #122c2015}.nav-logout{color:#48574f;background:0 0;border-left:1px solid #d7ded8}.page{max-width:1120px;margin:0 auto;padding:56px 24px 96px}.narrow{max-width:760px}h1{letter-spacing:-.045em;margin:.5rem 0 1rem;font-size:clamp(2rem,5vw,3.3rem);line-height:1.05}h2{letter-spacing:-.025em}h3{margin:1.25rem 0 .65rem;font-size:.95rem}.eyebrow{color:#2d7258;text-transform:uppercase;letter-spacing:.15em;font-size:.72rem;font-weight:800}.lead{color:#5b6961;max-width:660px;font-size:1.1rem;line-height:1.7}.muted{color:#6c7771}.back{color:#557066;margin-bottom:2rem;display:block}.card,.lesson-card{background:#fff;border:1px solid #dfe6df;border-radius:18px;margin:22px 0;padding:28px;box-shadow:0 8px 30px #183b2c0a}.action-grid{grid-template-columns:1fr 1fr;gap:18px;margin-top:40px;display:grid}.action-card{background:#fff;border:1px solid #dfe6df;border-radius:18px;gap:.7rem;padding:26px;transition:all .15s;display:grid}.action-card:hover{border-color:#72a18e;transform:translateY(-2px)}.action-card span{color:#2d7258;font-family:monospace}.action-card strong{font-size:1.3rem}.action-card small{color:#6c7771}.lesson-card{padding:32px}.lesson-card>div{color:#748078;justify-content:space-between;align-items:center;display:flex}.lesson-card>p:first-of-type{color:#2d7258;margin-top:2rem;font-weight:700}.level{color:#245f4a;background:#e3efe8;border-radius:6px;padding:.3rem .55rem;font-size:.75rem;font-weight:800}.student-page-heading{justify-content:space-between;align-items:flex-end;gap:20px;display:flex}.student-page-heading .lead{margin-bottom:0}.form-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.form-grid label{flex-direction:column;gap:.5rem;font-weight:700;display:flex}.form-grid label small{color:#77827c;font-weight:400}.form-grid .full{grid-column:1/-1}input,textarea{resize:vertical;background:#fbfcfb;border:1px solid #ccd7d0;border-radius:9px;width:100%;padding:.75rem}input:focus,textarea:focus{border-color:#0000;outline:2px solid #85b39f}.field-group{min-width:0}.image-extractor{flex-wrap:wrap;align-items:center;gap:.45rem .75rem;margin-top:.65rem;display:flex}.image-extractor>small{color:#77827c}.form-grid .upload-button{color:#315b49;cursor:pointer;background:#f2f6f3;border:1px solid #aabbb1;border-radius:8px;flex-direction:row;align-items:center;width:fit-content;padding:.55rem .75rem;font-size:.82rem;display:inline-flex}.upload-button:hover{border-color:#5f8e79}.upload-button.disabled{opacity:.55;cursor:wait}.upload-button input{display:none}.extract-status,.extract-error{flex-basis:100%}.extract-status{color:#28704f!important}.extract-error{color:#963a31!important}.preview{margin-top:30px}.preview dl,dl{grid-template-columns:110px 1fr;gap:.9rem 1.2rem;line-height:1.55;display:grid}dt{color:#6a776f;font-size:.85rem}dd{margin:0}.two-columns,.report-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.chips{flex-wrap:wrap;gap:.5rem;display:flex}.chips span{color:#245f4a;background:#e5f0eb;border-radius:999px;padding:.4rem .7rem;font-size:.88rem}.chips.secondary span{color:#655c3f;cursor:help;background:#f0eee5}.vocab-list{flex-wrap:wrap;gap:.8rem;padding:0;display:flex}.vocab-list li{border-left:2px solid #6ca088;padding-left:.7rem;list-style:none}.vocab-list span{color:#6c7771;margin-left:.5rem}.publish,.wide{width:100%;margin-top:8px;padding:1rem}.alert{border-radius:10px;margin:16px 0;padding:.8rem 1rem}.error{color:#8b3027;background:#fff0ee;border:1px solid #f0c4be}.success{color:#25613a;background:#eaf6ee;border:1px solid #b9dac3}.empty{text-align:center;color:#617067;border:1px dashed #bcc9c1;border-radius:14px;margin-top:30px;padding:32px}.auth-page{padding-top:90px}.auth-form{gap:18px;max-width:480px;display:grid}.auth-form label{gap:.55rem;font-weight:700;display:grid}.record-list{gap:10px;display:grid}.record-row{background:#fff;border:1px solid #dfe6df;border-radius:12px;grid-template-columns:2fr repeat(3,1fr);align-items:center;gap:16px;padding:18px 20px;display:grid}.record-row div{gap:.35rem;display:grid}.record-row small{color:#7a867f}.status{color:#9a6335}.status.done,.positive{color:#24714f}.result-line{border-bottom:1px solid #edf0ed;grid-template-columns:1fr auto;gap:.4rem 1rem;padding:.8rem 0;display:grid}.result-line small{color:#758079;grid-column:1/-1}.coverage{color:#2d7258;font-size:3rem;font-weight:800}.evaluation-errors{gap:14px;display:grid}.evaluation-error-card{background:#fbfcfb;border:1px solid #dfe6df;border-radius:14px;padding:18px;position:relative}.error-type-tag{color:#765424;background:#f3e9d8;border-radius:999px;margin-bottom:.8rem;padding:.3rem .6rem;font-size:.75rem;font-weight:700;display:inline-block}.error-feedback-row{border-top:1px solid #e8ede9;gap:.25rem;padding:.65rem 0;display:grid}.error-feedback-row:first-of-type{border-top:0}.error-feedback-row small{color:#718078;font-weight:700}.error-feedback-row p{margin:0;line-height:1.65}.error-feedback-row.suggestion p{color:#216748;font-weight:700}.summary-text{color:#fff;background:#20382f}.summary-text p{color:#dce8e1;line-height:1.7}.summary-actions{gap:12px;margin-top:24px;display:flex}.secondary-button{color:#34483f;background:#e7ece8}.lesson-focus p{color:#42534a;margin-bottom:0}.chat-page{max-width:820px;margin:0 auto;padding:32px 24px 70px}.chat-head{border-bottom:1px solid #dfe6df;justify-content:space-between;align-items:center;padding-bottom:18px;display:flex}.chat-head h1{margin:.25rem 0;font-size:1.7rem}.chat-head small{color:#6d7972}.conversation-progress{margin:18px 0 0}.conversation-progress>div:first-child{color:#52645a;justify-content:space-between;display:flex}.conversation-progress small{color:#728078}.progress-track{background:#dfe7e2;border-radius:999px;height:8px;margin:.45rem 0;overflow:hidden}.progress-track span{border-radius:inherit;background:linear-gradient(90deg,#72a18e,#245f4a);height:100%;transition:width .35s;display:block}.chat-log{flex-direction:column;gap:18px;min-height:420px;padding:32px 0;display:flex}.bubble{max-width:78%}.bubble small{color:#748078;margin:0 .5rem}.bubble p{background:#fff;border:1px solid #dfe6df;border-radius:4px 16px 16px;margin:.3rem 0 0;padding:.9rem 1rem;line-height:1.6}.bubble.student{text-align:right;align-self:flex-end}.bubble.student p{color:#fff;text-align:left;background:#245f4a;border-color:#245f4a;border-radius:16px 4px 16px 16px}.bubble p.translation{color:#52645a;text-align:left;background:0 0;border:0;border-left:3px solid #9ab8aa;border-radius:0;margin-top:.5rem;padding:.35rem .7rem;font-size:.92rem}.message-actions{gap:.4rem;margin:.4rem .5rem 0;display:flex}.student .message-actions{justify-content:flex-end}.translate-button,.voice-play-button{color:#34483f;background:#e7ece8;padding:.35rem .65rem;font-size:.8rem}.composer-hint{color:#5d7569;margin:0 0 .25rem .25rem;font-size:.92rem}.composer{background:#f5f7f3;grid-template-columns:auto 1fr auto;gap:10px;padding:10px 0;display:grid;position:sticky;bottom:16px}.composer input{background:#fff}.record-button{color:#34483f;background:#e7ece8}.record-button.recording{color:#fff;background:#a53b32}.speech-notice{color:#28704f;margin-bottom:.25rem;font-size:.9rem}.student-history-list{gap:16px;margin-top:30px;display:grid}.history-card{background:#fff;border:1px solid #dfe6df;border-radius:16px;padding:22px}.history-card>div:first-child{color:#728078;justify-content:space-between;display:flex}.history-card>p{color:#2d7258;margin-bottom:.4rem;font-weight:700}.history-card h2{margin:0 0 1rem}.history-metrics{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.history-metrics span{background:#f0f4f1;border-radius:999px;padding:.35rem .65rem;font-size:.82rem}.perfect-mini{color:#8a6420;font-weight:800}.history-targets{margin-bottom:32px}.history-conversation{gap:12px;margin-top:20px;display:grid}.history-message{max-width:80%}.history-message.student{text-align:right;justify-self:end}.history-message p{text-align:left;background:#f2f5f3;border-radius:12px;margin:.25rem 0;padding:.75rem 1rem}.history-message.student p{color:#fff;background:#245f4a}.completion-banner,.perfect-banner{text-align:center;border-radius:16px;margin-bottom:24px;padding:18px 22px}.completion-banner{color:#315648;background:#eaf1ed;font-weight:800}.perfect-banner{color:#604b16;background:linear-gradient(135deg,#fff4ca,#e6f3e9);gap:.25rem;animation:.55s ease-out both perfect-pop;display:grid}.perfect-banner strong{letter-spacing:.08em;font-size:2rem}.perfect-banner span{color:#52645a}@keyframes perfect-pop{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=700px){.topbar{gap:8px;height:auto;min-height:68px;padding:8px 14px}.brand span{display:none}.topbar nav{flex-wrap:wrap;justify-content:flex-end}.topbar nav a,.topbar nav .nav-logout{padding:.4rem .55rem;font-size:.78rem}.page{padding:38px 16px 70px}.action-grid,.form-grid,.two-columns,.report-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.record-row{grid-template-columns:1fr 1fr}.record-row div{grid-column:1/-1}.preview dl,dl{grid-template-columns:1fr;gap:.3rem}.chat-head,.student-page-heading{align-items:flex-start;gap:12px}.student-page-heading{flex-direction:column}.bubble{max-width:90%}.summary-actions{flex-wrap:wrap}}
