/* ============ 基础变量 ============ */
:root{
  --primary:#2f6fed;
  --primary-d:#234fb0;
  --bg:#f4f6fb;
  --card:#ffffff;
  --ink:#1f2733;
  --muted:#7a8499;
  --line:#e3e8f0;
  --ok:#16a34a;
  --ok-bg:#e8f7ee;
  --err:#dc2626;
  --err-bg:#fdeaea;
  --warn:#d97706;
  --radius:14px;
  --shadow:0 2px 14px rgba(30,50,90,.06);
  --shadow-lg:0 6px 24px rgba(30,50,90,.12);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);
  color:var(--ink);
  line-height:1.5;
  font-size:15px;
  -webkit-font-smoothing:antialiased;
}

/* ============ 顶栏 ============ */
.topbar{
  position:sticky;top:0;z-index:20;
  display:flex;align-items:center;gap:10px;
  padding:12px 16px;
  background:linear-gradient(135deg,var(--primary),var(--primary-d));
  color:#fff;
  box-shadow:0 2px 10px rgba(40,80,180,.18);
}
.topbar-title{font-size:16px;font-weight:600;margin:0;flex:1;text-align:center;}

/* ============ 布局 ============ */
.app{max-width:760px;margin:0 auto;padding:14px 14px 60px;}
.view{display:none;flex-direction:column;gap:14px;animation:fade .22s ease;}
.view.active{display:flex;}
@keyframes fade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}

/* ============ 卡片 ============ */
.card{
  background:var(--card);border-radius:var(--radius);
  padding:16px;box-shadow:var(--shadow);
}
.card h2{margin:0 0 4px;font-size:18px;}
.card h3{margin:0 0 10px;font-size:15px;color:var(--muted);}
.muted{color:var(--muted);font-size:13px;margin:4px 0 0;}
.hero{text-align:center;padding:22px 16px;}
.hero h2{margin-bottom:6px;}

/* ============ 首页选择卡 ============ */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.pick{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  text-align:center;cursor:pointer;border:none;color:var(--ink);
  transition:transform .12s,box-shadow .12s;padding:18px 10px;
}
.pick:active{transform:scale(.97);}
.pick.small{padding:14px 8px;}
.pick-emoji{font-size:30px;line-height:1;}
.pick-title{font-size:16px;font-weight:600;}
.pick-desc{font-size:12px;color:var(--muted);}
.quick-actions{display:flex;justify-content:center;}

/* ============ 按钮 ============ */
.btn{
  border:none;border-radius:10px;padding:11px 16px;font-size:15px;
  cursor:pointer;font-weight:500;transition:filter .12s,background .12s;
}
.btn:active{filter:brightness(.95);}
.btn-primary{background:var(--primary);color:#fff;}
.btn-line{background:#fff;color:var(--primary);border:1px solid var(--primary);}
.btn-danger-ghost{background:#fff;color:var(--err);border:1px solid #f3c2c2;}
.btn-danger-ghost:active{background:var(--err-bg);}
.btn[disabled]{opacity:.5;cursor:not-allowed;}
.btn.full{width:100%;}
.btn-row{display:flex;flex-wrap:wrap;gap:10px;}
.btn-row .btn{flex:1;min-width:96px;}

/* ============ 配置项 ============ */
.cfg-group{margin-top:16px;}
.cfg-label{display:block;font-size:13px;color:var(--muted);margin-bottom:8px;font-weight:500;}
.chip-row,.seg-row{display:flex;flex-wrap:wrap;gap:8px;}
.chip,.seg{
  border:1px solid var(--line);background:#fff;color:var(--ink);
  padding:9px 14px;border-radius:999px;font-size:14px;cursor:pointer;
  transition:all .12s;
}
.chip:active,.seg:active{transform:scale(.96);}
.chip.active,.seg.active{
  background:var(--primary);color:#fff;border-color:var(--primary);
}
.seg-row .seg{border-radius:10px;flex:1;min-width:64px;text-align:center;}
.cfg-actions{display:flex;gap:10px;margin-top:20px;}
.cfg-actions .btn{flex:1;}
.cfg-tip{margin-top:10px;min-height:18px;text-align:center;color:var(--err);}

/* 基本计算配置：三列式布局（第一个数 | 运算 | 第二个数） */
.cfg-formula-row{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:12px;
  align-items:start;
}
.cfg-formula-row .cfg-group{margin-top:0;}
@media(max-width:520px){
  .cfg-formula-row{grid-template-columns:1fr 1fr;}
  .cfg-formula-row .cfg-op-col{grid-column:span 2;order:3;}
  .cfg-formula-row .cfg-digit-col:nth-child(1){order:1;}
  .cfg-formula-row .cfg-digit-col:nth-child(3){order:2;}
}
.cfg-digit-col .cfg-label{text-align:center;}
.cfg-digit-col .digit-list{
  display:flex;flex-direction:column;gap:7px;
  background:#f7f9fd;border:1px solid var(--line);border-radius:12px;
  padding:8px;
}
.cfg-digit-col .digit-list .chip{
  border-radius:10px;text-align:center;width:100%;
  border-color:transparent;background:#fff;
}
.cfg-digit-col .digit-list .chip.active{
  background:var(--primary);border-color:var(--primary);
}
/* 运算：2x2 宫格 */
.cfg-op-col{display:flex;flex-direction:column;align-items:center;}
.cfg-op-col .cfg-label{text-align:center;}
.op-grid{
  display:grid;grid-template-columns:repeat(2,60px);
  grid-template-rows:repeat(2,60px);gap:8px;
  background:#f7f9fd;border:1px solid var(--line);border-radius:12px;
  padding:8px;
}
@media(max-width:520px){
  .op-grid{grid-template-columns:repeat(4,1fr);grid-template-rows:auto;}
}
.op-grid .op-chip{
  padding:0;border-radius:12px;font-size:20px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
  border-color:transparent;background:#fff;
}
.op-grid .op-chip.active{
  background:var(--primary);border-color:var(--primary);
}
/* 题型类别：压缩宽度 */
.seg-row-compact{max-width:320px;margin:0 auto;}
.seg-row-compact .seg{flex:0 0 auto;min-width:100px;}

/* 单按钮动作区 */
.cfg-actions-single .btn{flex:0 0 100%;}

/* 返回按钮（卡片内小按钮） */
.back-btn-sm{
  padding:4px 10px;font-size:12px;margin-bottom:6px;border-radius:8px;
}

/* 快速配置网格：每行两个 */
.cfg-row{display:flex;gap:14px;align-items:flex-start;}
.cfg-quick-card{min-width:200px;max-width:260px;flex-shrink:0;}
.cfg-main-card{flex:1;min-width:0;}
@media(max-width:640px){
  .cfg-row{flex-direction:column;}
  .cfg-quick-card{max-width:100%;min-width:0;}
}
.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.quick-chip{
  padding:7px 4px;font-size:12px;border-radius:10px;text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  border:1px solid var(--line);background:#f7f9fd;color:var(--ink);
  cursor:pointer;transition:all .12s;font-weight:500;
}
.quick-chip:active{transform:scale(.96);}
.quick-chip.active{
  background:var(--primary);color:#fff;border-color:var(--primary);
}

/* ============ 统计条 ============ */
.stats-bar{
  display:grid;grid-template-columns:repeat(5,1fr);gap:6px;
  background:var(--card);border-radius:var(--radius);padding:10px 8px;
  box-shadow:var(--shadow);
}
.view[data-view="fixed"] .stats-bar{grid-template-columns:repeat(3,1fr);}
.stat{display:flex;flex-direction:column;align-items:center;gap:2px;}
.stat-k{font-size:11px;color:var(--muted);}
.stat-v{font-size:15px;font-weight:600;color:var(--primary);}
@media(max-width:480px){
  .stats-bar{grid-template-columns:repeat(3,1fr);}
  .stat:nth-child(4),.stat:nth-child(5){grid-column:span 1;}
}

/* ============ 单题练习 ============ */
.question-card{text-align:center;padding:22px 16px;position:relative;}
.q-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;position:relative;}
.q-index{color:var(--muted);font-size:13px;position:absolute;left:50%;transform:translateX(-50%);}
.btn-pause{
  background:var(--card);color:var(--muted);border:1px solid var(--line);
  padding:4px 14px;border-radius:8px;font-size:13px;cursor:pointer;font-weight:500;
  transition:all .12s;line-height:1.6;
}
.btn-pause:active{transform:scale(.96);}
.btn-pause.paused{background:var(--primary);color:#fff;border-color:var(--primary);}
.q-expr{
  font-size:38px;font-weight:700;letter-spacing:1px;margin:6px 0 18px;
  color:var(--ink);word-break:break-word;
}
.answer-row{display:flex;justify-content:center;margin-bottom:12px;}
.answer-input{
  width:100%;max-width:280px;text-align:center;
  font-size:26px;font-weight:600;padding:10px 8px;
  border:2px solid var(--line);border-radius:10px;outline:none;
  transition:border-color .15s;
}
.answer-input:focus{border-color:var(--primary);}
.feedback{min-height:26px;font-size:15px;font-weight:600;margin-bottom:10px;}
.feedback.ok{color:var(--ok);}
.feedback.err{color:var(--err);}
.feedback.info{color:var(--warn);}

/* ============ 数字软键盘 ============ */
.numpad{margin-top:14px;user-select:none;}
.numpad-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:6px;
  max-width:320px;
  margin:0 auto;
}
.numpad-key{
  border:1px solid var(--line);background:#f7f9fd;color:var(--ink);
  border-radius:10px;padding:12px 0;font-size:20px;font-weight:600;
  cursor:pointer;transition:all .1s;text-align:center;
  -webkit-tap-highlight-color:transparent;
}
.numpad-key:active{transform:scale(.95);background:#e8ecf5;}
.numpad-key[disabled]{opacity:.4;cursor:not-allowed;transform:none;}
.numpad-key-clear{
  grid-column:span 2;
  font-size:16px;font-weight:500;color:var(--muted);
}
.numpad-key-confirm{
  background:var(--primary);color:#fff;border-color:var(--primary);
  font-size:16px;font-weight:600;
}
.numpad-key-confirm:active{background:var(--primary-d);}
.numpad-key-confirm[disabled]{background:var(--primary);opacity:.5;}

/* 结束练习按钮置左 */
.btn-end{padding:4px 10px;font-size:12px;border-radius:8px;}

/* ============ 固定题数列表 ============ */
.fixed-list-card{padding:14px;}
.fixed-list{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:14px;}
@media(min-width:560px){.fixed-list{grid-template-columns:1fr 1fr;}}
.fixed-item{
  border:1px solid var(--line);border-radius:10px;padding:10px;
  display:flex;align-items:center;gap:8px;background:#fbfcfe;
}
.fixed-item .fi-idx{
  width:24px;height:24px;border-radius:6px;background:var(--primary);color:#fff;
  font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.fixed-item .fi-expr{flex:1;font-size:16px;font-weight:600;}
.fixed-item .fi-expr .eq{color:var(--muted);}
.fixed-item .fi-input{
  width:84px;font-size:16px;padding:6px 4px;text-align:center;
  border:1px solid var(--line);border-radius:8px;outline:none;
}
.fixed-item .fi-input:focus{border-color:var(--primary);}
.fixed-item.done{background:var(--ok-bg);}
.fixed-item.done .fi-input{border-color:var(--ok);}

/* ============ 结算页 ============ */
.sum-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:10px;
}
@media(max-width:480px){.sum-grid{grid-template-columns:repeat(2,1fr);}}
.sum-item{
  background:#f7f9fd;border-radius:10px;padding:12px 6px;text-align:center;
}
.sum-k{display:block;font-size:12px;color:var(--muted);}
.sum-v{display:block;font-size:20px;font-weight:700;color:var(--primary);margin-top:4px;}
.detail-list{display:flex;flex-direction:column;gap:8px;}
.detail-item{
  display:grid;grid-template-columns:auto auto auto auto;gap:10px;align-items:center;
  padding:9px 10px;border-radius:10px;font-size:14px;justify-content:start;
}
.detail-item.ok{background:var(--ok-bg);}
.detail-item.err{background:var(--err-bg);}
.di-idx{font-size:12px;color:var(--muted);width:24px;}
.di-q{font-weight:600;}
.di-a{font-weight:600;}
.di-a.ok{color:var(--ok);}
.di-a.err{color:var(--err);}
.di-t{font-size:12px;color:var(--muted);min-width:46px;text-align:right;}
.di-correct{font-size:12px;color:var(--muted);}

/* ============ 历史记录 ============ */
.history-list{display:flex;flex-direction:column;gap:10px;margin-bottom:14px;}
.history-item{
  border:1px solid var(--line);border-radius:10px;padding:12px;cursor:pointer;
  background:#fbfcfe;
}
.history-item:active{background:#f0f4fa;}
.history-item .hi-top{display:flex;justify-content:space-between;align-items:center;}
.history-item .hi-type{font-weight:600;font-size:14px;}
.history-item .hi-time{font-size:12px;color:var(--muted);}
.history-item .hi-stats{display:flex;gap:14px;margin-top:6px;font-size:13px;}
.history-item .hi-stats span b{color:var(--primary);}
.history-empty{text-align:center;color:var(--muted);padding:20px 0;}

/* ============ 公式计算 ============ */
.formula-box{
  background:#f7f9fd;border:1px dashed var(--line);border-radius:10px;
  padding:12px;text-align:center;font-size:15px;color:var(--primary);
  margin:10px 0 14px;font-weight:600;
}
.placeholder{text-align:center;padding:18px 10px;}
.ph-icon{font-size:38px;display:block;margin-bottom:6px;}
.back-btn{margin-bottom:8px;}
