* { box-sizing: border-box; margin: 0; padding: 0; }
:root{
  --navy:#1f3a5f; --navy-d:#16293f; --amber:#e6a23c; --amber-d:#c8841f;
  --bg:#f4f6f9; --card:#ffffff; --line:#e3e8ef; --text:#23303f; --muted:#6b7888;
  --ok:#2e9e6b; --bad:#d8503e; --soft:#eef3f9;
}
body{ font-family:-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif; background:var(--bg); color:var(--text); font-size:14px; line-height:1.7; }
.topbar{ display:flex; align-items:center; justify-content:space-between; background:linear-gradient(135deg,var(--navy),var(--navy-d)); color:#fff; padding:12px 22px; }
.brand{ display:flex; align-items:center; gap:12px; }
.logo{ width:40px; height:40px; border-radius:9px; background:var(--amber); color:var(--navy-d); font-weight:800; font-size:22px; display:flex; align-items:center; justify-content:center; box-shadow:0 2px 8px rgba(0,0,0,.25); }
.brand-title{ font-size:18px; font-weight:700; }
.brand-sub{ font-size:12px; opacity:.82; }
.demo-flag{ background:var(--amber); color:var(--navy-d); font-weight:700; padding:4px 12px; border-radius:20px; font-size:12px; }
.demo-banner{ background:#fff7e8; border-bottom:1px solid #f0d9a8; color:#8a5a12; padding:9px 22px; font-size:13px; }
.demo-banner b{ color:var(--bad); }

.layout{ display:flex; min-height:calc(100vh - 108px); }
.sidebar{ width:230px; background:var(--card); border-right:1px solid var(--line); padding:14px 10px; flex-shrink:0; }
.nav-group-title{ font-size:11px; color:var(--muted); letter-spacing:1px; margin:14px 10px 6px; text-transform:uppercase; }
.nav-item{ display:block; padding:9px 12px; border-radius:8px; color:var(--text); text-decoration:none; cursor:pointer; margin-bottom:2px; font-size:14px; }
.nav-item:hover{ background:var(--soft); }
.nav-item.active{ background:var(--navy); color:#fff; }
.nav-module{ display:flex; align-items:center; gap:8px; }
.nav-code{ background:var(--soft); color:var(--navy); font-weight:700; border-radius:6px; padding:1px 7px; font-size:12px; min-width:30px; text-align:center; }
.nav-item.active .nav-code{ background:rgba(255,255,255,.2); color:#fff; }

.content{ flex:1; padding:24px 30px; overflow-y:auto; }
.card{ background:var(--card); border:1px solid var(--line); border-radius:12px; padding:22px 26px; margin-bottom:18px; box-shadow:0 1px 3px rgba(30,50,80,.04); }
h1{ font-size:22px; margin-bottom:6px; color:var(--navy); }
h2{ font-size:18px; margin:18px 0 8px; color:var(--navy); }
h3{ font-size:15px; margin:14px 0 6px; color:var(--navy-d); }
p{ margin:6px 0; }
ul,ol{ margin:6px 0 6px 22px; }
blockquote{ border-left:3px solid var(--amber); background:var(--soft); padding:8px 14px; margin:10px 0; color:var(--muted); border-radius:0 8px 8px 0; }
table{ border-collapse:collapse; width:100%; margin:10px 0; font-size:13px; }
th,td{ border:1px solid var(--line); padding:7px 10px; text-align:left; }
th{ background:var(--soft); color:var(--navy); }
code{ background:#eef1f5; padding:1px 5px; border-radius:4px; font-size:12px; }
strong{ color:var(--navy-d); }

.btn{ display:inline-block; background:var(--navy); color:#fff; border:none; padding:9px 18px; border-radius:8px; cursor:pointer; font-size:14px; margin:6px 8px 0 0; }
.btn:hover{ background:var(--navy-d); }
.btn.amber{ background:var(--amber); color:var(--navy-d); }
.btn.amber:hover{ background:var(--amber-d); }
.btn.ghost{ background:#fff; color:var(--navy); border:1px solid var(--navy); }
.btn:disabled{ opacity:.5; cursor:not-allowed; }

.row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.tag{ display:inline-block; background:var(--soft); color:var(--muted); border-radius:20px; padding:2px 10px; font-size:12px; margin-right:6px; }
.muted{ color:var(--muted); font-size:13px; }

/* role play */
.role-tabs{ display:flex; gap:8px; margin-bottom:14px; flex-wrap:wrap; }
.role-tab{ padding:8px 14px; border:1px solid var(--line); border-radius:20px; cursor:pointer; font-size:13px; background:#fff; }
.role-tab.active{ background:var(--navy); color:#fff; border-color:var(--navy); }
.role-tab .rt-tag{ font-size:11px; opacity:.8; }
.chat{ border:1px solid var(--line); border-radius:10px; background:#fafbfc; height:340px; overflow-y:auto; padding:14px; margin-bottom:12px; }
.msg{ margin-bottom:12px; max-width:82%; }
.msg .who{ font-size:11px; color:var(--muted); margin-bottom:3px; }
.msg .bubble{ padding:9px 13px; border-radius:10px; font-size:14px; }
.msg.customer{ margin-right:auto; }
.msg.customer .bubble{ background:#eaf1fb; border:1px solid #d4e2f5; }
.msg.trainee{ margin-left:auto; text-align:right; }
.msg.trainee .bubble{ background:var(--navy); color:#fff; display:inline-block; text-align:left; }
.msg.coach{ margin:0 auto; max-width:92%; }
.msg.coach .bubble{ background:#fff7e8; border:1px dashed #e6c479; color:#8a5a12; font-size:13px; }
.msg.system{ margin:0 auto; max-width:92%; text-align:center; }
.msg.system .bubble{ background:transparent; color:var(--muted); font-size:12px; }
.chat-input{ display:flex; gap:8px; }
.chat-input input{ flex:1; min-width:0; padding:10px 12px; border:1px solid var(--line); border-radius:8px; font-size:14px; }
.warn{ color:var(--bad); font-weight:700; }

/* 语音输入 + 练环节输入栏 */
.chat-bar{ margin-top:4px; }
.chat-tools{ display:flex; gap:8px; align-items:center; margin-top:8px; flex-wrap:wrap; }
.btn.icon{ padding:9px 14px; min-width:46px; font-size:16px; line-height:1; }
.mic-note{ font-size:12px; color:var(--muted); white-space:nowrap; align-self:center; }
.btn.icon.recording{ background:var(--bad); border-color:var(--bad); animation:micPulse 1.1s ease-in-out infinite; }
@keyframes micPulse{ 0%{opacity:1} 50%{opacity:.45} 100%{opacity:1} }

/* exam */
.q{ border:1px solid var(--line); border-radius:10px; padding:14px 16px; margin-bottom:14px; }
.q .qt{ font-weight:600; margin-bottom:10px; }
.q .qt .qtype{ font-size:11px; background:var(--soft); color:var(--navy); padding:2px 8px; border-radius:5px; margin-right:8px; }
.opt{ display:block; padding:8px 12px; border:1px solid var(--line); border-radius:8px; margin:6px 0; cursor:pointer; }
.opt:hover{ background:var(--soft); }
.opt.sel{ border-color:var(--navy); background:#eaf1fb; }
.opt.correct{ border-color:var(--ok); background:#e7f6ee; }
.opt.wrong{ border-color:var(--bad); background:#fbeae7; }
.score-box{ font-size:20px; font-weight:800; padding:14px; border-radius:10px; text-align:center; }
.score-box.pass{ background:#e7f6ee; color:var(--ok); }
.score-box.fail{ background:#fbeae7; color:var(--bad); }
.ref{ background:#fff7e8; border:1px dashed #e6c479; padding:8px 12px; border-radius:8px; margin-top:8px; font-size:13px; color:#8a5a12; }

/* dashboard */
.radar-wrap{ display:flex; gap:20px; flex-wrap:wrap; }
.radar-card{ border:1px solid var(--line); border-radius:10px; padding:12px; text-align:center; }
.kpi{ display:flex; gap:14px; flex-wrap:wrap; }
.kpi .k{ background:var(--soft); border-radius:10px; padding:12px 18px; }
.kpi .k .n{ font-size:24px; font-weight:800; color:var(--navy); }
.kpi .k .l{ font-size:12px; color:var(--muted); }
.note{ background:#fff7e8; border:1px dashed #e6c479; color:#8a5a12; padding:10px 14px; border-radius:8px; font-size:13px; margin-top:10px; }

@media(max-width:760px){
  .sidebar{ width:100%; }
  .layout{ flex-direction:column; min-height:auto; }
  .topbar{ padding:10px 14px; }
  .brand-sub{ display:none; }
  .content{ padding:12px 12px 16px; }
  .card{ padding:16px 14px; }
  .chat{ height:calc(100vh - 340px); height:calc(100dvh - 340px); min-height:200px; }
  .chat-input input{ font-size:16px; padding:12px; }
  .chat-bar{ position:sticky; bottom:0; background:var(--card); border-top:1px solid var(--line); box-shadow:0 -2px 8px rgba(30,50,80,.05); padding:8px 14px calc(8px + env(safe-area-inset-bottom)); margin:0 -14px -16px; }
  .btn{ min-height:42px; }
  .role-tab{ padding:10px 14px; }
  .login-card{ width:90%; max-width:340px; padding:28px 22px; }
  .lg-input{ font-size:16px; }
}

/* user bar */
.user-bar{ font-size:13px; color:#fff; }
.user-bar .link{ color:var(--amber); cursor:pointer; margin-left:10px; text-decoration:underline; }

/* login */
#loginOverlay{ position:fixed; inset:0; background:linear-gradient(135deg,var(--navy),var(--navy-d)); display:flex; align-items:center; justify-content:center; z-index:50; }
.login-card{ background:#fff; border-radius:16px; padding:34px 38px; width:340px; box-shadow:0 10px 40px rgba(0,0,0,.3); }
.login-card h2{ text-align:center; margin:10px 0 2px; }
.login-logo{ width:54px; height:54px; border-radius:12px; background:var(--amber); color:var(--navy-d); font-weight:800; font-size:28px; display:flex; align-items:center; justify-content:center; margin:0 auto; }
.lg-input{ width:100%; padding:11px 13px; border:1px solid var(--line); border-radius:9px; font-size:14px; margin:8px 0; box-sizing:border-box; }
.lg-input:focus{ outline:none; border-color:var(--navy); }
.lg-btn{ width:100%; margin-top:8px; padding:11px; font-size:15px; }
.lg-msg{ color:var(--bad); font-size:13px; min-height:18px; margin-top:8px; text-align:center; }
.login-tip{ font-size:12px; color:var(--muted); margin-top:14px; line-height:1.6; }
.reg-form{ display:flex; flex-direction:column; max-width:360px; }
.reg-form .lg-input{ margin:6px 0; }

/* ===== 组织管理 ===== */
.dept-card{ border:1px solid var(--line); border-radius:10px; padding:10px 14px; margin-bottom:10px; background:#fff; }
.dept-head{ font-size:15px; margin-bottom:6px; }
.group-row{ padding:5px 0 5px 18px; font-size:14px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.btn.xs{ padding:4px 10px; font-size:12px; }
.xs-input{ width:auto; min-width:110px; padding:5px 8px; font-size:13px; }
select.lg-input{ background:#fff; }
.voice-toggle{ display:flex; align-items:center; gap:4px; font-size:13px; color:var(--muted); cursor:pointer; white-space:nowrap; }

/* 车间实拍图库 */
.workshop-gallery{ margin:14px 0; padding:12px; background:var(--bg-card,#f7f8fa); border:1px solid var(--border,#e3e6ea); border-radius:10px; }
.wg-title{ font-weight:600; font-size:14px; margin-bottom:10px; }
.workshop-gallery img{ display:block; width:100%; max-width:420px; margin:8px 0; border-radius:8px; border:1px solid var(--border,#e3e6ea); }
@media(min-width:900px){ .workshop-gallery img{ display:inline-block; width:calc(50% - 8px); margin:4px; vertical-align:top; } }
