:root{--bg:#f4f7fb;--panel:#fff;--ink:#172033;--muted:#6c7890;--line:#e5eaf2;--primary:#4169e1;--primary-dark:#3154c6;--violet:#7657df;--green:#20a878;--amber:#ed9e32;--red:#df5a63;--nav:#101a30;--shadow:0 12px 36px rgba(30,50,90,.08);font-family:"Microsoft YaHei","PingFang SC",Inter,system-ui,sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}
[hidden]{display:none!important}
*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:var(--bg)}button,input,textarea{font:inherit}button,a{transition:.18s ease}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit;text-decoration:none}.eyebrow{margin:0 0 8px;color:var(--primary);font-size:12px;font-weight:800;letter-spacing:.16em}.primary,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);padding:11px 18px;font-weight:700}.primary{border-color:var(--primary);background:var(--primary);color:#fff;box-shadow:0 7px 18px rgba(65,105,225,.2)}.primary:hover{background:var(--primary-dark);transform:translateY(-1px)}.wide{width:100%}.panel{border:1px solid var(--line);border-radius:18px;background:var(--panel);box-shadow:var(--shadow);overflow:hidden}.panel-head{min-height:72px;padding:18px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.panel-head>div{display:flex;align-items:center;gap:12px}.panel-head h2,.panel-head p{margin:0}.panel-head h2{font-size:16px}.panel-head p{margin-top:4px;color:var(--muted);font-size:12px}.panel-head.compact{min-height:64px}.section-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:#eaf0ff;color:var(--primary);font-style:normal;font-weight:900}.section-icon.violet{background:#f0ebff;color:var(--violet)}.empty-state,.loading-state{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--muted);padding:32px}.empty-state strong,.loading-state strong{font-size:17px;color:var(--ink)}.empty-state p,.loading-state p{margin:8px 0 18px;max-width:420px;line-height:1.7}.loader{width:30px;height:30px;border:3px solid #dfe7fb;border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:18px}@keyframes spin{to{transform:rotate(360deg)}}
/* Login */
.auth-page{background:#0f1930}.auth-layout{min-height:100vh;display:grid;grid-template-columns:minmax(480px,1.25fr) minmax(420px,.75fr)}.auth-brand{position:relative;overflow:hidden;padding:9vh 9vw;color:#fff;background:radial-gradient(circle at 78% 20%,rgba(106,129,255,.28),transparent 32%),radial-gradient(circle at 20% 80%,rgba(87,215,181,.12),transparent 30%),linear-gradient(145deg,#101a31,#17284a)}.auth-brand:after{content:"";position:absolute;width:520px;height:520px;border:1px solid rgba(255,255,255,.06);border-radius:50%;right:-200px;bottom:-220px;box-shadow:0 0 0 80px rgba(255,255,255,.018),0 0 0 160px rgba(255,255,255,.012)}.brand-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:linear-gradient(135deg,#6784f2,#7a5ee5);font-size:24px;font-weight:900;box-shadow:0 10px 28px rgba(71,96,215,.38);margin-bottom:9vh}.auth-brand .eyebrow{color:#91a8ff}.auth-brand h1{font-size:clamp(38px,4vw,64px);line-height:1.15;margin:14px 0 24px;letter-spacing:-.04em}.auth-brand h1 span{color:#91a8ff}.brand-copy{max-width:600px;color:#aebbd3;line-height:1.9;font-size:16px}.feature-grid{position:relative;z-index:1;margin-top:8vh;display:grid;grid-template-columns:repeat(2,minmax(150px,240px));gap:14px}.feature-grid div{padding:17px;border:1px solid rgba(255,255,255,.1);border-radius:13px;background:rgba(255,255,255,.035);backdrop-filter:blur(8px);display:flex;align-items:center;gap:13px}.feature-grid b{color:#829cff;font-size:12px}.feature-grid span{font-weight:700}.auth-card-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:50px;background:#f5f7fb}.auth-card{width:min(410px,100%);padding:38px;border:1px solid var(--line);border-radius:22px;background:#fff;box-shadow:0 25px 70px rgba(8,20,50,.14)}.auth-card-head{text-align:center;margin-bottom:28px}.auth-card-head .pill{display:inline-block;padding:6px 12px;border-radius:20px;color:var(--primary);background:#edf2ff;font-size:12px;font-weight:800}.auth-card h2{font-size:26px;margin:16px 0 7px}.auth-card-head p{color:var(--muted);margin:0}.auth-card form label{display:block;margin:16px 0 0;font-size:13px;font-weight:700}.auth-card input{width:100%;margin-top:8px;padding:13px 14px;border:1px solid #dce3ef;border-radius:10px;outline:none;background:#fafcff}.auth-card input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(65,105,225,.1);background:#fff}.auth-submit{margin-top:10px;padding:13px}.form-error{min-height:20px;margin:9px 0 0;color:var(--red);font-size:13px}.text-button{width:100%;border:0;background:none;color:var(--primary);margin-top:16px;font-weight:700}.demo-account{display:flex;justify-content:space-between;margin-top:25px;padding:12px 14px;border-radius:10px;background:#f5f7fb;color:var(--muted);font-size:12px}.demo-account code{color:var(--ink);font-weight:700}.auth-foot{color:#8791a3;font-size:12px;margin-top:18px}
/* Shell */
.app-shell{min-height:100vh}.sidebar{position:fixed;z-index:20;inset:0 auto 0 0;width:244px;padding:24px 18px 18px;background:linear-gradient(180deg,#111c33,#0e172b);color:#fff;display:flex;flex-direction:column}.side-brand{display:flex;align-items:center;gap:11px;padding:0 8px 22px;border-bottom:1px solid rgba(255,255,255,.08)}.side-brand>span{width:39px;height:39px;display:grid;place-items:center;border-radius:11px;background:linear-gradient(135deg,#6784f2,#7657df);font-weight:900;font-size:20px}.side-brand div{display:flex;flex-direction:column}.side-brand strong{font-size:17px}.side-brand small{color:#7786a4;font-size:9px;letter-spacing:.1em;margin-top:3px}.side-nav{padding-top:22px}.side-nav>p{margin:0 11px 10px;color:#63718d;font-size:10px;font-weight:800;letter-spacing:.18em}.side-nav a{position:relative;display:grid;grid-template-columns:30px 1fr;grid-template-rows:auto auto;column-gap:8px;padding:12px 11px;margin:5px 0;border-radius:11px;color:#aeb8cc}.side-nav a i{grid-row:1/3;width:28px;height:28px;display:grid;place-items:center;font-style:normal;color:#7585a5;font-size:15px}.side-nav a span{font-size:14px;font-weight:700}.side-nav a small{font-size:10px;color:#66748f;margin-top:2px}.side-nav a:hover{background:rgba(255,255,255,.05);color:#fff}.side-nav a.active{background:linear-gradient(90deg,rgba(75,106,225,.28),rgba(75,106,225,.08));color:#fff}.side-nav a.active:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:5px;background:#7590ff}.side-nav a.active i{color:#8ea4ff}.side-bottom{margin-top:auto}.model-badge{display:flex;align-items:center;gap:7px;margin:0 7px 13px;padding:8px 10px;border-radius:9px;font-size:10px;font-weight:700}.model-badge:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 7px currentColor}.model-badge.fallback{color:#f0c176;background:rgba(224,162,65,.1)}.model-badge.live{color:#69dbb3;background:rgba(50,190,143,.1)}.user-panel{display:grid;grid-template-columns:35px 1fr 26px;align-items:center;gap:9px;padding:12px 8px 2px;border-top:1px solid rgba(255,255,255,.08)}.user-avatar{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:#2b3b5a;color:#d8e0ef;font-size:0;overflow:hidden}.user-avatar:before{content:"人";font-size:13px}.user-panel div{min-width:0;display:flex;flex-direction:column}.user-panel strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-panel small{color:#63718c;font-size:9px;margin-top:3px}.user-panel button{border:0;background:none;color:#6f7d98;font-size:17px}.user-panel button:hover{color:#fff}.main-content{margin-left:244px;padding:34px clamp(24px,3.2vw,52px) 50px;min-height:100vh}.page-header{min-height:94px;margin-bottom:25px;display:flex;justify-content:space-between;align-items:center;gap:30px}.page-header h1{font-size:28px;letter-spacing:-.02em;margin:0 0 8px}.page-header>div>p:last-child{margin:0;color:var(--muted);font-size:14px}.header-status{display:flex;align-items:center;gap:11px;padding:12px 16px;border:1px solid var(--line);border-radius:12px;background:#fff}.header-status>div{display:flex;flex-direction:column;white-space:nowrap}.header-status strong{font-size:12px}.header-status small{color:var(--muted);font-size:10px;margin-top:3px}.pulse{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 6px rgba(32,168,120,.1)}.action-button{padding:13px 18px}
/* Chat/Profile */
.profile-layout{display:grid;grid-template-columns:minmax(500px,1.35fr) minmax(300px,.65fr);gap:20px}.chat-panel{display:flex;flex-direction:column}.profile-chat-panel{height:calc(100vh - 185px);min-height:570px}.stream-label{padding:6px 10px;border-radius:14px;background:#edf8f4;color:var(--green);font-size:10px;font-weight:800}.chat-messages{flex:1;overflow:auto;padding:24px;background:linear-gradient(#fbfcff,#f8faff)}.chat-row{display:flex;align-items:flex-start;gap:9px;margin:0 0 19px}.chat-row.user{flex-direction:row-reverse}.avatar{flex:0 0 31px;width:31px;height:31px;display:grid;place-items:center;border-radius:9px;background:#e9efff;color:var(--primary);font-size:10px;font-weight:900}.chat-row.user .avatar{background:#243454;color:#fff}.bubble{max-width:min(86%,690px);padding:13px 15px;border:1px solid var(--line);border-radius:4px 14px 14px 14px;background:#fff;box-shadow:0 4px 14px rgba(30,50,90,.04);font-size:13px;line-height:1.75}.chat-row.user .bubble{border-color:#4169e1;background:#4169e1;color:#fff;border-radius:14px 4px 14px 14px}.typing:empty:after{content:"正在思考…";color:var(--muted);animation:blink 1s infinite}@keyframes blink{50%{opacity:.45}}.chat-composer{position:relative;padding:16px 18px 30px;border-top:1px solid var(--line);background:#fff}.chat-composer textarea{display:block;width:100%;min-height:62px;max-height:150px;padding:13px 55px 13px 14px;resize:vertical;border:1px solid #dce3ef;border-radius:12px;outline:none;line-height:1.5}.chat-composer textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(65,105,225,.09)}.chat-composer small{position:absolute;bottom:9px;left:20px;color:#9aa4b5;font-size:9px}.send-button{position:absolute;right:29px;top:27px;width:38px;height:38px;border:0;border-radius:10px;background:var(--primary);color:#fff;font-size:16px}.send-button:hover{background:var(--primary-dark);transform:translateY(-1px)}.profile-card{height:max-content}.profile-draft{padding:10px 22px 18px}.profile-item{display:grid;grid-template-columns:78px 1fr;gap:10px;padding:12px 0;border-bottom:1px dashed var(--line);align-items:start}.profile-item span{color:var(--muted);font-size:11px}.profile-item strong{font-size:12px;line-height:1.6}.profile-item.missing strong{color:#a4adbc;font-weight:500}.confirm-box{margin:0 17px 17px;padding:14px;border-radius:12px;background:#f6f8fc}.confirm-box p{margin:0 0 13px;color:var(--muted);font-size:11px;line-height:1.65}.confirm-box b{color:var(--ink)}
.markdown-body>:first-child{margin-top:0}.markdown-body>:last-child{margin-bottom:0}.markdown-body p{margin:0 0 8px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{margin:12px 0 6px;font-size:14px;line-height:1.45}.markdown-body ul,.markdown-body ol{margin:5px 0 9px;padding-left:21px}.markdown-body li{margin:2px 0}.markdown-body blockquote{margin:8px 0;padding:4px 10px;border-left:3px solid #b8c6ee;background:#f6f8ff;color:#59657a}.markdown-body strong{color:#17233b}.markdown-body a{color:var(--primary);text-decoration:underline}.markdown-body code{padding:1px 4px;border-radius:4px;background:#f0f3f8;font-family:inherit;color:#4a5870}.chat-row.user .markdown-body strong,.chat-row.user .markdown-body a{color:#fff}
/* Learning */
.warning-banner{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;margin-bottom:18px;padding:13px 17px;border:1px solid #f0d9ab;border-radius:12px;background:#fff9ed;color:#795d25;font-size:12px}.warning-banner a{font-weight:800;color:#a36b0e}.generation-progress{margin-bottom:18px;padding:15px 18px;border:1px solid #dbe3fa;border-radius:13px;background:#fff}.generation-progress>div:first-child{display:flex;justify-content:space-between;font-size:11px}.generation-progress span{color:var(--primary);font-weight:800}.generation-progress strong{font-weight:600}.progress-track{height:6px;margin-top:11px;border-radius:8px;background:#edf1f8;overflow:hidden}.progress-track i{display:block;width:2%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--primary),#7a61e4);transition:width .3s}.learning-layout{display:grid;grid-template-columns:minmax(285px,.68fr) minmax(550px,1.32fr);gap:20px;align-items:start}.route-panel{position:sticky;top:24px}.route-list{padding:13px}.route-step{position:relative;width:100%;display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;text-align:left;border:1px solid transparent;border-radius:12px;background:transparent;padding:13px 10px;color:var(--ink)}.route-step:not(:last-child):after{content:"";position:absolute;left:28px;top:51px;width:1px;height:18px;background:#dfe5ef}.route-step:hover:not(:disabled),.route-step.selected{border-color:#dce4fb;background:#f7f9ff}.route-step.current .route-index{background:var(--primary);color:#fff}.route-step.completed .route-index{background:#e4f7f0;color:var(--green)}.route-step.locked{color:#98a2b4}.route-index{width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:#edf1f6;color:#6d7890;font-size:11px;font-weight:900}.route-step>span:nth-child(2){display:flex;min-width:0;flex-direction:column}.route-step strong{font-size:12px}.route-step small{color:var(--muted);font-size:9px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.route-step em{font-style:normal;color:var(--muted);font-size:9px}.route-step.current em{color:var(--primary)}.route-step.completed em{color:var(--green)}.lesson-panel{min-height:570px}.lesson-hero{padding:29px 30px 24px;background:radial-gradient(circle at 95% 20%,rgba(106,127,235,.14),transparent 25%),linear-gradient(145deg,#142442,#1a3058);color:#fff}.lesson-tag{display:inline-block;padding:5px 9px;border-radius:13px;background:rgba(126,151,255,.17);color:#aebeff;font-size:10px;font-weight:800}.lesson-hero h2{font-size:25px;margin:13px 0 8px}.lesson-hero p{margin:0;color:#aebbd1;font-size:12px;line-height:1.7}.lesson-task{margin:20px 24px;padding:16px;border-left:3px solid var(--primary);border-radius:5px 10px 10px 5px;background:#f5f8ff}.lesson-task strong{font-size:12px;color:var(--primary)}.lesson-task p{margin:7px 0;color:var(--ink);font-size:13px}.lesson-task small{color:var(--muted)}.resource-stack{padding:0 24px}.lesson-resource{padding:19px 0;border-top:1px solid var(--line)}.lesson-resource>div>span{font-size:10px;color:var(--violet);font-weight:800}.lesson-resource h3{font-size:16px;margin:6px 0}.lesson-resource p{color:var(--muted);font-size:12px;line-height:1.7}.lesson-resource ul{padding-left:20px;font-size:12px;line-height:1.8}.lesson-actions{display:flex;justify-content:flex-end;gap:10px;padding:20px 24px;border-top:1px solid var(--line)}.lesson-actions button{padding:10px 15px;border:1px solid var(--line);border-radius:10px;background:#fff;font-weight:700}.success-banner{margin:0 24px 22px;padding:12px 15px;border-radius:10px;background:#eaf8f3;color:#13835e;font-size:11px}.citation-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}.citation-list span{padding:5px 8px;border-radius:7px;background:#f1f4f9;color:#647089;font-size:9px}
/* Practice */
.threshold-card{display:flex;align-items:center;gap:10px;padding:10px 15px;border:1px solid #dfe6f2;border-radius:12px;background:#fff}.threshold-card strong{font-size:27px;color:var(--primary)}.threshold-card span{font-size:11px;color:var(--muted)}.practice-layout{display:grid;grid-template-columns:minmax(570px,1.35fr) minmax(290px,.65fr);gap:20px;align-items:start}.practice-panel{padding-bottom:1px}.practice-head{padding:26px 28px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,#f8faff,#f3f0ff)}.practice-head span{font-size:10px;font-weight:800;color:var(--violet)}.practice-head h2{font-size:22px;margin:8px 0}.practice-head p{font-size:11px;color:var(--muted);margin:0}.practice-panel form{padding:8px 28px 28px}.practice-panel fieldset{border:0;border-bottom:1px solid var(--line);padding:21px 0;margin:0}.practice-panel legend{display:flex;gap:10px;font-weight:700;font-size:13px;line-height:1.6}.practice-panel legend span{flex:0 0 24px;height:24px;display:grid;place-items:center;border-radius:7px;background:#edf2ff;color:var(--primary);font-size:10px}.option{display:flex;align-items:center;gap:10px;margin:9px 0 0 34px;padding:10px 12px;border:1px solid #e2e7f0;border-radius:9px;font-size:12px;cursor:pointer}.option:hover{border-color:#9fb1ef;background:#f8faff}.option input{accent-color:var(--primary)}.practice-panel form>.primary{margin-top:23px}.result-card{display:flex;align-items:center;gap:16px;margin:0 28px 18px;padding:17px;border-radius:12px}.result-card.pass{background:#eaf8f3;color:#147c5c}.result-card.retry{background:#fff3e6;color:#9b651b}.result-score{font-size:30px;font-weight:900}.result-card h3,.result-card p{margin:0}.result-card p{font-size:11px;margin-top:4px}.answer-review{margin:0 28px}.answer-review>div{padding:12px 14px;margin:8px 0;border-left:3px solid;border-radius:8px;background:#f7f9fc}.answer-review .correct{border-color:var(--green)}.answer-review .wrong{border-color:var(--red)}.answer-review strong{font-size:11px}.answer-review p{font-size:11px;color:var(--muted);line-height:1.6;margin:5px 0 0}.report-panel{position:sticky;top:24px}.mastery-score{margin:20px;display:flex;align-items:baseline;gap:9px;padding-bottom:17px;border-bottom:1px solid var(--line)}.mastery-score strong{font-size:42px;color:var(--primary)}.mastery-score span{color:var(--muted);font-size:11px}.mastery-row{padding:0 20px 15px}.mastery-row>div:first-child{display:flex;justify-content:space-between;font-size:11px}.mastery-row span{color:var(--muted)}.meter{height:6px;margin-top:7px;border-radius:7px;background:#edf0f5;overflow:hidden}.meter i{display:block;height:100%;background:linear-gradient(90deg,var(--primary),#7b62e4);border-radius:inherit}.mastery-row+p,#masteryReport>p{padding:0 20px;color:var(--muted);font-size:11px;line-height:1.6}.report-note{margin:18px;padding:14px;border-radius:10px;background:#f6f8fc}.report-note b{font-size:11px}.report-note p{margin:6px 0 0;color:var(--muted);font-size:10px;line-height:1.65}
/* Tutor */
.tutor-layout{display:grid;grid-template-columns:minmax(560px,1.4fr) minmax(280px,.6fr);gap:20px}.tutor-chat-panel{height:calc(100vh - 185px);min-height:590px}.tutor-messages{padding-bottom:30px}.inline-diagram{margin-top:13px}.diagram-title{font-size:11px;font-weight:800;margin-bottom:9px;color:var(--ink)}.concept-flow{display:flex;align-items:stretch;gap:6px;overflow-x:auto;padding:3px 0 6px}.concept-node{flex:0 0 98px;min-height:66px;padding:9px;border:1px solid #dfe6f4;border-radius:10px;background:#f8faff;display:flex;flex-direction:column;gap:5px}.concept-node small{color:var(--primary);font-size:9px}.concept-node strong{font-size:10px;line-height:1.4}.flow-arrow{align-self:center;color:#8ea0bf}.diagram-note{display:block;color:var(--muted);font-size:8px;margin-top:5px}.stream-citations{margin-top:10px}.tutor-aside{display:flex;flex-direction:column;gap:18px}.suggestion-panel{padding-bottom:12px}.suggestion-panel>button{display:block;width:calc(100% - 28px);margin:8px 14px;padding:11px 12px;text-align:left;border:1px solid var(--line);border-radius:9px;background:#fafbfe;color:#4c5870;font-size:11px}.suggestion-panel>button:hover{border-color:#b8c5ee;background:#f5f7ff;color:var(--primary);transform:translateX(2px)}.tutor-capabilities{padding:20px}.tutor-capabilities h3{margin:0 0 12px;font-size:14px}.tutor-capabilities ul{list-style:none;margin:0;padding:0}.tutor-capabilities li{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}.tutor-capabilities i{width:25px;height:25px;display:grid;place-items:center;border-radius:8px;background:#edf2ff;color:var(--primary);font-style:normal;font-size:9px;font-weight:900}.tutor-capabilities span{display:flex;flex-direction:column}.tutor-capabilities b{font-size:11px}.tutor-capabilities small{color:var(--muted);font-size:9px;margin-top:3px}
@media(max-width:1050px){.profile-layout,.learning-layout,.practice-layout,.tutor-layout{grid-template-columns:1fr}.profile-chat-panel,.tutor-chat-panel{height:680px}.route-panel,.report-panel{position:static}.route-panel{order:0}.lesson-panel{order:1}.tutor-aside{display:grid;grid-template-columns:1fr 1fr}.auth-layout{grid-template-columns:1fr}.auth-brand{display:none}.auth-card-wrap{min-height:100vh}}
@media(max-width:720px){.sidebar{position:static;width:100%;height:auto;padding:12px}.side-brand{border:0;padding:4px 4px 10px}.side-nav{display:grid;grid-template-columns:repeat(4,1fr);padding:0;gap:4px}.side-nav>p,.side-nav a small,.side-bottom{display:none}.side-nav a{display:flex;flex-direction:column;align-items:center;padding:8px 3px;margin:0;font-size:10px}.side-nav a i{width:24px;height:22px}.side-nav a span{font-size:10px}.side-nav a.active:before{inset:auto 20% -2px;width:auto;height:2px}.main-content{margin-left:0;padding:20px 14px 36px}.page-header{align-items:flex-start;min-height:auto;flex-direction:column;margin-bottom:18px;gap:13px}.page-header h1{font-size:23px}.page-header .action-button{width:100%}.header-status{width:100%}.profile-chat-panel,.tutor-chat-panel{height:70vh;min-height:520px}.profile-layout,.learning-layout,.practice-layout,.tutor-layout{gap:14px}.tutor-aside{grid-template-columns:1fr}.lesson-actions{flex-direction:column}.warning-banner{grid-template-columns:1fr}.practice-panel form{padding:8px 16px 18px}.practice-head{padding:22px 18px}.option{margin-left:0}.auth-card-wrap{padding:18px}.auth-card{padding:27px 22px}.concept-node{flex-basis:88px}.panel-head{padding:15px}.chat-messages{padding:16px}.bubble{max-width:91%}}

/* Course catalog */
.course-page-header{align-items:flex-end}.catalog-stat{display:flex;align-items:baseline;gap:9px;padding:11px 15px;border:1px solid var(--line);border-radius:8px;background:#fff}.catalog-stat strong{font-size:28px;color:var(--primary)}.catalog-stat span{font-size:10px;color:var(--muted)}.course-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.course-card{position:relative;display:flex;min-height:430px;flex-direction:column;padding:21px;border:1px solid var(--line);border-top:4px solid #5f76d9;border-radius:8px;background:#fff;box-shadow:0 8px 25px rgba(31,48,82,.05)}.course-card.green{border-top-color:#20946e}.course-card.red{border-top-color:#d45959}.course-card.selected{border-right-color:#9baeea;border-bottom-color:#9baeea;border-left-color:#9baeea;box-shadow:0 10px 28px rgba(65,105,225,.11)}.course-card-top{height:24px;display:flex;align-items:center;justify-content:space-between}.course-number{font-size:10px;font-weight:900;color:#97a2b6}.current-course{padding:4px 7px;border-radius:6px;background:#eaf8f3;color:#16845f;font-size:9px;font-weight:800}.course-mark{display:flex;width:max-content;max-width:100%;align-items:center;min-height:42px;margin:20px 0 15px;padding:0 12px;border-radius:7px;background:#edf2ff;color:#3d5cc9;font-size:12px;font-weight:900}.course-card.green .course-mark{background:#e9f7f1;color:#167b5b}.course-card.red .course-mark{background:#fff0f0;color:#b64343}.course-card h2{margin:0 0 10px;font-size:20px}.course-card>p{min-height:66px;margin:0;color:var(--muted);font-size:12px;line-height:1.8}.course-audience{display:flex;gap:9px;margin:17px 0;padding:12px;border-radius:7px;background:#f7f9fc}.course-audience strong{font-size:10px;color:var(--ink)}.course-audience span{font-size:10px;color:var(--muted);line-height:1.6}.course-meta{display:flex;gap:14px;padding-top:14px;border-top:1px solid var(--line);color:#66738b;font-size:10px}.course-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding-top:20px}.course-actions a{font-size:10px;color:var(--muted);text-decoration:underline}.course-actions button{padding:10px 14px}.catalog-note{display:flex;align-items:center;gap:18px;margin-top:18px;padding:15px 18px;border-left:3px solid #d5a746;border-radius:4px 8px 8px 4px;background:#fffaf0}.catalog-note strong{flex:0 0 auto;font-size:11px;color:#7d5d1a}.catalog-note p{margin:0;color:#756b58;font-size:10px;line-height:1.7}

/* Online lesson documents */
.generation-progress span small{margin-left:5px;color:#7f8ba2;font-size:9px;font-weight:600}.diagnosis-brief{margin:0 24px 20px;padding:15px 17px;border:1px solid #dfe6f4;border-radius:8px;background:#fbfcff}.diagnosis-brief strong{font-size:11px;color:var(--violet)}.diagnosis-brief p{margin:7px 0 4px;font-size:12px;line-height:1.7}.diagnosis-brief small{color:var(--muted);font-size:9px}.resource-stack-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:4px 0 13px}.resource-stack-head>div{display:flex;align-items:center;gap:8px}.resource-stack-head strong{font-size:13px}.resource-stack-head span{padding:3px 7px;border-radius:5px;background:#eef2f8;color:#65718a;font-size:9px}.resource-stack-head p{margin:0;color:var(--muted);font-size:9px}.online-resource{margin-bottom:11px;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.online-resource summary{display:grid;grid-template-columns:auto 1fr 20px;align-items:center;gap:12px;padding:15px 16px;cursor:pointer;list-style:none;background:#fbfcfe}.online-resource summary::-webkit-details-marker{display:none}.online-resource summary h3{margin:0 0 4px;font-size:13px}.online-resource summary p{margin:0;color:var(--muted);font-size:10px}.online-resource summary i{font-style:normal;color:#8793a8;transition:transform .2s}.online-resource[open] summary i{transform:rotate(180deg)}.resource-type{padding:5px 7px;border-radius:5px;background:#edf2ff;color:var(--primary);font-size:9px;font-weight:800}.resource-document{padding:22px 20px;border-top:1px solid var(--line);font-size:12px;line-height:1.85;color:#27334a}.resource-document h1,.resource-document h2,.resource-document h3{margin:20px 0 8px;color:#17233b}.resource-document h2{font-size:17px}.resource-document h3{font-size:14px}.resource-document pre{max-width:100%;overflow:auto;padding:14px;border-radius:7px;background:#172033;color:#e5ebf5;font-size:11px;line-height:1.6}.resource-document pre code{padding:0;background:transparent;color:inherit;font-family:Consolas,monospace}.online-resource>.citation-list{margin:0;padding:12px 16px;border-top:1px solid var(--line);background:#fafbfd}.citation-list a,.citation-list span{padding:5px 8px;border-radius:7px;background:#f1f4f9;color:#647089;font-size:9px}.citation-list a:hover{background:#e6ecfa;color:var(--primary)}.empty-state.compact{min-height:140px}

@media(max-width:1050px){.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.course-grid{grid-template-columns:1fr}.course-card{min-height:390px}.course-page-header{align-items:flex-start}.catalog-note{align-items:flex-start;flex-direction:column;gap:5px}.resource-stack{padding:0 14px}.resource-stack-head{align-items:flex-start;flex-direction:column;gap:4px}.online-resource summary{grid-template-columns:1fr 18px}.resource-type{grid-column:1/3;width:max-content}.resource-document{padding:17px 14px}.diagnosis-brief{margin:0 14px 16px}}
.course-actions{justify-content:flex-end}

/* Curated stage graph and resource package */
.resource-manifest{margin:0 24px 18px;padding:15px 18px;border:1px solid #dce4f1;border-radius:8px;background:#fff}.resource-manifest>div{display:flex;align-items:center;justify-content:space-between;gap:12px}.resource-manifest>div strong{font-size:12px}.resource-manifest>div span{color:#18805e;font-size:9px;font-weight:800}.resource-manifest ul{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:12px 0 0;padding:0;list-style:none}.resource-manifest li{display:flex;min-width:0;align-items:center;gap:6px;padding:8px;border-radius:6px;background:#f4f7fc;color:#4f5d74;font-size:9px}.resource-manifest li b{flex:0 0 19px;height:19px;display:grid;place-items:center;border-radius:5px;background:#e4ebff;color:var(--primary);font-size:8px}.resource-action{display:flex;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--line);background:#fafbfd}.resource-action .button{padding:8px 12px;font-size:10px}
.stage-graph{margin:0 24px 22px;border:1px solid #dce4f1;border-radius:8px;background:#fff;overflow:hidden}.stage-graph-head{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(280px,1.3fr);gap:24px;padding:18px 20px;border-bottom:1px solid var(--line);background:#f8faff}.stage-graph-head small{color:var(--primary);font-size:8px;font-weight:900}.stage-graph-head h3{margin:5px 0 0;font-size:15px}.stage-graph-head p{margin:0;color:var(--muted);font-size:10px;line-height:1.75}.topic-flow{display:grid;grid-template-columns:minmax(110px,1fr) 20px minmax(120px,1fr) 20px minmax(110px,1fr);align-items:center;gap:8px;padding:18px 20px}.topic-flow>i{text-align:center;color:#8e9bb2;font-style:normal}.flow-group,.flow-current{display:flex;min-height:72px;flex-direction:column;justify-content:center;gap:5px;padding:11px;border:1px solid #e1e6ef;border-radius:7px;background:#fafbfd}.flow-group small,.flow-current small{color:var(--muted);font-size:8px}.flow-group span{font-size:10px;font-weight:700}.flow-current{border-color:#9eb0ed;background:#edf2ff}.flow-current strong{color:#344fae;font-size:12px}.concept-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:0 20px 18px}.concept-grid article{display:grid;grid-template-columns:27px 1fr;gap:9px;padding:12px;border:1px solid #e5e9f1;border-radius:7px}.concept-grid article>b{color:#9aa7bd;font-size:9px}.concept-grid article strong{font-size:11px}.concept-grid article p{margin:5px 0 0;color:var(--muted);font-size:9px;line-height:1.65}.stage-objectives{padding:15px 20px;border-top:1px solid var(--line);background:#fbfcfe}.stage-objectives>strong{font-size:10px}.stage-objectives ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 18px;margin:10px 0 0;padding-left:18px;color:#536078;font-size:9px;line-height:1.55}
.question-meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.question-meta span,.question-meta em,.review-head em{font-size:9px;font-style:normal}.question-meta span{color:var(--muted);font-weight:800}.question-meta em,.review-head em{padding:4px 7px;border-radius:5px;background:#edf2ff;color:var(--primary);font-weight:800}.practice-panel legend{display:block}.dimension-report{margin:0 28px 20px;padding:16px;border:1px solid var(--line);border-radius:8px}.report-title,.dimension-row>div:first-child{display:flex;justify-content:space-between;align-items:center}.report-title{margin-bottom:13px}.report-title strong{font-size:12px}.report-title span{color:var(--muted);font-size:9px}.dimension-row{margin-top:10px}.dimension-row>div:first-child{font-size:10px}.dimension-row strong{font-size:10px}.dimension-row .meter{height:7px}.dimension-row .meter i.pass{background:#23936d}.dimension-row .meter i.weak{background:#d45d5d}.result-score small{font-size:10px;margin-left:2px}.answer-review>article{padding:14px;margin:9px 0;border-left:3px solid;border-radius:7px;background:#f8f9fc}.review-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.answer-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.answer-compare p{margin:0;padding:9px;border-radius:6px;background:#fff;border:1px solid #e5e9f0;color:var(--ink)}.answer-compare span{display:block;margin-bottom:4px;color:var(--muted);font-size:8px}.answer-explanation{margin-top:9px!important}.answer-review .wrong .answer-compare p:last-child{border-color:#b7ddcf;background:#f3fbf8}
.practice-feedback-card{margin:0 28px 18px;padding:15px 17px;border-left:3px solid var(--primary);border-radius:5px 8px 8px 5px;background:#f3f6ff}.practice-feedback-card strong{font-size:12px}.practice-feedback-card p{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.65}
@media(max-width:720px){.resource-manifest{margin:0 14px 16px}.resource-manifest ul{grid-template-columns:repeat(2,minmax(0,1fr))}.stage-graph{margin:0 14px 18px}.stage-graph-head{grid-template-columns:1fr;gap:9px}.topic-flow{grid-template-columns:1fr}.topic-flow>i{transform:rotate(90deg)}.concept-grid,.stage-objectives ul{grid-template-columns:1fr}.practice-feedback-card,.answer-review{margin-right:16px;margin-left:16px}.answer-compare{grid-template-columns:1fr}}

