@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700&display=swap";:root{font-family:Inter,Noto Sans SC,system-ui,sans-serif;color:#20242b;background:#f4f5f7;font-synthesis:none;text-rendering:optimizeLegibility;--green: #17745a;--green-dark: #105d48;--green-soft: #e9f5f0;--blue: #2463a9;--amber: #b66a16;--ink: #20242b;--muted: #6c737f;--border: #dfe2e7;--surface: #ffffff}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,textarea{font:inherit}button{letter-spacing:0}.app-shell{min-height:100vh;background:#f4f5f7}.topbar{height:64px;display:grid;grid-template-columns:260px 1fr 260px;align-items:center;border-bottom:1px solid var(--border);background:#fffffff5;padding:0 20px;position:sticky;top:0;z-index:30}.brand-group,.today-status,.agent-heading,.output-heading span,.task-line,.toolbar-actions,.hint-box span{display:flex;align-items:center}.brand-group{gap:10px}.brand-mark,.agent-icon{width:36px;height:36px;display:grid;place-items:center;background:var(--green);color:#fff;border-radius:7px}.brand-group strong,.brand-group span{display:block;letter-spacing:0}.brand-group strong{font-size:15px}.brand-group span{color:var(--muted);font-size:11px;margin-top:2px}.today-status{justify-self:center;gap:8px;color:#4d5560;font-size:13px}.status-dot{width:7px;height:7px;border-radius:50%;background:#20a375;box-shadow:0 0 0 3px #dcf4ea}.header-divider{width:1px;height:16px;background:var(--border);margin:0 4px}.avatar{justify-self:end;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:#eef0f3;color:#4d5560;font-size:13px;font-weight:700}.workspace{display:grid;grid-template-columns:244px minmax(520px,1fr) 300px;max-width:1540px;margin:0 auto;min-height:calc(100vh - 64px)}.course-sidebar,.agent-sidebar{background:var(--surface)}.course-sidebar{border-right:1px solid var(--border);padding:22px 18px}.agent-sidebar{border-left:1px solid var(--border);padding:22px 20px}.sidebar-title{display:flex;align-items:flex-start;justify-content:space-between}.sidebar-title span,.sidebar-title strong{display:block}.sidebar-title span{font-size:13px;font-weight:700}.sidebar-title strong{font-size:11px;color:var(--muted);margin-top:5px;font-weight:500}.overall-progress,.progress-track{overflow:hidden;background:#e8eaee}.overall-progress{height:4px;margin:13px 0 24px}.overall-progress span,.progress-track span{display:block;height:100%;background:var(--green);transition:width .25s ease}.phase{margin-bottom:22px}.phase-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}.phase-heading strong,.phase-heading span{display:block}.phase-heading strong{font-size:12px}.phase-heading div span{color:#9298a1;font-size:9px;margin-top:3px}.phase-heading>span{color:#c2c6cc;font-size:10px;font-weight:700}.day-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.day-button{aspect-ratio:1;min-width:0;border:1px solid #e4e6e9;background:#f5f6f8;color:#a1a6ae;display:grid;place-items:center;font-size:10px;border-radius:4px}.day-button.done{border-color:#cae5db;background:var(--green-soft);color:var(--green)}.day-button.current{border-color:var(--green);background:var(--green);color:#fff;box-shadow:0 0 0 2px #d6eee5;font-weight:700}.review-callout{display:flex;gap:9px;margin-top:10px;padding:12px;background:#fff8eb;color:var(--amber);border-left:3px solid #e5a344}.review-callout strong,.review-callout span{display:block}.review-callout strong{font-size:11px}.review-callout span{margin-top:4px;color:#7b6a52;font-size:10px;line-height:1.5}.learning-main{min-width:0;padding:26px clamp(24px,4vw,58px) 36px}.lesson-progress>div:first-child{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.lesson-progress strong{color:var(--green)}.progress-track{height:5px;margin-top:9px;border-radius:2px}.lesson-copy{padding:28px 0 20px}.lesson-copy h1{margin:0;font-size:27px;line-height:1.25;letter-spacing:0}.lesson-copy>p{color:#5d6570;font-size:14px;line-height:1.8;margin:11px 0 16px;max-width:720px}.task-line{gap:7px;min-height:40px;padding:9px 12px;background:#edf5fa;border-left:3px solid var(--blue);color:#35546e;font-size:12px;line-height:1.6}.task-line strong{color:#1d435f;white-space:nowrap}.editor-panel{border:1px solid #303944;background:#1e242b;border-radius:7px;overflow:hidden;box-shadow:0 12px 28px #1a1f261f}.panel-toolbar{height:44px;display:flex;justify-content:space-between;align-items:center;padding:0 10px 0 14px;background:#252c34;border-bottom:1px solid #39424d;color:#c7cdd4}.file-tab{display:flex;gap:8px;align-items:center;font-family:ui-monospace,monospace;font-size:11px}.python-icon{display:grid;place-items:center;width:23px;height:20px;border-radius:3px;background:#295c86;color:#ffe66d;font-family:Inter,sans-serif;font-size:9px;font-weight:700}.toolbar-actions{gap:6px}.tool-button,.run-button,.secondary-button,.submit-button{border:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;font-weight:600}.tool-button{height:30px;padding:0 9px;background:transparent;color:#aeb7c1;font-size:11px}.tool-button:hover{background:#323b45;color:#fff}.tool-button.stop{color:#ffaaa1}.run-button{height:30px;padding:0 12px;background:#2b9a72;color:#fff;border-radius:4px;font-size:11px}.run-button:hover{background:#238260}.output-panel{min-height:112px;border-top:1px solid #39424d;background:#171c21}.output-heading{height:33px;padding:0 13px;display:flex;align-items:center;justify-content:space-between;color:#7f8994;font-size:10px;border-bottom:1px solid #282f36}.output-heading span:first-child{gap:6px;color:#aab2bb}.output-panel pre{margin:0;padding:12px 14px 16px;color:#cbd3dc;font:12px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;min-height:72px;overflow-wrap:anywhere}.output-panel.has-error pre{color:#ffada6}.step-navigation{display:grid;grid-template-columns:110px 1fr 110px;align-items:center;margin-top:18px}.secondary-button{height:36px;padding:0 12px;border:1px solid #d8dce1;border-radius:5px;color:#4d5560;background:#fff;font-size:11px}.secondary-button:last-child{justify-self:end}.secondary-button:disabled{opacity:.42;cursor:not-allowed}.step-dots{display:flex;justify-content:center;gap:7px}.step-dots span{width:7px;height:7px;border-radius:50%;background:#d3d7dc}.step-dots span.active{width:19px;border-radius:4px;background:var(--green)}.step-dots span.past{background:#81baa5}.agent-heading{gap:10px;padding-bottom:18px;border-bottom:1px solid #eceef1}.agent-icon{background:#243b53}.agent-heading strong,.agent-heading span{display:block}.agent-heading strong{font-size:13px}.agent-heading span{font-size:10px;color:var(--muted);margin-top:4px}.agent-heading i{display:inline-block;width:6px;height:6px;background:#d59b3d;border-radius:50%;margin-right:4px}.agent-message,.dictionary-visual{margin-top:18px}.message-label{color:#8a919b;font-size:9px;font-weight:700;text-transform:uppercase}.agent-message p{margin:8px 0 0;padding:12px;background:#f3f5f7;border-left:3px solid #8191a2;color:#4f5863;font-size:11px;line-height:1.7}.dictionary-visual{padding:12px;border:1px solid #e4e7eb}.relation-row{display:grid;grid-template-columns:56px 18px 1fr;align-items:center;margin-top:9px;font-size:11px}.relation-row code{padding:4px 5px;background:#eef4f7;color:#23516e;text-align:center}.relation-row span{color:#afb4bb;text-align:center}.relation-row strong{font-weight:500}.explanation-box{margin-top:20px}.explanation-box label{display:block;font-size:11px;font-weight:700;margin-bottom:8px}.explanation-box textarea{width:100%;min-height:112px;resize:vertical;padding:10px;border:1px solid #d9dde2;border-radius:5px;outline:none;color:var(--ink);font-size:11px;line-height:1.7}.explanation-box textarea:focus{border-color:var(--green);box-shadow:0 0 0 2px #def0e9}.submit-button{width:100%;min-height:38px;margin-top:9px;border-radius:5px;background:var(--green);color:#fff;font-size:11px}.submit-button:hover{background:var(--green-dark)}.submit-button:disabled{background:#adb5bd;cursor:not-allowed}.review-message{margin:9px 0 0;padding:9px;background:#fff8eb;color:#735822;font-size:10px;line-height:1.55}.hint-box{margin-top:22px;padding-top:16px;border-top:1px solid #eceef1}.hint-box span{gap:6px;color:var(--muted);font-size:10px}.hint-box button{padding:0;border:0;background:transparent;color:var(--blue);font-size:10px;margin-top:8px;cursor:pointer}.icon-button{width:34px;height:34px;border:0;background:transparent;display:grid;place-items:center;color:#59616c;cursor:pointer;border-radius:5px}.icon-button:hover{background:#eef0f2}.mobile-only,.sidebar-scrim{display:none}@media(max-width:1120px){.workspace{grid-template-columns:220px minmax(480px,1fr) 270px}.learning-main{padding-inline:25px}.topbar{grid-template-columns:220px 1fr 220px}}@media(max-width:900px){.mobile-only{display:grid}.topbar{grid-template-columns:1fr auto;height:58px;padding:0 14px}.today-status{display:none}.workspace{display:block;min-height:calc(100vh - 58px)}.course-sidebar{position:fixed;z-index:50;inset:0 auto 0 0;width:min(310px,86vw);transform:translate(-100%);transition:transform .2s ease;overflow-y:auto;box-shadow:10px 0 30px #00000024}.course-sidebar.open{transform:translate(0)}.sidebar-scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;border:0;background:#161c2266}.agent-sidebar{border-left:0;border-top:1px solid var(--border);padding:24px}.learning-main{padding:22px 24px 30px}}@media(max-width:560px){.brand-group>div:nth-child(3) span{display:none}.brand-mark{width:32px;height:32px}.learning-main{padding:18px 14px 24px}.lesson-copy{padding-top:22px}.lesson-copy h1{font-size:23px}.task-line{align-items:flex-start;flex-wrap:wrap}.task-line strong{white-space:normal}.panel-toolbar{padding-left:9px}.tool-button{width:30px;padding:0;font-size:0}.run-button{padding:0 10px}.step-navigation{grid-template-columns:92px 1fr 92px}.secondary-button{padding:0 8px}.agent-sidebar{padding:22px 16px 30px}}
