*{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}.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}.card-title{font-size:1.05rem;margin-bottom:.8rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap: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}.action-card{display:flex;flex-direction:column;align-items:center;padding:1.5rem;background:#f9f9fc;border-radius:8px;transition:all .15s;cursor:pointer}.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}.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;border:none;cursor:pointer}.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}.btn-primary{background:#1677ff;color:#fff;border:none;border-radius:6px;padding:.5rem 1.2rem;cursor:pointer;font-size:.9rem}.btn-primary:hover{background:#4096ff}.btn-primary:disabled{background:#91caff;cursor:not-allowed}.btn-link{background:none;border:none;color:#1677ff;cursor:pointer;font-size:.85rem;padding:.2rem .4rem}.btn-link:hover{color:#4096ff;text-decoration:underline}.page-title{font-size:1.3rem;margin-bottom:.5rem}.teacher-page{display:flex;flex-direction:column;gap:1.2rem}.card-header-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}.card-header-row .card-title{margin-bottom:0}.inline-form{display:flex;gap:.6rem;align-items:center;margin-bottom:1rem;flex-wrap:wrap}.inline-input{padding:.5rem .7rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;min-width:120px}.inline-input:focus{outline:none;border-color:#1677ff}.import-textarea{width:100%;padding:.6rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;resize:vertical;margin-bottom:.6rem;font-family:inherit}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th{text-align:left;padding:.6rem .8rem;background:#fafafa;border-bottom:2px solid #e8e8e8;color:#555;font-weight:600}.data-table td{padding:.6rem .8rem;border-bottom:1px solid #f0f0f0}.data-table tr:hover{background:#f9f9fc}.status-badge{display:inline-block;padding:.15rem .6rem;border-radius:10px;font-size:.78rem;font-weight:500}.status-badge--active{background:#e6f4ff;color:#1677ff}.status-badge--archived{background:#f5f5f5;color:#999}.status-badge--draft{background:#fff7e6;color:#fa8c16}.status-badge--closed{background:#f6ffed;color:#52c41a}.scenario-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.scenario-card{padding:1rem;background:#f9f9fc;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:all .15s}.scenario-card:hover{background:#f0f5ff}.scenario-card--selected{border-color:#1677ff;background:#e6f4ff}.scenario-name{font-weight:600;margin-bottom:.3rem}.scenario-desc{font-size:.82rem;color:#888;margin-bottom:.5rem}.scenario-meta{display:flex;justify-content:space-between;font-size:.78rem;color:#aaa}.event-form{display:flex;flex-direction:column;gap:.8rem}.event-type-row{display:flex;gap:.6rem;flex-wrap:wrap}.event-type-btn{display:flex;align-items:center;gap:.3rem;padding:.4rem .8rem;background:#f5f5f5;border:1px solid #e8e8e8;border-radius:6px;cursor:pointer;font-size:.85rem;transition:all .15s}.event-type-btn--active{background:#1677ff;color:#fff;border-color:#1677ff}.round-select{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}.round-select>label{font-size:.85rem;color:#555}.checkbox-label{display:flex;align-items:center;gap:.3rem;font-size:.85rem;color:#666;cursor:pointer}.event-list{display:flex;flex-direction:column;gap:.5rem}.event-item{display:flex;align-items:center;gap:.8rem;padding:.6rem .8rem;background:#f9f9fc;border-radius:6px;font-size:.85rem}.event-time{color:#aaa;font-family:monospace}.event-type-tag{padding:.1rem .5rem;border-radius:4px;font-size:.78rem}.event-type-tag--rate_hike{background:#fff1f0;color:#ff4d4f}.event-type-tag--port_congestion{background:#fff7e6;color:#fa8c16}.event-type-tag--customs_check{background:#e6f4ff;color:#1677ff}.event-type-tag--order_cancel{background:#f9f0ff;color:#722ed1}.event-desc{flex:1;color:#555}.event-affected{color:#aaa}.monitor-row{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}@media (max-width: 900px){.monitor-row{grid-template-columns:1fr}}.flow-dist{display:flex;align-items:flex-end;justify-content:space-around;height:140px;padding-top:1rem}.flow-bar-col{display:flex;flex-direction:column;align-items:center;gap:.2rem;flex:1}.flow-bar{width:40px;background:#1677ff;border-radius:4px 4px 0 0;min-height:4px;transition:height .3s}.flow-bar-label{font-size:.72rem;color:#999}.flow-bar-count{font-size:.85rem;font-weight:600;color:#333}.heat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.6rem}.heat-cell{display:flex;flex-direction:column;align-items:center;padding:.8rem;border-radius:6px;color:#fff}.heat-label{font-size:.9rem;font-weight:600}.heat-value{font-size:1.1rem;font-weight:700;margin:.1rem 0}.heat-count{font-size:.75rem;opacity:.85}.progress-bar{width:100px;height:6px;background:#f0f0f0;border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:#1677ff;border-radius:3px;transition:width .3s}.row-warning{background:#fffbe6!important}.intervention-list{display:flex;flex-direction:column;gap:.6rem}.intervention-item{display:flex;align-items:center;gap:.8rem;padding:.8rem 1rem;border-radius:6px;font-size:.88rem}.intervention-item--pending{background:#fffbe6;border:1px solid #ffe58f}.intervention-item--handled{background:#f6ffed;border:1px solid #d9f7be}.intervention-left{display:flex;align-items:center;gap:.5rem;min-width:120px}.intervention-reason{padding:.1rem .5rem;border-radius:4px;font-size:.78rem;font-weight:500}.intervention-student{font-weight:600}.intervention-message{flex:1;color:#555}.intervention-time{color:#aaa;font-family:monospace;font-size:.8rem}.growth-curve-svg{display:block;margin:0 auto}.weak-skill-list{display:flex;flex-direction:column;gap:.6rem}.weak-skill-item{display:flex;align-items:center;gap:.6rem}.weak-skill-label{width:60px;font-size:.85rem}.weak-skill-item .progress-bar{flex:1}.weak-skill-value{width:40px;text-align:right;font-size:.85rem;color:#666}.replay-timeline{display:flex;flex-direction:column;gap:0;position:relative}.replay-event{display:flex;align-items:flex-start;gap:.8rem;padding:.6rem 0;border-bottom:1px solid #f5f5f5}.replay-time{color:#aaa;font-family:monospace;font-size:.8rem;min-width:70px}.replay-dot{width:10px;height:10px;border-radius:50%;margin-top:4px;flex-shrink:0}.replay-content{display:flex;flex-direction:column;gap:.2rem;flex:1}.replay-type{font-size:.78rem;font-weight:600}.replay-text{font-size:.88rem;color:#333}.replay-skill{font-size:.75rem;color:#aaa}.chart-svg{display:block;margin:0 auto}.donut-chart{display:flex;align-items:center;justify-content:center}.progress-row{display:flex;align-items:center;gap:.5rem}.progress-label{font-size:.8rem;color:#666;min-width:50px;text-align:right}.progress-value{font-size:.8rem;color:#666;min-width:36px;text-align:right}.progress-row .progress-bar{flex:1}
