:root{
  --primary:#4f8ef7; --primary-soft:#e8f1ff; --bg:#f4f6fa; --card:#ffffff;
  --text:#2b3445; --text2:#6b7688; --border:#e6eaf1; --danger:#f56c6c;
  --ok:#67c23a; --warn:#e6a23c; --radius:14px; --shadow:0 2px 10px rgba(30,50,90,.06);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Microsoft YaHei","PingFang SC",sans-serif;background:var(--bg);color:var(--text);font-size:14px}
button{cursor:pointer;border:none;font-family:inherit}
input,select,textarea{font-family:inherit;font-size:13px;border:1px solid var(--border);border-radius:8px;padding:7px 10px;color:var(--text);background:#fff;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--primary)}
.hidden{display:none!important}

/* 顶部通栏 */
.topbar{height:60px;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 20px;box-shadow:var(--shadow);position:sticky;top:0;z-index:50}
.topbar-left{display:flex;align-items:center;gap:10px}
.logo{font-size:28px}
.topbar-left h1{font-size:18px}
.topbar-left p{font-size:12px;color:var(--text2)}
.topbar-center{display:flex;align-items:center;gap:12px}
.mode-switch{display:flex;background:var(--bg);border-radius:20px;padding:3px}
.mode-switch button{background:transparent;padding:5px 14px;border-radius:16px;font-size:12px;color:var(--text2)}
.mode-switch button.active{background:var(--primary);color:#fff}
.topbar-right{display:flex;align-items:center;gap:10px}
.datetime{font-size:12px;color:var(--text2)}
.topbar-right button{background:var(--bg);border-radius:8px;padding:6px 8px;font-size:14px}

/* 布局 */
.body-wrap{display:flex;min-height:calc(100vh - 60px)}
.sidebar{width:210px;background:#fff;padding:14px 10px;flex-shrink:0;box-shadow:var(--shadow);display:flex;flex-direction:column;position:sticky;top:60px;height:calc(100vh - 60px);overflow-y:auto}
.sidebar nav{flex:1}
.nav-group{font-size:11px;color:var(--text2);padding:10px 10px 4px;font-weight:bold}
.nav-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:10px;cursor:pointer;color:var(--text);margin:2px 0;font-size:13px}
.nav-item:hover{background:var(--primary-soft)}
.nav-item.active{background:var(--primary);color:#fff}
.nav-edit{margin-top:10px;background:var(--bg);border-radius:8px;padding:7px;font-size:12px;color:var(--text2)}

/* 主区 */
#main-content{flex:1;padding:20px;overflow-y:auto;max-height:calc(100vh - 60px)}
.page-title{font-size:18px;margin-bottom:4px}
.page-desc{font-size:12px;color:var(--text2);margin-bottom:16px}
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}
.card h3{font-size:15px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between}
.card h3 .ops{display:flex;gap:8px;font-size:12px}
.btn{background:var(--primary);color:#fff;border-radius:8px;padding:7px 14px;font-size:13px}
.btn.plain{background:var(--primary-soft);color:var(--primary)}
.btn.gray{background:var(--bg);color:var(--text2)}
.btn.danger{background:#fff0f0;color:var(--danger)}
.btn.sm{padding:4px 10px;font-size:12px;border-radius:6px}

/* 表格 */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{background:var(--bg);padding:9px 10px;text-align:left;color:var(--text2);font-weight:normal;white-space:nowrap}
.tbl td{padding:8px 10px;border-top:1px solid var(--border);word-break:break-all}
.tbl tr:hover td{background:#fafcff}
.tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;background:var(--primary-soft);color:var(--primary)}
.tag.red{background:#fff0f0;color:var(--danger)}
.tag.green{background:#f0fff4;color:var(--ok)}
.tag.orange{background:#fdf6ec;color:var(--warn)}

/* 弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(20,30,50,.4);z-index:100;display:flex;align-items:center;justify-content:center}
.modal{background:#fff;border-radius:16px;width:560px;max-width:92vw;max-height:86vh;display:flex;flex-direction:column}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}
.modal-head h3{font-size:16px}
.modal-head button{background:none;font-size:16px;color:var(--text2)}
.modal-body{padding:16px 20px;overflow-y:auto}
.modal-foot{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}
.form-row{margin-bottom:12px}
.form-row label{display:block;font-size:12px;color:var(--text2);margin-bottom:5px}
.form-row input,.form-row select,.form-row textarea{width:100%}
.form-row textarea{min-height:70px;resize:vertical}
.form-cols{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.toast{position:fixed;top:70px;left:50%;transform:translateX(-50%);background:#333;color:#fff;padding:9px 20px;border-radius:20px;font-size:13px;z-index:200}

/* 总览 */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.stat-card{border-radius:12px;padding:16px;color:#fff}
.stat-card .num{font-size:26px;font-weight:bold}
.stat-card .label{font-size:12px;opacity:.9;margin-top:4px}
.quick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}
.quick-item{background:var(--bg);border-radius:12px;padding:14px 8px;text-align:center;cursor:pointer;font-size:12px}
.quick-item:hover{background:var(--primary-soft)}
.quick-item .qicon{font-size:22px;display:block;margin-bottom:6px}
.overview-wrap{display:grid;grid-template-columns:2fr 1fr;gap:16px}
.list-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px dashed var(--border);font-size:13px}
.todo-item{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px dashed var(--border);font-size:13px}
.todo-item.done span{text-decoration:line-through;color:var(--text2)}
.alarm{background:#fff0f0;color:var(--danger);border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:14px}

/* 功能卡片页（备课反思） */
.gen-cards{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.gen-card{background:linear-gradient(135deg,#fff, #f3f7ff);border:1px solid var(--border);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:8px}
.gen-card .gicon{font-size:30px}
.gen-card h3{margin:0;font-size:16px}
.gen-card p{font-size:12px;color:var(--text2);flex:1}
.gen-card .go{align-self:flex-end;color:var(--primary);background:none;font-weight:bold}

/* 点名器 */
.pick-card{background:linear-gradient(135deg,#6a5cff,#4f8ef7);border-radius:16px;color:#fff;text-align:center;padding:44px 20px;margin-bottom:16px}
.pick-card .pname{font-size:44px;font-weight:bold;letter-spacing:4px;margin:14px 0}
.pick-modes{display:flex;gap:10px;flex-wrap:wrap}
.pick-modes button{background:var(--bg);border-radius:20px;padding:8px 16px;font-size:13px;color:var(--text2)}
.pick-modes button.active{background:var(--primary);color:#fff}

/* 数据卡（成绩分析） */
.score-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-bottom:16px}
.score-cards .sc{border-radius:12px;padding:14px;text-align:center;color:#fff}
.score-cards .sc .num{font-size:22px;font-weight:bold}
.score-cards .sc .lab{font-size:11px;margin-top:4px;opacity:.9}

/* 进度条（试卷分析） */
.kp-row{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:13px}
.kp-bar{flex:1;height:10px;background:var(--bg);border-radius:6px;overflow:hidden}
.kp-fill{height:100%;border-radius:6px;background:var(--primary)}
.kp-fill.weak{background:var(--danger)}

/* 值日/班委 */
.duty-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.duty-card{background:var(--bg);border-radius:12px;padding:14px;font-size:13px}
.duty-card h4{font-size:13px;color:var(--primary);margin-bottom:8px}
.committee-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}
.cm-card{border-radius:12px;padding:14px;color:#fff;font-size:12px}
.cm-card h4{font-size:14px;margin-bottom:6px}

/* 座位表 */
.seat-grid{display:flex;flex-direction:column;gap:8px;align-items:center}
.seat-row{display:flex;gap:8px}
.seat{width:84px;height:52px;background:var(--primary-soft);border:1px dashed var(--primary);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12px;cursor:pointer;text-align:center;color:var(--primary)}
.seat.empty{background:var(--bg);border-color:var(--border);color:var(--text2)}
.podium{background:var(--primary-soft);color:var(--primary);border-radius:10px;padding:6px 60px;font-size:13px;margin:10px 0}

/* 时间轴 */
.timeline{position:relative;padding-left:20px}
.timeline::before{content:"";position:absolute;left:5px;top:0;bottom:0;width:2px;background:var(--border)}
.tl-item{position:relative;padding:8px 0 8px 10px;font-size:13px}
.tl-item::before{content:"";position:absolute;left:-19px;top:14px;width:10px;height:10px;border-radius:50%;background:var(--primary)}

/* 生成结果 */
.gen-result{background:var(--bg);border-radius:12px;padding:14px;font-size:13px;line-height:1.8;white-space:pre-wrap;max-height:420px;overflow-y:auto}

/* 话术/锦囊 */
.fa-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.fa-card{background:var(--bg);border-radius:12px;padding:14px;font-size:12px;cursor:pointer}
.fa-card h4{font-size:13px;margin-bottom:6px;color:var(--primary)}
.fa-card p{color:var(--text2)}

/* 课表 */
.tt-grid{display:grid;grid-template-columns:70px repeat(5,1fr);gap:4px;font-size:12px}
.tt-cell{background:var(--bg);border-radius:8px;padding:9px 6px;text-align:center;min-height:40px;cursor:pointer}
.tt-cell.head{background:var(--primary-soft);color:var(--primary);font-weight:bold;cursor:default}
.tt-cell:hover{background:var(--primary-soft)}
@media(max-width:900px){.overview-wrap,.gen-cards{grid-template-columns:1fr}.sidebar{width:64px}.nav-item span.txt,.nav-group{display:none}}
