:root{--bg: #eef4f2;--panel: #ffffff;--panel-soft: #f7faf9;--line: #d8e5e2;--line-soft: #e6efed;--ink: #18393e;--ink-soft: #49666a;--muted: #8b9da0;--teal: #0b7a75;--teal-dark: #075e5b;--teal-soft: #e0f1ed;--blue: #3f6f9f;--blue-soft: #e8eff8;--amber: #b57b22;--amber-soft: #fff3d8;--coral: #c45e4e;--coral-soft: #fff0ec;--shadow: 0 10px 28px rgba(30, 64, 68, .06);--radius: 12px;font-family:Source Han Sans SC,Noto Sans SC,Microsoft YaHei,sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px;overflow:hidden;background:var(--bg)}button,input{font:inherit}button{border:0}button:focus-visible,input:focus-visible{outline:2px solid #56aaa1;outline-offset:2px}.life-app{display:flex;height:100vh;min-height:620px;flex-direction:column;padding:0 14px 14px;overflow:hidden}.app-header{display:flex;height:68px;flex:0 0 68px;align-items:center;gap:22px;padding:0 3px}.brand-lockup,.login-brand{display:flex;min-width:210px;align-items:center;gap:10px}.brand-mark{display:grid;width:34px;height:34px;place-items:center;color:#fff;background:var(--teal);border-radius:9px;box-shadow:0 5px 12px #0b7a7533;font-size:19px;font-weight:800}.brand-overline{display:block;color:#8ca3a1;font-size:8px;font-weight:750;letter-spacing:.14em}.brand-lockup h1,.login-brand h1{margin:2px 0 0;color:var(--ink);font-size:20px;line-height:1;letter-spacing:.06em}.header-breadcrumb{display:flex;min-width:0;align-items:center;gap:6px;color:var(--muted);font-size:11px}.header-breadcrumb strong{color:var(--ink-soft);font-weight:700}.header-actions{display:flex;margin-left:auto;align-items:center;gap:7px}.data-status{display:inline-flex;align-items:center;gap:6px;margin-right:5px;color:var(--muted);font-size:10px}.data-status i,.source-badge i,.teacher-badge i,.rail-teacher i{display:inline-block;width:6px;height:6px;background:#54b69d;border-radius:50%}.header-button{display:inline-flex;min-height:32px;padding:7px 10px;align-items:center;gap:6px;color:var(--ink-soft);background:transparent;border:1px solid transparent;border-radius:7px;cursor:pointer;font-size:10px}.header-button:hover:not(:disabled){background:var(--panel);border-color:var(--line)}.header-button:disabled{opacity:.5;cursor:wait}.logout-button{color:var(--coral)}.mobile-rail-toggle{display:none}.workbench-shell{display:grid;min-height:0;flex:1 1 auto;grid-template-columns:218px minmax(0,1fr) 304px;gap:10px}.workspace-rail,.workspace-main,.insight-panel{min-height:0}.workspace-rail{display:flex;flex-direction:column;padding:13px 10px 10px;overflow:hidden;background:#f8fbfae0;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.rail-dataset{display:flex;margin:2px 4px 18px;align-items:center;gap:9px}.rail-dataset-icon{display:grid;width:32px;height:32px;place-items:center;color:var(--teal);background:var(--teal-soft);border-radius:8px}.rail-dataset strong,.rail-dataset span{display:block}.rail-dataset strong{color:var(--ink);font-size:12px}.rail-dataset span{margin-top:3px;color:var(--muted);font-size:9px}.rail-nav{display:grid;gap:3px}.rail-heading{margin:8px 8px 4px;color:#9aabad;font-size:9px;font-weight:700}.rail-item{display:flex;width:100%;min-height:36px;padding:7px 9px;align-items:center;gap:9px;color:var(--ink-soft);background:transparent;border-radius:8px;cursor:pointer;font-size:11px;text-align:left}.rail-item svg{color:#8da2a1}.rail-item:hover{background:#edf5f3}.rail-item.is-active{color:var(--teal-dark);background:var(--teal-soft);font-weight:750}.rail-item.is-active svg{color:var(--teal)}.rail-item em{min-width:18px;margin-left:auto;padding:2px 4px;color:#79908f;background:#ffffffa6;border-radius:5px;font-size:9px;font-style:normal;text-align:center}.rail-bottom{display:grid;margin-top:auto;gap:4px}.rail-teacher{display:flex;padding:7px 8px 10px;align-items:center;gap:6px;color:var(--muted);font-size:9px}.rail-action{display:flex;min-height:31px;padding:6px 8px;align-items:center;gap:7px;color:var(--ink-soft);background:transparent;border-radius:7px;cursor:pointer;font-size:10px;text-align:left}.rail-action:hover{background:#edf5f3}.rail-action.is-danger{color:var(--coral)}.workspace-main{display:flex;min-width:0;flex-direction:column;overflow:hidden}.workspace-toolbar{display:flex;min-height:63px;padding:3px 6px 12px;align-items:flex-end;justify-content:space-between;gap:12px}.toolbar-title h2{margin:3px 0 0;color:var(--ink);font-size:23px;line-height:1;letter-spacing:.02em}.toolbar-kicker{color:var(--muted);font-size:9px;letter-spacing:.08em}.selected-chip{display:inline-flex;max-width:190px;padding:5px 8px 5px 5px;align-items:center;gap:6px;overflow:hidden;color:var(--ink-soft);background:var(--panel);border:1px solid var(--line);border-radius:7px;cursor:pointer;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.selected-chip:hover{border-color:#a7cbc5}.selected-chip svg{flex:0 0 auto;color:var(--muted)}.workspace-content{min-height:0;flex:1;padding:0 2px 2px;overflow:auto;scrollbar-width:thin;scrollbar-color:#c7dad6 transparent}.view-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-bottom:2px}.panel{min-width:0;padding:16px;overflow:hidden;background:#fffffff0;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 5px 18px #22454809}.panel-wide{grid-column:1 / -1}.panel-header{display:flex;min-width:0;margin-bottom:14px;align-items:center;justify-content:space-between;gap:12px}.panel-header.compact{margin-bottom:12px}.panel-header h3{margin:0;color:var(--ink);font-size:16px;line-height:1.2}.quiet-label{color:var(--muted);font-size:9px;white-space:nowrap}.source-badge{display:inline-flex;align-items:center;gap:5px;color:#4d9184;font-size:9px}.metric-row,.experiment-summary,.insight-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.metric{min-height:73px;padding:11px 12px;background:var(--panel-soft);border:1px solid var(--line-soft);border-top:3px solid #a9d3cc;border-radius:9px}.metric span{display:block;color:var(--muted);font-size:9px}.metric strong{display:block;margin-top:8px;color:var(--ink);font-family:DIN Alternate,Bahnschrift,sans-serif;font-size:24px;font-weight:700;line-height:1}.metric small{margin-left:3px;color:var(--muted);font-family:inherit;font-size:9px;font-weight:500}.metric-teal{border-top-color:#86c9bd}.metric-teal strong{color:var(--teal-dark)}.metric-blue{border-top-color:#a5bedc}.metric-blue strong{color:var(--blue)}.metric-amber{border-top-color:#e1c27f}.metric-amber strong{color:var(--amber)}.metric-coral{border-top-color:#e0a092}.metric-coral strong{color:var(--coral)}.metric-stack{display:grid;gap:8px}.metric-stack .metric{min-height:66px}.learner-layout{display:grid;min-height:0;grid-template-columns:250px minmax(0,1fr);gap:10px}.learner-directory{display:flex;min-height:520px;flex-direction:column;padding:13px 10px}.learner-directory .panel-header{padding:0 5px}.search-box{display:flex;height:32px;margin:0 3px 10px;padding:0 9px;align-items:center;gap:7px;color:var(--muted);background:#f3f8f6;border:1px solid var(--line-soft);border-radius:7px}.search-box input{width:100%;min-width:0;color:var(--ink);background:transparent;border:0;outline:0;font-size:10px}.search-box input::placeholder{color:#aab8b8}.learner-list{min-height:0;overflow:auto;scrollbar-width:thin}.learner-row{display:flex;width:100%;min-height:50px;padding:7px 6px;align-items:center;gap:8px;color:var(--ink-soft);background:transparent;border-radius:8px;cursor:pointer;text-align:left}.learner-row:hover{background:#f1f7f5}.learner-row.is-active{color:var(--teal-dark);background:var(--teal-soft)}.learner-row-main{display:grid;min-width:0;flex:1;gap:3px}.learner-row-main strong{overflow:hidden;color:inherit;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.learner-row-main small{overflow:hidden;color:var(--muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.activity-dot{width:7px;height:7px;background:#d7e1df;border-radius:50%}.activity-dot.is-on{background:#56b29f;box-shadow:0 0 0 3px #e4f4ef}.avatar{display:grid;width:29px;height:29px;flex:0 0 auto;place-items:center;color:var(--teal-dark);background:var(--teal-soft);border-radius:8px;font-size:12px;font-weight:750}.avatar.tiny{width:20px;height:20px;border-radius:6px;font-size:10px}.avatar.large{width:48px;height:48px;border-radius:13px;font-size:20px}.learner-profile{min-height:520px}.profile-head{display:flex;padding-bottom:17px;align-items:center;gap:11px;border-bottom:1px solid var(--line-soft)}.profile-identity{display:grid;min-width:0;flex:1;gap:4px}.profile-identity h3{margin:0;color:var(--ink);font-size:20px}.profile-identity span{color:var(--ink-soft);font-size:10px}.profile-identity small{color:var(--muted);font-size:9px}.profile-state{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:9px}.profile-state i{width:6px;height:6px;background:#c9d6d4;border-radius:50%}.profile-state.is-active{color:#4b988b}.profile-state.is-active i{background:#50af9b}.profile-metrics{display:grid;margin:15px 0;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.profile-metrics .metric{min-height:65px;padding:9px 10px}.profile-metrics .metric strong{margin-top:6px;font-size:21px}.profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.profile-block{min-width:0;padding:13px;background:#fbfcfc;border:1px solid var(--line-soft);border-radius:9px}.block-header{display:flex;margin-bottom:12px;align-items:center;justify-content:space-between;gap:8px}.block-header h4{margin:0;color:var(--ink);font-size:12px}.block-header span{color:var(--muted);font-size:9px}.profile-signal{min-height:130px}.signal-row{display:flex;align-items:center;gap:8px}.signal-icon{display:grid;width:28px;height:28px;place-items:center;color:var(--coral);background:var(--coral-soft);border-radius:8px}.signal-row div{display:grid;min-width:0;gap:3px}.signal-row strong{overflow:hidden;color:var(--ink-soft);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.signal-row small{color:var(--muted);font-size:9px}.last-active{margin-top:18px;color:var(--muted);font-size:9px}.last-active strong{margin-left:6px;color:var(--ink-soft);font-weight:600}.bar-list{display:grid;gap:10px}.bar-row{display:grid;grid-template-columns:minmax(90px,.8fr) minmax(70px,1fr) 28px;align-items:center;gap:8px}.bar-label{display:grid;min-width:0;gap:3px}.bar-label strong{overflow:hidden;color:var(--ink-soft);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.bar-label small{color:var(--muted);font-size:8px}.bar-track,.course-bar,.stage-bar{height:6px;overflow:hidden;background:#e5efed;border-radius:6px}.bar-track i,.course-bar i,.stage-bar i{display:block;height:100%;background:var(--teal);border-radius:inherit}.bar-blue i{background:#6c96bd}.bar-row em{color:var(--muted);font-size:9px;font-style:normal;text-align:right}.timeline-block{grid-column:1 / -1}.behavior-timeline{display:grid;gap:0}.timeline-row{display:grid;grid-template-columns:25px minmax(0,1fr) 122px;padding:8px 0;align-items:center;gap:8px;border-bottom:1px solid var(--line-soft)}.timeline-row:last-child{border-bottom:0}.timeline-mark{display:grid;width:22px;height:22px;place-items:center;border-radius:6px}.timeline-mark.question{color:var(--teal);background:var(--teal-soft)}.timeline-mark.pass{color:#3b8a73;background:#e6f5ef}.timeline-mark.error{color:var(--coral);background:var(--coral-soft)}.timeline-main{display:grid;min-width:0;gap:3px}.timeline-main strong{overflow:hidden;color:var(--ink-soft);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.timeline-main small,.timeline-row time{color:var(--muted);font-size:9px}.timeline-row time{text-align:right}.trend-chart{display:flex;height:174px;padding:8px 3px 0;align-items:stretch;justify-content:space-around;gap:9px;border-bottom:1px solid var(--line-soft)}.trend-column{display:grid;width:100%;min-width:18px;align-items:end;justify-items:center;grid-template-rows:18px minmax(0,1fr) 18px;gap:4px}.trend-value{height:16px;color:var(--teal-dark);font-family:DIN Alternate,sans-serif;font-size:9px}.trend-track{display:flex;width:13px;height:100%;align-items:end;overflow:hidden;background:#edf4f2;border-radius:7px 7px 2px 2px}.trend-track i{display:block;width:100%;min-height:4px;background:linear-gradient(180deg,#86cabd,var(--teal));border-radius:7px 7px 2px 2px}.trend-column small{color:var(--muted);font-size:8px}.trend-empty-chart{opacity:.72}.trend-overlay{position:absolute;top:50%;left:50%;padding:5px 8px;color:var(--muted);background:#ffffffe6;border:1px solid var(--line-soft);border-radius:6px;font-size:9px;transform:translate(-50%,-50%)}.trend-panel{position:relative}.focus-panel{min-height:0}.focus-item{display:flex;padding:11px 0;align-items:center;gap:9px;border-bottom:1px solid var(--line-soft)}.focus-item:last-child{border-bottom:0}.focus-icon{display:grid;width:28px;height:28px;place-items:center;color:var(--coral);background:var(--coral-soft);border-radius:8px}.focus-icon.amber{color:var(--amber);background:var(--amber-soft)}.focus-item div{display:grid;min-width:0;gap:3px}.focus-item strong{overflow:hidden;color:var(--ink-soft);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.focus-item small{color:var(--muted);font-size:9px}.course-list,.concept-table,.stage-list,.error-list,.question-list,.attempt-list{display:grid}.course-row{display:grid;grid-template-columns:minmax(145px,.8fr) minmax(90px,1fr) 55px;padding:10px 0;align-items:center;gap:10px;border-bottom:1px solid var(--line-soft)}.course-row:last-child{border-bottom:0}.course-title{display:grid;min-width:0;gap:3px}.course-title strong{overflow:hidden;color:var(--ink-soft);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.course-title small,.course-meta{color:var(--muted);font-size:9px}.course-count{display:grid;justify-items:end;gap:2px}.course-count strong{color:var(--teal-dark);font-family:DIN Alternate,sans-serif;font-size:15px}.course-count span{color:var(--muted);font-size:8px}.course-meta{display:flex;grid-column:1 / -1;justify-content:space-between}.course-list-detailed .course-row{padding:13px 0}.mini-concept-list{display:grid;gap:10px}.mini-concept-row{display:grid;grid-template-columns:minmax(0,1fr) 100px 28px;align-items:center;gap:8px}.mini-concept-row>div{display:grid;min-width:0;gap:3px}.mini-concept-row strong{overflow:hidden;color:var(--ink-soft);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.mini-concept-row small{overflow:hidden;color:var(--muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.mini-concept-row i,.concept-score i,.error-main i{display:block;height:5px;overflow:hidden;background:#e4edeb;border-radius:5px}.mini-concept-row b,.concept-score b,.error-main b{display:block;height:100%;background:#70b6a9;border-radius:inherit}.mini-concept-row em{color:var(--muted);font-size:9px;font-style:normal;text-align:right}.concept-row{display:grid;grid-template-columns:minmax(170px,1fr) minmax(140px,1fr) 56px;padding:12px 0;align-items:center;gap:14px;border-bottom:1px solid var(--line-soft)}.concept-row:last-child{border-bottom:0}.concept-main{display:grid;min-width:0;gap:3px}.concept-main strong{overflow:hidden;color:var(--ink-soft);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.concept-main small,.concept-row em{color:var(--muted);font-size:8px}.concept-score{display:grid;gap:5px}.concept-score span{color:var(--ink-soft);font-family:DIN Alternate,sans-serif;font-size:10px}.concept-score b{background:#70b6a9}.concept-row>em{font-style:normal;text-align:right}.stage-row{display:grid;grid-template-columns:165px minmax(120px,1fr) 68px 112px;padding:12px 0;align-items:center;gap:12px;border-bottom:1px solid var(--line-soft)}.stage-row:last-child{border-bottom:0}.stage-title,.stage-rate,.stage-count{display:grid;min-width:0;gap:3px}.stage-title strong{color:var(--ink-soft);font-size:11px}.stage-title small,.stage-rate small,.stage-count span{color:var(--muted);font-size:8px}.stage-rate{justify-items:end}.stage-rate strong{color:var(--teal-dark);font-family:DIN Alternate,sans-serif;font-size:14px}.stage-count{justify-items:end}.error-row{display:grid;grid-template-columns:28px minmax(0,1fr) 40px;padding:11px 0;align-items:center;gap:9px;border-bottom:1px solid var(--line-soft)}.error-row:last-child{border-bottom:0}.error-rank{color:#9aadaa;font-family:DIN Alternate,sans-serif;font-size:11px}.error-main{display:grid;min-width:0;gap:4px}.error-main strong{overflow:hidden;color:var(--ink-soft);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.error-main small{color:var(--muted);font-size:8px}.error-main b{background:#d48370}.error-row>em{color:var(--coral);font-family:DIN Alternate,sans-serif;font-size:13px;font-style:normal;text-align:right}.question-row{display:grid;grid-template-columns:30px minmax(0,1fr) 145px;padding:11px 0;align-items:center;gap:9px;border-bottom:1px solid var(--line-soft)}.question-row:last-child{border-bottom:0}.question-avatar{display:grid;width:28px;height:28px;place-items:center;color:var(--teal-dark);background:var(--teal-soft);border-radius:8px;font-size:11px;font-weight:750}.question-main{display:grid;min-width:0;gap:3px}.question-main strong{overflow:hidden;color:var(--ink-soft);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.question-main small,.question-meta small{color:var(--muted);font-size:8px}.question-meta{display:grid;justify-items:end;gap:4px}.question-meta span{padding:3px 5px;color:#597274;background:#eef4f2;border-radius:4px;font-size:8px}.question-list-detailed .question-row{padding:14px 0}.attempt-row{display:grid;grid-template-columns:24px minmax(150px,.8fr) minmax(160px,1.2fr);padding:11px 0;align-items:start;gap:9px;border-bottom:1px solid var(--line-soft)}.attempt-row:last-child{border-bottom:0}.attempt-status{display:grid;width:22px;height:22px;place-items:center;border-radius:6px}.attempt-status.pass{color:#277967;background:#e3f2ed}.attempt-status.retry{color:var(--coral);background:var(--coral-soft)}.attempt-main,.attempt-result{display:grid;min-width:0;gap:3px}.attempt-main strong,.attempt-result span{overflow:hidden;color:var(--ink-soft);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.attempt-main small,.attempt-result small{overflow:hidden;color:var(--muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.attempt-result span{color:var(--teal-dark)}.attempt-status.retry+.attempt-main+.attempt-result span{color:var(--coral)}.insight-panel{display:flex;flex-direction:column;padding:16px 14px;overflow-y:auto;background:#f8fbfae6;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.insight-header{display:flex;margin-bottom:16px;align-items:center;justify-content:space-between;gap:9px}.insight-header h2{margin:0;color:var(--ink);font-size:16px}.teacher-badge{display:inline-flex;align-items:center;gap:5px;color:#4e9386;font-size:9px}.insight-person{display:flex;padding-bottom:15px;align-items:center;gap:9px;border-bottom:1px solid var(--line-soft)}.insight-person>div{display:grid;min-width:0;gap:4px}.insight-person strong{color:var(--ink);font-size:14px}.insight-person small{color:var(--muted);font-size:9px}.insight-metrics{grid-template-columns:repeat(3,minmax(0,1fr));margin:14px 0;gap:6px}.insight-metrics .metric{min-height:61px;padding:9px 8px}.insight-metrics .metric strong{margin-top:6px;font-size:19px}.insight-focus{display:grid;margin-top:7px;padding:10px;gap:5px;background:var(--coral-soft);border:1px solid #f1d6cf;border-radius:8px}.insight-focus span{color:var(--muted);font-size:8px}.insight-focus strong{overflow:hidden;color:var(--coral);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.insight-focus small{color:var(--muted);font-size:8px}.insight-open{width:100%;margin-top:13px}.insight-global{display:grid;grid-template-columns:1fr auto;margin-top:auto;padding-top:14px;gap:9px 8px;border-top:1px solid var(--line-soft)}.insight-global span{color:var(--muted);font-size:9px}.insight-global strong{color:var(--ink-soft);font-family:DIN Alternate,sans-serif;font-size:11px;text-align:right}.insight-empty{margin:11px 0;color:var(--muted);font-size:9px}.primary-button{display:inline-flex;min-height:34px;padding:8px 12px;align-items:center;justify-content:center;gap:7px;color:#fff;background:var(--teal);border:1px solid var(--teal);border-radius:7px;cursor:pointer;font-size:10px;font-weight:750}.primary-button:hover:not(:disabled){background:var(--teal-dark);border-color:var(--teal-dark)}.primary-button:disabled{opacity:.45;cursor:not-allowed}.text-button{display:inline-flex;padding:3px 0;align-items:center;gap:5px;color:var(--teal-dark);background:transparent;cursor:pointer;font-size:9px;font-weight:750}.text-button:hover{color:var(--teal)}.empty-inline{display:flex;min-height:76px;padding:14px;align-items:center;justify-content:center;gap:7px;color:var(--muted);background:#f7faf9b3;border:1px dashed #d5e3e0;border-radius:8px;font-size:9px;text-align:center}.loading-state{display:grid;min-height:340px;place-items:center;align-content:center;gap:8px}.loading-state strong{color:var(--ink-soft);font-size:12px}.loading-orbit{display:grid;width:34px;height:34px;place-items:center;color:var(--teal);background:var(--teal-soft);border-radius:50%;animation:spin 1.2s linear infinite}.inline-error{display:flex;margin-bottom:9px;padding:9px 11px;align-items:center;gap:7px;color:var(--coral);background:var(--coral-soft);border:1px solid #f1d6cf;border-radius:8px;font-size:9px}.inline-error span{flex:1}.login-shell{display:grid;min-height:100vh;padding:20px;place-items:center;background:radial-gradient(circle at 15% 10%,#e1f0ed 0,transparent 35%),var(--bg)}.login-card{width:min(460px,100%);padding:34px;background:#fffffff5;border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 50px #23494c1a}.login-brand{min-width:0}.login-brand .brand-mark{width:39px;height:39px;font-size:22px}.login-brand h1{font-size:23px}.login-card h2{margin:42px 0 22px;color:var(--ink);font-size:24px;letter-spacing:.02em}.login-form label{display:block;margin-bottom:7px;color:var(--ink-soft);font-size:10px;font-weight:700}.key-input{display:flex;min-height:42px;padding:4px 4px 4px 11px;align-items:center;gap:7px;background:#f5faf8;border:1px solid #cfe1dd;border-radius:8px}.key-input>svg{color:var(--teal);flex:0 0 auto}.key-input input{width:100%;min-width:0;color:var(--ink);background:transparent;border:0;outline:0;font-size:12px}.key-input .primary-button{flex:0 0 auto;min-width:82px}.login-error{display:flex;margin:10px 0 0;align-items:center;gap:6px;color:var(--coral);font-size:9px}.login-note{display:block;margin-top:18px;color:var(--muted);font-size:9px}:root{--bg: #f2f6f5;--panel: #ffffff;--panel-soft: #f7faf9;--line: #dbe7e4;--line-soft: #e9f0ee;--ink: #122f36;--ink-soft: #45636a;--muted: #819599;--teal: #087f79;--teal-dark: #055d5b;--teal-soft: #dcf2ed;--blue: #4c78a8;--blue-soft: #e9f0fa;--amber: #b87924;--amber-soft: #fff3dd;--coral: #cb6654;--coral-soft: #fff0ed;--shadow: 0 18px 42px rgba(24, 55, 61, .08);--radius: 16px;font-family:Inter,SF Pro Display,Source Han Sans SC,Noto Sans SC,Microsoft YaHei,sans-serif}body{background:radial-gradient(circle at 10% -10%,rgba(133,205,192,.22),transparent 34%),radial-gradient(circle at 100% 20%,rgba(196,219,231,.26),transparent 30%),var(--bg)}.life-app{padding:15px 18px 18px;background-image:linear-gradient(rgba(16,57,62,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(16,57,62,.018) 1px,transparent 1px);background-size:30px 30px}.app-header{height:72px;flex-basis:72px;padding:0 15px;gap:26px;background:#ffffffd6;border:1px solid rgba(210,226,222,.92);border-radius:18px;box-shadow:0 10px 28px #163a3e0e;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.brand-lockup,.login-brand{gap:12px}.brand-mark{width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,#0b9a8d,#066a68);box-shadow:0 8px 16px #056f693d;font-size:20px}.brand-overline{color:#74918f;font-size:8px;letter-spacing:.18em}.brand-lockup h1,.login-brand h1{color:#0d3037;font-size:21px;font-weight:780;letter-spacing:.08em}.header-breadcrumb{color:#8ca0a1;font-size:10px}.header-breadcrumb strong{color:#28535a}.header-actions{gap:4px}.data-status{color:#6f8a8a;font-size:9px}.header-button{min-height:34px;padding:8px 11px;color:#426168;border-radius:9px;font-size:10px}.header-button:hover:not(:disabled){background:#f0f7f5;border-color:#cfe1dc}.workbench-shell{grid-template-columns:236px minmax(0,1fr) 316px;gap:14px}.workspace-rail{padding:17px 12px 12px;background:linear-gradient(160deg,#122e35,#0d252c 58%,#0b2026);border-color:#082c33e6;border-radius:17px;box-shadow:0 18px 40px #0c262c29}.rail-dataset{margin:2px 5px 22px}.rail-dataset-icon{color:#a7eee0;background:#6bd3c124;border-color:#92ebda1f}.rail-dataset strong{color:#f2fbf9;font-size:12px}.rail-dataset span{color:#84a6a3}.rail-heading{margin-top:10px;color:#759794;letter-spacing:.12em}.rail-item{min-height:39px;color:#b7cecb;border-radius:10px}.rail-item svg{color:#719391}.rail-item:hover{color:#e8f8f4;background:#77cdbe17}.rail-item.is-active{color:#084f51;background:#d9f1eb;box-shadow:0 7px 16px #01171b24}.rail-item.is-active svg{color:#087f79}.rail-item em{color:#75918f;background:#ffffff1f}.rail-item.is-active em{color:#196c69;background:#ffffffb8}.rail-bottom{padding-top:12px;border-top-color:#cef1e91f}.rail-teacher{color:#8fb0ac}.rail-action{min-height:34px;color:#abc4c0;border-radius:9px}.rail-action:hover{color:#f1fbf8;background:#77cdbe17}.rail-action.is-danger{color:#eea598}.workspace-toolbar{min-height:76px;padding:7px 6px 16px}.toolbar-kicker{color:#789092;font-size:9px;letter-spacing:.14em;text-transform:uppercase}.toolbar-title h2{color:#102f36;font-size:28px;font-weight:780;letter-spacing:-.02em}.selected-chip{max-width:205px;padding:6px 10px 6px 6px;color:#2b5a5d;background:#ffffffe0;border-color:#d0e2de;border-radius:10px;box-shadow:0 4px 12px #1743430d}.selected-chip:hover{border-color:#93c8be;box-shadow:0 6px 16px #17434314}.workspace-content{padding:0 3px 4px;scrollbar-color:#b9d1cc transparent}.panel{padding:18px;background:#ffffffeb;border-color:#d7e5e2f0;border-radius:16px;box-shadow:0 10px 26px #1f484b0b}.panel-header{margin-bottom:16px}.panel-header h3{color:#173a41;font-size:15px;font-weight:760}.quiet-label{color:#829899}.source-badge{color:#3c9182}.metric{min-height:77px;padding:12px 13px;background:linear-gradient(145deg,#fbfdfd,#f3f8f6);border-color:#e0ece9;border-radius:11px}.metric span{color:#7a9192;font-size:9px;letter-spacing:.02em}.metric strong{margin-top:9px;color:#153b42;font-size:26px;font-weight:760}.metric small{color:#829798}.metric-teal strong{color:#08766f}.metric-blue strong{color:#416f9e}.metric-amber strong{color:#ac7020}.metric-coral strong{color:#be5f4e}.learner-layout{grid-template-columns:276px minmax(0,1fr);gap:14px}.learner-directory{min-height:540px;padding:15px 11px}.learner-directory .panel-header{padding:0 6px}.search-box{height:36px;margin:0 4px 12px;padding-inline:10px;background:#f2f8f6;border-color:#dcebe8;border-radius:9px}.learner-list{padding-right:3px}.learner-row{min-height:53px;padding:8px;border-radius:10px}.learner-row:hover{background:#eef7f4}.learner-row.is-active{background:linear-gradient(90deg,#dcf3ee,#edf9f6);box-shadow:inset 3px 0 #0b8a80}.avatar{width:31px;height:31px;color:#08615f;background:#dcefeb;border-color:#0b7a7514;border-radius:9px}.avatar.large{width:52px;height:52px;border-radius:15px;background:linear-gradient(145deg,#d4f2eb,#e9f8f5);box-shadow:inset 0 0 0 1px #097d7514;font-size:21px}.activity-dot.is-on{box-shadow:0 0 0 4px #e1f4ef}.learner-profile{min-height:540px}.profile-head{padding-bottom:19px}.profile-identity{gap:5px}.profile-identity h3{color:#12363d;font-size:22px;font-weight:760}.profile-identity span{color:#46666a}.profile-state.is-active{color:#388c80}.profile-metrics{margin:17px 0;gap:9px}.profile-metrics .metric{min-height:69px}.profile-grid{gap:12px}.profile-block{padding:15px;background:linear-gradient(145deg,#fcfefe,#f7faf9);border-color:#e4eeeb;border-radius:12px}.block-header{margin-bottom:13px}.block-header h4{color:#1c4249;font-size:12px;font-weight:740}.bar-list{gap:11px}.bar-track,.course-bar,.stage-bar{height:7px;background:#e3efec}.bar-track i,.course-bar i,.stage-bar i{background:linear-gradient(90deg,#72c5b3,#0b887f)}.bar-blue i{background:linear-gradient(90deg,#91b7db,#5c87b4)}.signal-icon,.focus-icon{width:30px;height:30px;border-radius:9px}.timeline-row{padding:10px 7px;border-bottom-color:#e8efed;border-radius:8px}.timeline-row:hover{background:#f1f8f5}.timeline-mark{width:24px;height:24px;border-radius:8px}.insight-panel{padding:18px 16px;background:linear-gradient(180deg,#fffffff5,#f4faf8f5);border-color:#d7e6e2;border-radius:16px;box-shadow:0 12px 30px #1b494912}.insight-header{margin-bottom:18px}.insight-header h2{color:#143941;font-size:17px;font-weight:760}.insight-person{padding-bottom:17px}.insight-person strong{color:#173c43;font-size:15px}.insight-metrics{margin:16px 0}.insight-metrics .metric{min-height:65px}.insight-focus{margin-top:9px;padding:12px;border-radius:10px;box-shadow:inset 3px 0 #d36e5b}.insight-focus strong{color:#bd5e4e}.primary-button{min-height:36px;padding:9px 13px;border-radius:9px;background:linear-gradient(135deg,#0a8e83,#06736f);box-shadow:0 7px 16px #05786f2e}.primary-button:hover:not(:disabled){background:linear-gradient(135deg,#087f76,#055e5b);box-shadow:0 9px 20px #05786f3d}.insight-open{margin-top:15px}.login-shell{background:radial-gradient(circle at 12% 12%,rgba(132,205,193,.3),transparent 33%),radial-gradient(circle at 90% 85%,rgba(141,180,213,.2),transparent 35%),#edf4f2}.login-card{padding:38px;background:#ffffffe6;border-color:#d6e6e2;border-radius:20px;box-shadow:0 24px 70px #1e464824;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.login-card h2{margin-top:44px;color:#12353c;font-size:26px;font-weight:760}.key-input{min-height:45px;background:#f4faf8;border-color:#cbded9;border-radius:10px}@media(max-width:1260px){.life-app{padding-inline:12px}.workbench-shell{grid-template-columns:210px minmax(0,1fr) 286px;gap:10px}.learner-layout{grid-template-columns:232px minmax(0,1fr)}}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1260px){.life-app{padding-inline:10px}.workbench-shell{grid-template-columns:200px minmax(0,1fr) 270px;gap:8px}.panel{padding:14px}.learner-layout{grid-template-columns:215px minmax(0,1fr)}.stage-row{grid-template-columns:145px minmax(100px,1fr) 62px 95px;gap:8px}}@media(max-width:1080px){body{overflow:auto}.life-app{height:auto;min-height:100vh;overflow:visible}.app-header{position:sticky;z-index:20;top:0;height:60px;flex-basis:60px;background:#eef4f2f2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.brand-lockup{min-width:0}.brand-overline{display:none}.brand-lockup h1{font-size:19px}.header-breadcrumb,.data-status{display:none}.mobile-rail-toggle{display:inline-flex}.workbench-shell{display:block;margin-top:8px}.workspace-main,.workspace-content{overflow:visible}.workspace-rail{position:fixed;z-index:40;top:68px;bottom:10px;left:10px;width:min(280px,calc(100vw - 20px));opacity:0;pointer-events:none;transform:translate(-110%);transition:transform .2s ease,opacity .2s ease}.workspace-rail.is-open{opacity:1;pointer-events:auto;transform:translate(0)}.insight-panel{display:none}.learner-layout{grid-template-columns:230px minmax(0,1fr)}.profile-grid{grid-template-columns:1fr}.timeline-block{grid-column:auto}}@media(max-width:700px){.login-shell{padding:14px}.login-card{padding:24px 18px}.login-card h2{margin-top:34px;font-size:21px}.key-input{flex-wrap:wrap;padding:5px 5px 5px 10px}.key-input input{flex:1 1 150px}.key-input .primary-button{width:100%;margin-top:2px}.life-app{padding:0 7px 8px}.header-actions{gap:3px}.header-button{min-height:31px;padding-inline:8px}.header-button span{display:none}.workbench-shell{margin-top:6px}.workspace-toolbar{min-height:56px;padding:3px 2px 11px;align-items:flex-start;flex-direction:column;gap:8px}.toolbar-title h2{font-size:20px}.selected-chip{align-self:flex-end;margin-top:-34px}.view-grid,.learner-layout{grid-template-columns:1fr}.learner-directory{min-height:265px;max-height:310px}.learner-profile{min-height:0}.panel{padding:12px;border-radius:10px}.panel-header h3{font-size:15px}.metric-row,.experiment-summary,.profile-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.metric{min-height:65px}.metric strong{margin-top:6px;font-size:22px}.profile-metrics .metric strong{font-size:20px}.profile-head{align-items:flex-start}.profile-state{margin-left:auto}.profile-grid{gap:8px}.timeline-row{grid-template-columns:24px minmax(0,1fr)}.timeline-row time{grid-column:2;text-align:left}.stage-row{grid-template-columns:minmax(95px,.8fr) minmax(75px,1fr) 57px;gap:7px}.stage-count{display:flex;grid-column:1 / -1;justify-content:space-between}.question-row{grid-template-columns:29px minmax(0,1fr)}.question-meta{display:flex;grid-column:2;align-items:center;justify-items:start;gap:8px}.attempt-row{grid-template-columns:23px minmax(0,1fr)}.attempt-result{grid-column:2}.concept-row{grid-template-columns:minmax(120px,1fr) minmax(100px,1fr) 45px;gap:8px}.course-row{grid-template-columns:minmax(115px,.8fr) minmax(65px,1fr) 43px;gap:6px}.course-title small{font-size:8px}.mini-concept-row{grid-template-columns:minmax(0,1fr) 75px 27px}.error-row{grid-template-columns:25px minmax(0,1fr) 34px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
