*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:#f5f6fa;color:#333}a{text-decoration:none;color:inherit}.page-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;font-size:1.1rem;color:#888}.layout{display:flex;min-height:100vh}.sidebar{width:240px;background:#1a1a2e;color:#ccc;display:flex;flex-direction:column;flex-shrink:0}.sidebar-header{padding:1.5rem 1.2rem;border-bottom:1px solid #2a2a4e}.sidebar-title{font-size:1.15rem;color:#fff;margin-bottom:.2rem}.sidebar-subtitle{font-size:.8rem;color:#888}.sidebar-nav{flex:1;overflow-y:auto;padding:.8rem 0}.nav-group{margin-bottom:.5rem}.nav-group-title{font-size:.75rem;color:#666;padding:.4rem 1.2rem;text-transform:uppercase;letter-spacing:.05em}.nav-item{display:flex;align-items:center;gap:.6rem;padding:.5rem 1.2rem;color:#aaa;transition:all .15s}.nav-item:hover{background:#2a2a4e;color:#fff}.nav-item--active{background:#1677ff;color:#fff}.nav-icon{font-size:1.1rem;width:1.5rem;text-align:center}.nav-label{font-size:.9rem}.main-area{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;padding:0 2rem;height:56px;background:#fff;border-bottom:1px solid #e8e8e8;box-shadow:0 1px 4px #0000000a}.topbar-welcome{font-size:.95rem;color:#555}.btn-logout{background:none;border:1px solid #ddd;border-radius:4px;padding:.3rem .8rem;cursor:pointer;color:#666;font-size:.85rem;transition:all .15s}.btn-logout:hover{border-color:#ff4d4f;color:#ff4d4f}.content{flex:1;padding:1.5rem 2rem;overflow-y:auto}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2)}.login-card{background:#fff;border-radius:12px;padding:2.5rem;width:400px;max-width:90vw;box-shadow:0 20px 60px #00000026}.login-title{font-size:1.5rem;text-align:center;margin-bottom:.3rem;color:#1a1a2e}.login-subtitle{font-size:.85rem;text-align:center;color:#888;margin-bottom:2rem}.login-form{display:flex;flex-direction:column;gap:1rem}.form-field{display:flex;flex-direction:column;gap:.3rem}.form-field label{font-size:.85rem;color:#555}.form-field input{padding:.6rem .8rem;border:1px solid #ddd;border-radius:6px;font-size:.95rem;transition:border-color .15s}.form-field input:focus{outline:none;border-color:#1677ff}.form-error{color:#ff4d4f;font-size:.85rem;text-align:center}.btn-login{background:#1677ff;color:#fff;border:none;border-radius:6px;padding:.7rem;font-size:1rem;cursor:pointer;transition:background .15s}.btn-login:hover{background:#4096ff}.btn-login:disabled{background:#91caff;cursor:not-allowed}.login-hint{font-size:.8rem;color:#bbb;text-align:center;margin-top:1rem}.dashboard{display:flex;flex-direction:column;gap:1.2rem}.card{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 1px 3px #0000000f}.welcome-card h2{font-size:1.3rem;margin-bottom:.3rem}.welcome-card p{color:#888}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-top:1rem}.stat-item{display:flex;flex-direction:column;align-items:center;padding:1rem;background:#f9f9fc;border-radius:6px}.stat-value{font-size:1.5rem;font-weight:600;color:#1677ff}.stat-label{font-size:.8rem;color:#888;margin-top:.2rem}.action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-top:1rem}.action-card{display:flex;flex-direction:column;align-items:center;padding:1.5rem;background:#f9f9fc;border-radius:8px;transition:all .15s}.action-card:hover{background:#e6f4ff;transform:translateY(-2px)}.action-icon{font-size:2rem;margin-bottom:.5rem}.action-label{font-size:1rem;font-weight:500;margin-bottom:.2rem}.action-desc{font-size:.8rem;color:#999;text-align:center}.round-list{display:flex;flex-direction:column;gap:.6rem;margin-top:1rem}.round-item{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1rem;background:#f9f9fc;border-radius:6px}.round-info{display:flex;flex-direction:column}.round-name{font-weight:500}.round-status{font-size:.8rem;color:#888}.btn-enter{background:#1677ff;color:#fff;padding:.3rem 1rem;border-radius:4px;font-size:.85rem}.btn-enter:hover{background:#4096ff}.empty-hint{color:#999;padding:1rem 0}.placeholder-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center}.placeholder-page h2{font-size:1.5rem;margin-bottom:.5rem}.placeholder-desc{color:#888;margin-bottom:.5rem}.placeholder-fr{font-size:.85rem;color:#aaa;background:#f0f0f0;padding:.2rem .6rem;border-radius:4px}.placeholder-badge{margin-top:1rem;background:#fff7e6;color:#fa8c16;border:1px solid #ffd591;padding:.3rem .8rem;border-radius:4px;font-size:.85rem}.dialog-page{display:flex;height:calc(100vh - 56px - 3rem);gap:1rem}.npc-panel{width:220px;background:#fff;border-radius:8px;padding:1rem;display:flex;flex-direction:column;flex-shrink:0;box-shadow:0 1px 3px #0000000f}.panel-title{font-size:.9rem;color:#555;margin-bottom:.5rem}.round-badge{font-size:.75rem;color:#1677ff;background:#e6f4ff;padding:.2rem .5rem;border-radius:4px;margin-bottom:.5rem;display:inline-block}.npc-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:.4rem}.npc-card{display:flex;align-items:center;gap:.6rem;padding:.6rem;border:1px solid #eee;border-radius:6px;cursor:pointer;background:#fff;transition:all .15s;text-align:left;width:100%}.npc-card:hover{border-color:#1677ff}.npc-card--active{border-color:#1677ff;background:#e6f4ff}.npc-avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#f0f0f0;flex-shrink:0}.npc-avatar img{width:100%;height:100%;object-fit:cover}.npc-avatar-placeholder{font-size:1rem;color:#888}.npc-info{display:flex;flex-direction:column;min-width:0}.npc-name{font-size:.85rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.npc-agent{font-size:.75rem;color:#aaa}.dialog-main{flex:1;display:flex;flex-direction:column;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000000f;min-width:0}.digital-human-area{padding:.8rem 1rem;border-bottom:1px solid #f0f0f0}.dh-placeholder{display:flex;align-items:center;gap:.8rem}.dh-avatar{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:600}.dh-info{display:flex;flex-direction:column}.dh-name{font-weight:500}.dh-status{font-size:.8rem;color:#52c41a}.message-list{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.8rem}.message-empty{text-align:center;color:#999;padding:2rem}.message{display:flex;flex-direction:column;max-width:70%}.message--student{align-self:flex-end}.message--npc,.message--agent{align-self:flex-start}.message--system{align-self:center;max-width:90%}.message-bubble{padding:.6rem .9rem;border-radius:8px;font-size:.9rem;line-height:1.5;word-break:break-word}.message--student .message-bubble{background:#1677ff;color:#fff;border-bottom-right-radius:2px}.message--npc .message-bubble,.message--agent .message-bubble{background:#f0f0f0;color:#333;border-bottom-left-radius:2px}.message--system .message-bubble{background:#fff7e6;color:#fa8c16;font-size:.85rem}.message-cursor{animation:blink .8s infinite}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.message-time{font-size:.7rem;color:#bbb;margin-top:.2rem}.message--student .message-time{text-align:right}.input-area{border-top:1px solid #f0f0f0;padding:.8rem 1rem}.input-mode-toggle{display:flex;gap:.4rem;margin-bottom:.6rem}.mode-btn{padding:.3rem .8rem;border:1px solid #ddd;border-radius:4px;background:#fff;cursor:pointer;font-size:.85rem;color:#666}.mode-btn--active{border-color:#1677ff;color:#1677ff;background:#e6f4ff}.input-row{display:flex;gap:.6rem;align-items:flex-end}.input-text{flex:1;padding:.6rem .8rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;resize:none;min-height:40px;max-height:120px;font-family:inherit}.input-text:focus{outline:none;border-color:#1677ff}.btn-send{background:#1677ff;color:#fff;border:none;border-radius:6px;padding:.6rem 1.2rem;cursor:pointer;font-size:.9rem}.btn-send:hover{background:#4096ff}.btn-send:disabled{background:#91caff;cursor:not-allowed}.btn-stop{background:#ff4d4f;color:#fff;border:none;border-radius:6px;padding:.6rem 1.2rem;cursor:pointer;font-size:.9rem}.btn-stop:hover{background:#ff7875}.voice-input{display:flex;align-items:center;gap:.8rem}.btn-voice{padding:.6rem 1.5rem;border:2px solid #1677ff;border-radius:6px;background:#fff;color:#1677ff;cursor:pointer;font-size:.9rem}.btn-voice:disabled{opacity:.5;cursor:not-allowed}.voice-hint{font-size:.8rem;color:#999}.skill-tree-page{display:flex;flex-direction:column;gap:1.2rem}.page-title{font-size:1.3rem;margin-bottom:.5rem}.legend{display:flex;gap:1rem;margin:.8rem 0}.legend-item{display:flex;align-items:center;gap:.3rem;font-size:.85rem;color:#666}.legend-dot{width:12px;height:12px;border-radius:50%;display:inline-block}.skill-tree{display:flex;flex-direction:column;gap:.5rem}.skill-node-wrapper{display:flex;flex-direction:column}.skill-node{display:flex;align-items:center;gap:.8rem;padding:.6rem 1rem;border-left:4px solid #ddd;background:#f9f9fc;border-radius:0 4px 4px 0}.skill-name{flex:1;font-weight:500}.skill-mastery{font-size:.85rem;color:#888}.skill-status-badge{font-size:.75rem;color:#fff;padding:.15rem .5rem;border-radius:10px}.skill-children{margin-left:1.5rem;display:flex;flex-direction:column;gap:.4rem;padding-top:.4rem}.level-map{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1rem}.level-chain{display:flex;align-items:center;gap:.5rem}.level-node{display:flex;flex-direction:column;align-items:center;padding:.8rem 1.2rem;border-radius:8px;min-width:120px}.level-node--unlocked{background:#e6f4ff;border:2px solid #1677ff}.level-node--locked{background:#f5f5f5;border:2px solid #d9d9d9;opacity:.6}.level-order{font-size:.75rem;color:#999}.level-name{font-weight:500;margin:.2rem 0}.level-threshold{font-size:.75rem;color:#888}.level-arrow{font-size:1.2rem;color:#d9d9d9}.level-arrow--active{color:#1677ff}.practice-page{display:flex;flex-direction:column;gap:1.2rem}.live-state-card .live-state-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.8rem;margin-top:.8rem}.live-item{display:flex;flex-direction:column;align-items:center;padding:.6rem;background:#f9f9fc;border-radius:6px}.live-label{font-size:.75rem;color:#888}.live-value{font-size:1.1rem;font-weight:600;color:#1677ff}.question-card{min-height:300px}.question-meta{display:flex;gap:.8rem;margin-bottom:.8rem}.question-type{font-size:.8rem;color:#1677ff;background:#e6f4ff;padding:.2rem .6rem;border-radius:4px}.question-difficulty{font-size:.8rem;color:#888}.question-stem{font-size:1rem;line-height:1.6;margin-bottom:1.2rem}.answer-area{margin-bottom:1rem}.options-list{display:flex;flex-direction:column;gap:.5rem}.option-item{display:flex;align-items:center;gap:.5rem;padding:.6rem .8rem;border:1px solid #eee;border-radius:6px;cursor:pointer;transition:all .15s}.option-item:hover{border-color:#1677ff}.option-item--selected{border-color:#1677ff;background:#e6f4ff}.option-item--correct{border-color:#52c41a;background:#f6ffed}.option-label{font-weight:600;color:#555}.option-text{flex:1}.answer-input{width:100%;padding:.6rem .8rem;border:1px solid #ddd;border-radius:6px;font-size:.95rem}.answer-input:focus{outline:none;border-color:#1677ff}.answer-textarea{width:100%;padding:.6rem .8rem;border:1px solid #ddd;border-radius:6px;font-size:.95rem;resize:vertical;font-family:inherit}.answer-textarea:focus{outline:none;border-color:#1677ff}.practice-feedback{padding:.6rem .8rem;border-radius:6px;margin-bottom:.8rem;font-size:.9rem}.correct-answer{padding:.6rem .8rem;background:#f6ffed;border:1px solid #b7eb8f;border-radius:6px;color:#389e0d;margin-bottom:.8rem}.practice-actions{display:flex;gap:.6rem}.btn-submit{background:#1677ff;color:#fff;border:none;border-radius:6px;padding:.6rem 1.5rem;cursor:pointer;font-size:.9rem}.btn-submit:hover{background:#4096ff}.btn-submit:disabled{background:#91caff;cursor:not-allowed}.btn-next{background:#52c41a;color:#fff;border:none;border-radius:6px;padding:.6rem 1.5rem;cursor:pointer;font-size:.9rem}.btn-next:hover{background:#73d13d}.practice-empty{text-align:center;padding:2rem}.btn-start{background:#1677ff;color:#fff;border:none;border-radius:6px;padding:.6rem 1.5rem;cursor:pointer;font-size:.9rem;margin-top:1rem}.history-card .history-list{display:flex;flex-direction:column;gap:.4rem;margin-top:.8rem}.history-item{display:flex;align-items:center;gap:.6rem;padding:.4rem .6rem;background:#f9f9fc;border-radius:4px}.history-result{font-weight:600;width:1.5rem;text-align:center}.history-result--correct{color:#52c41a}.history-result--wrong{color:#ff4d4f}.history-answer{flex:1;font-size:.85rem;color:#555;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-time{font-size:.75rem;color:#bbb}.btn-reset{margin-top:.8rem;background:#fff;border:1px solid #ddd;border-radius:4px;padding:.3rem .8rem;cursor:pointer;font-size:.85rem;color:#666}.growth-report-page{display:flex;flex-direction:column;gap:1.2rem}.card-title{font-size:1.05rem;margin-bottom:.8rem}.radar-card{display:flex;flex-direction:column;align-items:center}.radar-wrapper{padding:1rem}.curve-card{display:flex;flex-direction:column;align-items:center}.curve-empty{color:#999;padding:2rem;text-align:center}.badge-card .badge-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem}.badge-item{display:flex;flex-direction:column;align-items:center;padding:1rem;background:#f5f5f5;border-radius:8px;opacity:.5;text-align:center}.badge-item--earned{background:#fffbe6;border:1px solid #ffe58f;opacity:1}.badge-icon{font-size:2rem;margin-bottom:.4rem}.badge-name{font-weight:500;font-size:.9rem;margin-bottom:.2rem}.badge-desc{font-size:.75rem;color:#888}.badge-date{font-size:.7rem;color:#fa8c16;margin-top:.3rem}.learning-path-page{display:flex;flex-direction:column;gap:1.2rem}.path-list{display:flex;flex-direction:column;gap:.8rem}.path-node-card{border-left:4px solid #1677ff;background:#f9f9fc;border-radius:0 6px 6px 0;padding:.8rem 1rem}.path-node-header{display:flex;align-items:center;gap:.6rem;margin-bottom:.5rem}.path-node-order{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;color:#fff;font-size:.8rem;font-weight:600}.path-node-type{font-size:.8rem;font-weight:500}.path-node-status{font-size:.75rem;color:#888;margin-left:auto;padding:.15rem .5rem;border-radius:10px;background:#f0f0f0}.path-node-status--in_progress{background:#e6f4ff;color:#1677ff}.path-node-status--done{background:#f6ffed;color:#52c41a}.path-node-title{font-weight:500;font-size:.95rem;margin-bottom:.3rem}.path-node-reason{font-size:.85rem;color:#666;margin-bottom:.5rem}.path-node-meta{display:flex;gap:1rem;font-size:.8rem;color:#999}.recommendation-list{display:flex;flex-direction:column;gap:.6rem}.recommendation-item{display:flex;align-items:center;justify-content:space-between;padding:.6rem .8rem;background:#f9f9fc;border-radius:6px}.recommendation-info{display:flex;flex-direction:column}.recommendation-label{font-size:.9rem;font-weight:500}.recommendation-key{font-size:.75rem;color:#aaa}.recommendation-score{display:flex;align-items:center;gap:.5rem}.score-bar{width:80px;height:6px;background:#f0f0f0;border-radius:3px;overflow:hidden}.score-fill{height:100%;background:#1677ff;border-radius:3px}.score-text{font-size:.8rem;color:#1677ff;font-weight:500}.business-page{display:flex;flex-direction:column;gap:1.2rem}.biz-form{display:flex;flex-direction:column;gap:.8rem}.form-row{display:flex;gap:1rem}.form-row .form-field{flex:1}.biz-form .form-field input,.biz-form .form-field select{width:100%;padding:.5rem .7rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem}.biz-form .form-field input:focus,.biz-form .form-field select:focus{outline:none;border-color:#1677ff}.result-card .result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.6rem}.result-item{display:flex;justify-content:space-between;padding:.5rem .8rem;background:#f9f9fc;border-radius:6px}.result-item--highlight{background:#e6f4ff}.result-label{font-size:.85rem;color:#888}.result-value{font-size:.9rem;font-weight:500}.status-text--confirmed,.status-text--issued,.status-text--passed{color:#52c41a}.status-text--rejected,.status-text--failed{color:#ff4d4f}.status-text--pending,.status-text--draft,.status-text--submitted{color:#fa8c16}.status-text--checked,.status-text--locked{color:#1677ff}.packing-table,.doc-table,.settlement-table{width:100%;border-collapse:collapse;margin-bottom:.8rem}.packing-table th,.doc-table th,.settlement-table th{text-align:left;padding:.4rem .6rem;font-size:.85rem;color:#666;border-bottom:2px solid #eee}.packing-table td,.doc-table td,.settlement-table td{padding:.3rem .6rem;border-bottom:1px solid #f0f0f0}.packing-table input,.settlement-table input,.settlement-table select{width:100%;padding:.3rem .5rem;border:1px solid #ddd;border-radius:4px;font-size:.85rem}.packing-actions,.settlement-actions{display:flex;gap:.6rem;flex-wrap:wrap}.btn-add-item{background:#fff;border:1px dashed #1677ff;border-radius:6px;padding:.4rem 1rem;cursor:pointer;font-size:.85rem;color:#1677ff}.btn-remove{background:#fff;border:1px solid #ff4d4f;border-radius:4px;padding:.2rem .5rem;cursor:pointer;color:#ff4d4f;font-size:.8rem}.packing-visual{margin-top:1rem}.packing-container-box{position:relative;background:#f5f5f5;border:2px solid #d9d9d9;border-radius:6px;overflow:hidden;margin:0 auto}.packing-fill{height:100%;background:linear-gradient(90deg,#b7eb8f,#52c41a);transition:width .3s}.packing-fill-label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.2rem;font-weight:600;color:#333}.packing-warnings{margin-top:.8rem}.warning-item{padding:.4rem .8rem;background:#fff2f0;border:1px solid #ffccc7;border-radius:6px;color:#ff4d4f;font-size:.85rem;margin-bottom:.4rem}.doc-type-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem}.doc-type-btn{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:1.2rem;background:#f9f9fc;border:1px solid #eee;border-radius:8px;cursor:pointer;transition:all .15s}.doc-type-btn:hover{border-color:#1677ff;background:#e6f4ff}.doc-type-icon{font-size:2rem}.doc-type-label{font-size:.85rem;font-weight:500}.tracking-timeline{display:flex;flex-direction:column;gap:0}.timeline-item{display:flex;gap:1rem;padding-bottom:1.2rem;position:relative}.timeline-item:not(:last-child):before{content:"";position:absolute;left:7px;top:20px;bottom:0;width:2px;background:#e8e8e8}.timeline-dot{width:16px;height:16px;border-radius:50%;background:#d9d9d9;border:2px solid #fff;flex-shrink:0;margin-top:2px;z-index:1}.timeline-dot--active{background:#52c41a;box-shadow:0 0 0 3px #52c41a33}.timeline-content{flex:1}.timeline-header{display:flex;align-items:center;gap:.6rem;margin-bottom:.2rem}.timeline-event{font-weight:500;font-size:.9rem}.timeline-location{font-size:.8rem;color:#1677ff}.timeline-time{font-size:.75rem;color:#bbb;margin-left:auto}.timeline-desc{font-size:.85rem;color:#666}.settlement-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1rem}.summary-item{display:flex;flex-direction:column;align-items:center;padding:1rem;border-radius:8px}.summary-item--revenue{background:#f6ffed}.summary-item--cost{background:#fff2f0}.summary-item--profit{background:#e6f4ff}.summary-item--loss{background:#fff2f0}.summary-label{font-size:.85rem;color:#888;margin-bottom:.3rem}.summary-value{font-size:1.3rem;font-weight:600}.balance-check{padding:.6rem .8rem;background:#f9f9fc;border-radius:6px;text-align:center;font-size:.9rem;color:#888}.balance-check--ok{background:#f6ffed;color:#389e0d}
