/* ============== 全局变量与重置 ============== */
:root{
  --primary:#5B8DEF;
  --primary-dark:#3B6FE0;
  --primary-light:#E0F2FE;
  --accent-yellow:#FFD93D;
  --accent-yellow-dark:#F5B800;
  --accent-purple:#A78BFA;
  --accent-pink:#F472B6;
  --accent-green:#34D399;
  --accent-orange:#FB923C;
  --accent-red:#F87171;
  --bg-gradient:linear-gradient(180deg,#E0F2FE 0%,#DBEAFE 100%);
  --card-bg:#FFFFFF;
  --text-dark:#1E3A8A;
  --text-mid:#475569;
  --text-light:#94A3B8;
  --border:#E2E8F0;
  --shadow-sm:0 2px 8px rgba(91,141,239,0.08);
  --shadow-md:0 6px 20px rgba(91,141,239,0.12);
  --shadow-lg:0 12px 32px rgba(91,141,239,0.16);
  --radius-sm:10px;
  --radius-md:16px;
  --radius-lg:24px;
  --radius-xl:32px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Hiragino Sans GB","Helvetica Neue",Arial,sans-serif;font-size:16px;color:var(--text-dark);}
button{font-family:inherit;cursor:pointer;border:none;background:none;}
input,textarea,select{font-family:inherit;outline:none;border:none;background:transparent;}
::-webkit-scrollbar{width:6px;height:6px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:#CBD5E1;border-radius:3px;}

/* ============== 整体 App 容器 ============== */
#app{width:100vw;height:100vh;overflow:hidden;background:var(--bg-gradient);display:flex;flex-direction:column;}

/* ============== 顶栏 ============== */
.topbar{
  height:64px;flex-shrink:0;position:sticky;top:0;z-index:100;
  background:rgba(255,255,255,0.85);backdrop-filter:blur(20px);
  border-bottom:1px solid rgba(91,141,239,0.12);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 24px;
}
.topbar-left{display:flex;align-items:center;gap:14px;min-width:0;}
.brand-icon{
  width:42px;height:42px;border-radius:14px;
  background:linear-gradient(135deg,#5B8DEF,#A78BFA);
  display:flex;align-items:center;justify-content:center;color:white;
  box-shadow:var(--shadow-sm);font-size:20px;flex-shrink:0;
}
.brand-title{font-size:18px;font-weight:700;color:var(--text-dark);white-space:nowrap;}
.brand-subtitle{font-size:12px;color:var(--text-light);margin-top:2px;white-space:nowrap;}
.topbar-right{display:flex;align-items:center;gap:12px;flex-shrink:0;}
/* 全局刷新按钮(2026-09-20 用户定制):顶栏右上角,点击刷新页面获取最新内容 */
.refresh-chip{
  display:flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:50%;
  background:#FFFFFF;border:1.5px solid #E2E8F0;
  font-size:17px;cursor:pointer;flex-shrink:0;
  position:relative;z-index:30;   /* 2026-09-27:防被相邻徽标遮挡导致点不动 */
  transition:transform .5s, background .2s, border-color .2s;
}
.refresh-chip:hover{background:#EFF6FF;border-color:#5B8DEF;transform:rotate(180deg);}
.refresh-chip:active{transform:rotate(360deg) scale(.92);}
.star-chip{
  display:flex;align-items:center;gap:6px;padding:8px 14px;
  background:linear-gradient(135deg,#FFD93D,#F5B800);border-radius:999px;
  color:white;font-weight:700;box-shadow:0 4px 12px rgba(245,184,0,0.3);cursor:pointer;
  transition:transform .15s;
}
.star-chip:hover{transform:translateY(-1px);}
.badge-chip{
  display:flex;align-items:center;gap:8px;padding:8px 12px;
  background:linear-gradient(135deg,#F472B6,#A78BFA);border-radius:999px;
  color:white;font-weight:700;box-shadow:0 4px 12px rgba(167,139,250,.3);
  cursor:pointer;transition:transform .15s;
}
.badge-chip:hover{transform:translateY(-1px);}
.bc-count{font-size:12px;background:rgba(255,255,255,.22);padding:2px 8px;border-radius:999px;font-weight:600;}
.user-chip{
  display:flex;align-items:center;gap:8px;padding:6px 14px 6px 6px;
  background:white;border-radius:999px;box-shadow:var(--shadow-sm);
  cursor:pointer;transition:all .2s;
}
.user-chip:hover{box-shadow:0 4px 14px rgba(91,141,239,.25);transform:translateY(-1px);}
.avatar{
  width:32px;height:32px;border-radius:50%;
  background:linear-gradient(135deg,#F472B6,#A78BFA);
  display:flex;align-items:center;justify-content:center;color:white;font-weight:700;
}

/* ============== 学段切换器 ============== */
.age-switch{
  display:flex;gap:4px;margin-left:14px;flex-shrink:0;
  background:#fff;padding:4px;border-radius:13px;
  box-shadow:0 2px 8px rgba(91,141,239,.10);
  border:1px solid var(--primary-light);
}
.age-btn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:5px 11px;border-radius:9px;border:none;background:transparent;
  color:var(--text-light);font-weight:700;font-size:12px;cursor:pointer;
  transition:all .2s;min-width:56px;line-height:1.15;
}
.age-btn .age-emoji{font-size:16px;line-height:1;}
.age-btn .age-sub{font-size:9.5px;font-weight:500;color:#94A3B8;margin-top:2px;}
.age-btn:hover{background:var(--primary-light);color:var(--primary);}
.age-btn.active{
  background:linear-gradient(135deg,var(--primary),var(--accent-purple));
  color:#fff;box-shadow:0 3px 8px rgba(91,141,239,.30);
}
.age-btn.active .age-sub{color:#E0E7FF;}
.menu-btn{display:none;width:38px;height:38px;border-radius:10px;background:white;align-items:center;justify-content:center;font-size:18px;color:var(--text-mid);box-shadow:var(--shadow-sm);}

/* ============== 主体布局 ============== */
.main{flex:1;display:flex;overflow:hidden;}

/* ============== 侧边栏 ============== */
.sidebar{
  width:220px;flex-shrink:0;background:rgba(255,255,255,0.6);
  border-right:1px solid rgba(91,141,239,0.1);
  display:flex;flex-direction:column;
  padding:14px 16px 16px;position:relative;overflow:hidden;
}
.sidebar::after{
  content:"";position:absolute;bottom:0;left:0;right:0;height:140px;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 140' preserveAspectRatio='none'><path d='M0,90 C30,80 50,100 80,90 L80,140 L0,140 Z' fill='%23BAE6FD' opacity='0.45'/><path d='M60,80 C90,70 120,90 150,82 L150,140 L60,140 Z' fill='%237DD3FC' opacity='0.45'/><path d='M120,95 C150,85 180,100 220,90 L220,140 L120,140 Z' fill='%2338BDF8' opacity='0.45'/></svg>") no-repeat bottom center/100% auto;
  pointer-events:none;
}
.sidebar-header{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:4px 8px 16px;text-align:center;position:relative;z-index:2;
}
.sidebar-header-icon{
  width:64px;height:64px;border-radius:18px;
  background:linear-gradient(135deg,#FFD93D,#FBBF24);
  display:flex;align-items:center;justify-content:center;font-size:30px;
  box-shadow:0 8px 16px rgba(251,191,36,0.35);
}
.sidebar-title{font-size:15px;font-weight:800;color:var(--text-dark);line-height:1.4;}
.sidebar-nav{flex:1;overflow-y:auto;position:relative;z-index:2;padding-bottom:8px;}
.nav-item{
  display:flex;align-items:center;gap:12px;
  padding:12px 14px;border-radius:14px;
  color:var(--text-mid);font-weight:600;
  transition:all .2s;text-align:left;width:100%;font-size:15px;margin-bottom:2px;
}
.nav-item:hover{background:rgba(91,141,239,0.08);}
.nav-item.active{background:linear-gradient(135deg,#5B8DEF,#3B6FE0);color:white;box-shadow:0 6px 14px rgba(91,141,239,0.4);}
.nav-item .ico{
  width:28px;height:28px;display:flex;align-items:center;justify-content:center;
  border-radius:8px;background:rgba(91,141,239,0.1);flex-shrink:0;font-size:15px;
}
.nav-item.active .ico{background:rgba(255,255,255,0.2);}
.dock{
  margin-top:10px;padding:10px 12px;background:rgba(255,255,255,0.85);
  border-radius:16px;box-shadow:var(--shadow-sm);position:relative;z-index:2;
}
.dock-user{display:flex;align-items:center;gap:10px;cursor:pointer;}
.dock-avatar{
  width:38px;height:38px;border-radius:50%;
  background:linear-gradient(135deg,#F472B6,#A78BFA);
  display:flex;align-items:center;justify-content:center;color:white;font-weight:700;flex-shrink:0;
}
.dock-meta{min-width:0;}
.dock-name{font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dock-tag{font-size:11px;color:var(--text-light);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* ============== 内容区 ============== */
.content{flex:1;overflow-y:auto;padding:24px 32px;background:transparent;}
.view{display:none;}
.view.active{display:block;animation:fadeIn .3s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.page-title{font-size:28px;font-weight:800;margin-bottom:6px;display:flex;align-items:center;gap:10px;}
.page-subtitle{font-size:15px;color:var(--text-mid);margin-bottom:24px;}
.page-subtitle::before{content:"•";color:var(--primary);margin-right:6px;}

/* ============== 卡片通用 ============== */
.card{
  background:var(--card-bg);border-radius:var(--radius-lg);
  padding:20px 24px;box-shadow:var(--shadow-md);
  border:1px solid rgba(91,141,239,0.06);
}
.card-title{font-size:18px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:8px;color:var(--text-dark);}
.card-title .deco{width:6px;height:18px;border-radius:3px;background:linear-gradient(180deg,#5B8DEF,#A78BFA);}
.muted{font-size:13px;color:var(--text-mid);margin-bottom:14px;}

/* ============== 按钮 ============== */
.btn-primary{
  padding:10px 18px;border-radius:12px;font-weight:700;font-size:14px;
  background:linear-gradient(135deg,#5B8DEF,#3B6FE0);color:white;
  box-shadow:0 4px 12px rgba(91,141,239,.3);transition:all .2s;
}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(91,141,239,.4);}
.btn-accent{
  padding:10px 18px;border-radius:12px;font-weight:700;font-size:14px;
  background:linear-gradient(135deg,#34D399,#10B981);color:white;
  box-shadow:0 4px 12px rgba(16,185,129,.3);transition:all .2s;
}
.btn-accent:hover{transform:translateY(-1px);}
.btn-ghost{
  padding:10px 18px;border-radius:12px;font-weight:700;font-size:14px;
  background:var(--primary-light);color:var(--primary);transition:all .2s;
}
.btn-ghost:hover{background:#CFE8FF;}

/* ============== 首页 Hero ============== */
.hero-banner{
  display:flex;align-items:center;justify-content:space-between;
  padding:28px 36px;margin-bottom:24px;
  background:linear-gradient(120deg,#EEF4FF 0%,#F0FDFA 50%,#FFF5F7 100%);
  border-radius:24px;box-shadow:var(--shadow-sm);
  position:relative;overflow:hidden;
}
.hero-banner::before{
  content:"";position:absolute;right:-40px;top:-40px;
  width:240px;height:240px;border-radius:50%;
  background:radial-gradient(circle,rgba(91,141,239,0.18),transparent 70%);
  pointer-events:none;
}
.hero-banner::after{
  content:"";position:absolute;right:80px;bottom:-60px;
  width:180px;height:180px;border-radius:50%;
  background:radial-gradient(circle,rgba(167,139,250,0.16),transparent 70%);
  pointer-events:none;
}
.hero-text{position:relative;z-index:1;}
.hero-title{font-size:34px;font-weight:800;color:var(--text-dark);}
.hero-sub{font-size:15px;color:var(--text-mid);margin-top:6px;}
.hero-right{position:relative;z-index:1;text-align:right;}
.hero-date{font-size:14px;color:var(--text-mid);font-weight:600;}
.hero-day{
  margin-top:8px;display:inline-block;padding:8px 16px;
  background:linear-gradient(135deg,#FFD93D,#F5B800);border-radius:999px;
  color:white;font-weight:700;font-size:14px;box-shadow:0 4px 12px rgba(245,184,0,0.3);
}

/* ============== KPI 卡片 ============== */
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px;}
.kpi-card{
  background:white;border-radius:18px;padding:20px 22px;
  display:flex;align-items:center;gap:16px;
  box-shadow:var(--shadow-sm);border:1px solid #E2E8F0;
  transition:all .25s ease;cursor:pointer;
}
.kpi-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);}
.kpi-icon{
  width:64px;height:64px;border-radius:18px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font-size:30px;
  box-shadow:0 4px 12px rgba(0,0,0,0.06);
}
.kpi-blue .kpi-icon{background:linear-gradient(135deg,#DBEAFE,#BFDBFE);}
.kpi-green .kpi-icon{background:linear-gradient(135deg,#DCFCE7,#BBF7D0);}
.kpi-orange .kpi-icon{background:linear-gradient(135deg,#FED7AA,#FDBA74);}
.kpi-purple .kpi-icon{background:linear-gradient(135deg,#E9D5FF,#C4B5FD);}
.kpi-content{flex:1;min-width:0;}
.kpi-label{font-size:13px;color:var(--text-mid);font-weight:600;}
.kpi-val{font-size:30px;font-weight:800;color:var(--text-dark);margin-top:2px;}
.kpi-unit{font-size:14px;font-weight:600;color:var(--text-light);margin-left:3px;}
.kpi-sub{font-size:12px;color:var(--accent-green);margin-top:2px;font-weight:600;}

/* ============== 仪表盘布局 ============== */
.dash-row{display:grid;gap:18px;margin-bottom:24px;}
.dash-2col{grid-template-columns:1.4fr 1fr;}
.dash-3col{grid-template-columns:1fr 1.2fr 1fr;}
.chart-card{padding:18px 22px;}
.chart-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;flex-wrap:wrap;gap:8px;}
.chart-title{font-size:15px;font-weight:700;color:var(--text-dark);display:flex;align-items:center;gap:6px;}
.chart-legend{display:flex;gap:14px;font-size:12px;color:var(--text-mid);flex-wrap:wrap;}
.chart-legend span{display:inline-flex;align-items:center;gap:4px;}
.chart-legend i{width:10px;height:10px;border-radius:3px;display:inline-block;}
.chart-legend.horizontal{justify-content:center;padding:8px 0 0 0;border-top:1px dashed #E2E8F0;margin-top:10px;}
.chart-svg{width:100%;height:220px;display:block;overflow:hidden;}
.chart-svg svg{display:block;width:100%;height:100%;}
.chart-svg-bubble{height:230px;}
.chart-svg-bar{height:230px;}
.ring-wrap{display:flex;align-items:center;gap:18px;padding:8px 4px 6px;}
.ring-wrap svg{width:170px;height:170px;flex-shrink:0;}
.ring-stats{display:flex;flex-direction:column;gap:14px;flex:1;font-size:14px;color:var(--text-mid);}
.ring-stats strong{font-size:18px;color:var(--text-dark);}

/* ============== 时间线 ============== */
.timeline{display:flex;flex-direction:column;gap:10px;max-height:240px;overflow-y:auto;}
.timeline-row{
  display:flex;align-items:center;gap:10px;font-size:13px;
  background:#F8FAFC;border-radius:12px;padding:10px 12px;transition:background .2s;
}
.tl-date{flex-shrink:0;color:var(--primary);font-weight:700;width:44px;}
.tl-text{flex:1;color:var(--text-dark);}
.tl-ico{margin-right:6px;}
.tl-done{color:#CBD5E1;font-size:16px;flex-shrink:0;}

/* ============== 学科统计 ============== */
.stat-grid{display:grid;gap:12px;}
.stat-tile{
  display:flex;align-items:center;gap:12px;
  background:#F8FAFC;border-radius:14px;padding:12px 14px;
}
.stat-tile .ico{
  width:40px;height:40px;border-radius:12px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font-size:20px;
}
.stat-tile .label{font-size:12px;color:var(--text-mid);}
.stat-tile .val{font-size:18px;font-weight:800;color:var(--text-dark);}

/* ============== 鼓励的话 ============== */
.encourage-box{
  background:linear-gradient(135deg,#FDF4FF,#EDE9FE);
  border-radius:16px;padding:20px;text-align:center;
}
.encourage-quote{font-size:16px;font-weight:700;color:#6B21A8;line-height:1.7;}
.encourage-author{font-size:12px;color:#92400E;margin-top:10px;font-weight:600;}
.encourage-actions{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap;}

/* ============== 今日任务 ============== */
.todo-list{display:flex;flex-direction:column;gap:12px;}
.todo-item{
  display:flex;align-items:center;gap:14px;padding:14px;
  background:#F8FAFC;border-radius:14px;transition:all .2s;
}
.todo-item.done{background:#F0FDF4;}
.todo-ic{
  width:50px;height:50px;border-radius:14px;flex-shrink:0;
  background:white;display:flex;align-items:center;justify-content:center;
  font-size:24px;box-shadow:var(--shadow-sm);
}
.todo-body{flex:1;min-width:0;}
.todo-title{font-size:15px;font-weight:700;}
.todo-item.done .todo-title{text-decoration:line-through;color:var(--text-light);}
.todo-sub{font-size:12px;color:var(--text-mid);margin-top:3px;}

/* ============== 生字卡片 ============== */
.char-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:10px;}
.char-card{
  aspect-ratio:1;border-radius:14px;background:var(--primary-light);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  cursor:pointer;transition:all .2s;font-size:14px;color:var(--primary);font-weight:700;
}
.char-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.char-card .ch{font-size:26px;color:var(--text-dark);font-weight:800;line-height:1.2;}
.char-card .py{font-size:11px;color:var(--primary);margin-top:2px;}

/* ============== 句子列表 ============== */
.sentence-list{display:flex;flex-direction:column;gap:10px;}
.sentence-item{
  display:flex;align-items:center;gap:12px;background:#F8FAFC;
  border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.6;
}
.sentence-item .sen-ico{flex-shrink:0;font-size:20px;}
.sentence-item .sen-text{flex:1;color:var(--text-dark);}
.sentence-item button{flex-shrink:0;}

/* ============== 口算 ============== */
.calc-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px;}
.calc-timer,.calc-progress{font-size:14px;color:var(--text-mid);font-weight:600;}
.calc-progress span{color:var(--primary);font-weight:800;font-size:16px;}
.calc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;}
.calc-item{
  background:#F8FAFC;border-radius:14px;padding:14px 16px;
  display:flex;align-items:center;gap:10px;font-size:18px;font-weight:700;
}
.calc-item input{
  flex:1;min-width:0;background:white;border-radius:10px;
  padding:8px 10px;font-size:18px;font-weight:700;text-align:center;
  border:2px solid #E2E8F0;transition:border-color .2s;color:var(--text-dark);
}
.calc-item input:focus{border-color:var(--primary);}
.calc-item.correct{background:#F0FDF4;}
.calc-item.correct input{border-color:var(--accent-green);}
.calc-item.wrong{background:#FEF2F2;}
.calc-item.wrong input{border-color:var(--accent-red);}
.calc-item .calc-ans{font-size:13px;font-weight:600;}

/* ============== 单词 ============== */
.word-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;}
.word-card{
  background:#F8FAFC;border-radius:12px;padding:12px;text-align:center;
  cursor:pointer;transition:all .2s;
}
.word-card:hover{background:var(--primary-light);transform:translateY(-2px);}
.word-card .w-en{font-size:15px;font-weight:800;color:var(--text-dark);}
.word-card .w-zh{font-size:12px;color:var(--text-mid);margin-top:3px;}

/* ============== 打字练习 ============== */
.type-box{background:#F8FAFC;border-radius:16px;padding:18px;}
.type-target{
  font-size:22px;font-weight:800;text-align:center;letter-spacing:1px;
  background:white;border-radius:14px;padding:20px 16px;margin-bottom:12px;
  word-break:break-all;color:var(--text-dark);min-height:72px;display:flex;align-items:center;justify-content:center;
}
.type-input{
  width:100%;background:white;border-radius:12px;border:2px solid #E2E8F0;
  padding:12px 16px;font-size:16px;text-align:center;transition:border-color .2s;color:var(--text-dark);
}
.type-input:focus{border-color:var(--primary);}
.type-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0;}
.type-stats>div{background:white;border-radius:12px;padding:10px;text-align:center;}
.ts-num{font-size:18px;font-weight:800;color:var(--primary);display:block;}
.ts-lbl{font-size:11px;color:var(--text-light);}
.type-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;}
.type-actions button{font-size:13px;padding:8px 14px;}

/* ============== 错题本 ============== */
.err-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px;}
.err-stat{
  background:white;border-radius:18px;padding:20px;text-align:center;
  box-shadow:var(--shadow-sm);cursor:pointer;transition:all .2s;
}
.err-stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.err-stat .e-num{font-size:32px;font-weight:800;color:var(--text-dark);}
.err-stat .e-sub{font-size:13px;color:var(--text-mid);margin-top:4px;}
.err-list{display:flex;flex-direction:column;gap:10px;}
.err-item{
  display:flex;align-items:center;gap:12px;background:#F8FAFC;
  border-radius:12px;padding:12px 14px;font-size:14px;
}
.err-item .e-tag{
  flex-shrink:0;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;
}
.err-item .e-text{flex:1;color:var(--text-dark);}
.err-item .e-btn{flex-shrink:0;font-size:12px;padding:6px 12px;}

/* ============== 成长打卡 ============== */
.checkin-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.hero-checkin{
  grid-column:1 / -1;
  background:linear-gradient(135deg,#E0F2FE 0%,#DBEAFE 100%);
  border-radius:var(--radius-lg);padding:24px 28px;
  display:flex;align-items:center;gap:24px;position:relative;overflow:hidden;
}
.checkin-emoji{font-size:56px;}
.checkin-streak{
  margin-top:10px;display:inline-block;background:rgba(255,255,255,.8);
  padding:8px 16px;border-radius:999px;font-weight:700;font-size:14px;
}
.week-stars{font-size:28px;font-weight:800;margin-bottom:14px;}
.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.day-cell{
  background:#F8FAFC;border-radius:12px;padding:10px 4px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:2px;
}
.day-cell.done{background:#DCFCE7;}
.day-w{font-size:12px;color:var(--text-mid);font-weight:700;}
.day-i{font-size:14px;font-weight:800;height:18px;}
.goal-list{display:flex;flex-direction:column;gap:10px;}
.goal-item{
  display:flex;align-items:center;gap:12px;background:#F8FAFC;
  border-radius:12px;padding:12px 14px;font-size:14px;
}
.goal-item .g-ic{flex-shrink:0;font-size:22px;}
.goal-item .g-text{flex:1;}
.goal-item .g-num{font-size:12px;color:var(--text-mid);font-weight:600;flex-shrink:0;}
.goal-item .g-bar{
  width:60px;height:6px;border-radius:3px;background:#E2E8F0;overflow:hidden;flex-shrink:0;
}
.goal-item .g-bar i{display:block;height:100%;background:var(--accent-green);border-radius:3px;}
.goal-item .g-check{flex-shrink:0;color:var(--accent-green);font-weight:800;font-size:16px;}
.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:12px;}
.badge-item{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  background:#F8FAFC;border-radius:14px;padding:14px 8px;text-align:center;
  transition:all .2s;cursor:default;
}
.badge-item.locked{opacity:.45;filter:grayscale(.6);}
.badge-item .b-ico{font-size:30px;}
.badge-item .b-name{font-size:11px;color:var(--text-mid);font-weight:600;}
.reward-list{display:flex;flex-direction:column;gap:10px;}
.reward-item{
  display:flex;align-items:center;gap:12px;background:#F8FAFC;
  border-radius:12px;padding:12px 14px;
}
.reward-item .r-cost{
  flex-shrink:0;padding:4px 10px;background:linear-gradient(135deg,#FFD93D,#F5B800);
  border-radius:999px;color:white;font-size:12px;font-weight:800;
}
.reward-item .r-text{flex:1;font-size:14px;}
.reward-item button{flex-shrink:0;font-size:12px;padding:7px 12px;}

/* ============== 家长报告 ============== */
.report-score,.report-checkin{text-align:center;padding:28px;}
.report-score-num{
  font-size:56px;font-weight:800;
  background:linear-gradient(135deg,#5B8DEF,#A78BFA);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  line-height:1.1;
}
.report-score-txt{font-size:14px;color:var(--text-mid);margin-top:8px;}
.report-checkin-num{font-size:32px;font-weight:800;color:var(--text-dark);}
.report-checkin-txt{font-size:14px;color:var(--text-mid);margin-top:8px;}
.duration-row{display:flex;flex-direction:column;gap:14px;}
.duration-item{display:flex;align-items:center;gap:12px;}
.duration-item .d-ico{font-size:22px;flex-shrink:0;}
.duration-item .d-name{width:48px;font-size:13px;color:var(--text-mid);font-weight:600;}
.duration-item .d-bar{flex:1;height:10px;border-radius:5px;background:#F1F5F9;overflow:hidden;}
.duration-item .d-bar i{display:block;height:100%;border-radius:5px;}
.duration-item .d-val{width:64px;text-align:right;font-size:13px;font-weight:800;color:var(--text-dark);flex-shrink:0;}
.highlight-list{display:flex;flex-direction:column;gap:10px;}
.hl-item{
  display:flex;gap:10px;background:#F8FAFC;border-radius:12px;
  padding:12px 14px;font-size:14px;line-height:1.6;
}
.hl-item .hl-ico{flex-shrink:0;font-size:18px;}
.hl-item.suggest{background:#FFF7ED;}

/* ============== 幼儿视图 ============== */
.pinyin-panel{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:14px;}
.pinyin-card{
  background:white;border-radius:16px;padding:16px;text-align:center;
  box-shadow:var(--shadow-sm);cursor:pointer;transition:all .2s;
}
.pinyin-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.pinyin-card .py-big{font-size:28px;font-weight:800;color:var(--primary);}
.pinyin-card .py-src{font-size:12px;color:var(--text-light);margin-top:4px;}
.pinyin-card .py-ex{font-size:14px;color:var(--text-mid);margin-top:4px;}
.zi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px;}
.zi-card{
  background:white;border-radius:16px;padding:18px;text-align:center;
  box-shadow:var(--shadow-sm);cursor:pointer;transition:all .2s;
}
.zi-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.zi-card .zi-big{font-size:44px;font-weight:800;color:var(--text-dark);}
.zi-card .zi-py{font-size:13px;color:var(--primary);margin-top:4px;font-weight:700;}
.zi-card .zi-words{font-size:13px;color:var(--text-mid);margin-top:6px;}
.count-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:14px;}
.count-card{
  background:white;border-radius:16px;padding:16px;text-align:center;
  box-shadow:var(--shadow-sm);cursor:pointer;transition:all .2s;
}
.count-card:hover{transform:translateY(-2px);}
.count-card .num-big{font-size:30px;font-weight:800;color:var(--accent-orange);}
.count-card .num-cn{font-size:14px;color:var(--text-mid);margin-top:4px;}
.count-card .num-en{font-size:12px;color:var(--text-light);}
.songs-pane{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;}
.song-card{
  background:white;border-radius:16px;padding:18px;cursor:pointer;
  box-shadow:var(--shadow-sm);transition:all .2s;
}
.song-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.song-icon{font-size:32px;margin-bottom:8px;}
.song-title{font-size:16px;font-weight:800;color:var(--text-dark);}
.song-desc{font-size:12px;color:var(--text-mid);margin-top:4px;}

/* ============== 理综文综学科 ============== */
.sub-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;}
.tip-list{display:flex;flex-direction:column;gap:12px;}
.tip-item{
  display:flex;align-items:flex-start;gap:12px;
  background:#F8FAFC;border-radius:14px;padding:14px 16px;
  cursor:pointer;transition:all .2s;
}
.tip-item:hover{background:var(--primary-light);transform:translateX(2px);}
.tip-ico{
  width:40px;height:40px;border-radius:12px;flex-shrink:0;
  background:white;display:flex;align-items:center;justify-content:center;
  font-size:20px;box-shadow:var(--shadow-sm);
}
.tip-body{flex:1;min-width:0;}
.tip-title{font-size:15px;font-weight:800;color:var(--text-dark);}
.tip-desc{font-size:13px;color:var(--text-mid);line-height:1.7;margin-top:4px;}
.formula-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.formula-card{
  background:linear-gradient(135deg,#EEF4FF,#F5F3FF);
  border-radius:14px;padding:16px;text-align:center;
  cursor:pointer;transition:all .2s;
}
.formula-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.formula-card .f-formula{
  font-size:15px;font-weight:800;color:var(--primary-dark);
  font-family:Consolas,"Courier New",monospace;line-height:1.5;word-break:break-all;
}
.formula-card .f-name{font-size:12px;color:var(--text-mid);margin-top:6px;font-weight:600;}

/* ============== 英语视图 2×2 网格 ============== */
.english-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  grid-template-rows:1fr 1fr;
  gap:16px;
}
.english-grid .sent-card{grid-row:span 2;display:flex;flex-direction:column;}
.english-grid .card{display:flex;flex-direction:column;min-height:0;padding:16px 20px;}
.english-grid .sent-box{flex:1;min-height:0;}
.english-grid .sent-target{padding:18px 14px;font-size:20px;line-height:1.4;}
.english-grid .sent-day-bar{height:10px;}
@media(max-width:1100px){
  .english-grid{grid-template-columns:1fr;}
  .english-grid .sent-card{grid-row:auto;}
}

/* ============== 艾宾浩斯每日单词 ============== */
.eb-card{padding:20px 24px 24px;}
.eb-overview{display:block;margin-bottom:16px;}
.eb-stat{
  background:#F8FAFC;border-radius:16px;padding:18px 10px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:4px;
}
.eb-stat-num{font-size:30px;font-weight:800;color:var(--primary-dark);line-height:1.1;}
.eb-stat-lbl{font-size:12px;color:var(--text-mid);font-weight:600;}
.eb-start{grid-column:1 / -1;text-align:center;margin-top:4px;}
.eb-study{display:none;max-width:560px;margin:0 auto;}
.eb-word-card{
  background:linear-gradient(135deg,#EEF4FF,#F5F3FF);
  border-radius:20px;padding:36px 24px;text-align:center;cursor:pointer;
  box-shadow:var(--shadow-sm);transition:all .2s;border:1px solid rgba(91,141,239,.1);
}
.eb-word-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.eb-word-card.flipped{background:linear-gradient(135deg,#F0FDF4,#DCFCE7);}
.eb-word{font-size:40px;font-weight:800;color:var(--text-dark);letter-spacing:1px;word-break:break-all;}
.eb-ipa{font-size:16px;color:var(--primary);margin-top:8px;font-weight:600;}
.eb-def{font-size:18px;color:var(--text-dark);margin-top:14px;line-height:1.7;font-weight:600;}
.eb-hint{font-size:12px;color:var(--text-light);margin-top:12px;}
.eb-actions{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap;align-items:center;}
/* 2026-10-09 王姐定制:单词卡内三排按钮 —— 阶段(彻底掌握/认识/模糊/忘记)、语音(听一听/读一读)、
   导航(上一个/下一个/再来一组)。后两排各自成行、行距与卡内按钮 gap 一致(10px,不用默认 16px),
   整组固定在标题下方,右侧词库再长也不会把它们顶下去。 */
.eb-actions.eb-voice-row{margin-top:10px;}
.eb-actions.eb-nav-row{margin-top:10px;}
.eb-btn{
  padding:12px 20px;border-radius:14px;font-weight:800;font-size:15px;
  transition:all .2s;color:white;
}
.eb-btn:hover{transform:translateY(-2px);}
.eb-know{background:linear-gradient(135deg,#34D399,#10B981);box-shadow:0 4px 12px rgba(16,185,129,.3);}
.eb-fuzzy{background:linear-gradient(135deg,#FB923C,#F97316);box-shadow:0 4px 12px rgba(249,115,22,.3);}
.eb-forget{background:linear-gradient(135deg,#F87171,#EF4444);box-shadow:0 4px 12px rgba(239,68,68,.3);}
.eb-master{background:linear-gradient(135deg,#A78BFA,#7C3AED);box-shadow:0 4px 12px rgba(124,58,237,.3);}
.eb-speak{padding:12px 18px;}
.eb-read{padding:12px 18px;}
.eb-result{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#F8FAFC;border-radius:12px;padding:10px 14px;font-size:14px;margin-top:10px;}
.eb-result-label{font-weight:700;color:var(--text-mid);font-size:13px;min-width:104px;}
.eb-result-val{font-size:12px;font-weight:700;color:var(--text-light);font-variant-numeric:tabular-nums;min-width:0;text-align:center;}
.eb-result-val.pass,.eb-result-val.mid,.eb-result-val.fail{font-size:20px;font-weight:800;min-width:74px;}
.eb-result-val.pass{color:var(--accent-green);}
.eb-result-val.mid{color:#F59E0B;}
.eb-result-val.fail{color:var(--accent-red);}
.eb-result-detail{font-size:12px;color:var(--text-light);flex:1;min-width:180px;}
.eb-playback{flex-shrink:0;display:none;padding:5px 12px;border-radius:9px;font-weight:700;font-size:12px;background:linear-gradient(135deg,#38BDF8,#0EA5E9);color:white;cursor:pointer;border:none;transition:all .2s;box-shadow:0 3px 8px rgba(14,165,233,.3);}
.eb-playback:hover{transform:scale(1.05);}
.eb-progress{text-align:center;font-size:13px;color:var(--text-mid);margin-top:14px;font-weight:600;}
.eb-done{display:none;text-align:center;padding:20px 0;}
.eb-done-emoji{font-size:56px;}
.eb-done-title{font-size:24px;font-weight:800;color:var(--text-dark);margin-top:8px;}
.eb-done-stats{display:flex;gap:18px;justify-content:center;margin:18px 0;flex-wrap:wrap;}
.eb-done-stats span{background:#F8FAFC;border-radius:12px;padding:10px 16px;font-size:14px;color:var(--text-mid);}
.eb-done-stats strong{font-size:20px;color:var(--text-dark);}
.eb-done-sub{font-size:14px;color:var(--text-mid);margin-bottom:18px;}
.eb-rule{
  margin-top:16px;background:#FEFCE8;border-radius:12px;padding:10px 14px;
  font-size:12px;color:#92400E;line-height:1.7;
}
.word-card.mastered{border:1px solid var(--accent-green);}
.word-card .w-err{font-size:10px;color:var(--accent-red);font-weight:700;margin-top:2px;}

/* ============== 句子练习(高中英语) ============== */
.sent-box{display:flex;flex-direction:column;gap:14px;}
.sent-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.sent-meta{display:flex;flex-direction:column;gap:4px;}
.sent-day{font-size:13px;color:var(--text-mid);font-weight:700;}
.sent-meta-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.sent-progress{font-size:12px;color:var(--accent-orange);font-weight:700;}
/* 2026-10-02 王姐定制:句子「来源」由"句子上方的库切换行"移到**句子框右下角**。
   绝对定位挂在 .sent-target-box(句子的定位父级)上。
   注意:不能把 .sent-src 塞进 .sent-target 内部 —— 那个节点是用 textContent 赋句子的,塞进去会被冲掉。 */
.sent-target-box{position:relative;}
.sent-src{
  position:absolute;right:14px;bottom:10px;
  font-size:11px;color:var(--text-light);font-weight:600;
  background:rgba(241,245,249,.85);border-radius:6px;padding:2px 8px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:min(240px,60%);
  pointer-events:none;
}
.sent-num{
  padding:4px 14px;border-radius:999px;
  background:linear-gradient(135deg,var(--accent-purple),var(--primary));
  color:white;font-weight:800;font-size:13px;
}
.sent-target{
  background:linear-gradient(135deg,#EEF4FF,#F5F3FF);
  border-radius:18px;padding:32px 18px;
  font-size:24px;font-weight:800;line-height:1.5;color:var(--text-dark);
  text-align:center;letter-spacing:0.3px;
  border:1px solid rgba(91,141,239,.1);
  min-height:90px;outline:none;cursor:text;transition:all .2s;white-space:pre-wrap;
}
.sent-target:focus{background:linear-gradient(135deg,#E0EFFF,#EAE5FF);box-shadow:0 0 0 3px rgba(91,141,239,.2);}
.sent-target:empty:before{content:attr(data-ph);color:#94A3B8;font-weight:500;font-size:14px;pointer-events:none;}
.sent-target-wrap{display:flex;flex-direction:column;gap:4px;}
.sent-target-hint{font-size:11px;color:var(--text-light);text-align:right;}
.sent-lib-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 10px;padding:8px 10px;background:#F4F6FB;border-radius:12px;}
.sent-lib-row .sent-day{margin-left:10px;}
.sent-lib-spacer{flex:1;}
/* 句子练习标题行:副标题靠右(2026-09-16 用户定制) */
.sent-title-hint{margin:0 0 0 auto;font-size:13px;font-weight:500;color:var(--text-mid);}
.sent-lib-lbl{font-size:12px;font-weight:700;color:var(--text-mid);}
.sent-lib-btn{padding:4px 12px;border-radius:999px;border:1px solid #CBD5E1;background:#FFFFFF;color:#475569;font-size:12px;font-weight:700;cursor:pointer;transition:all .2s;}
.sent-lib-btn:hover{border-color:#8B5CF6;color:#8B5CF6;}
.sent-lib-btn.active{background:linear-gradient(135deg,#8B5CF6,#6366F1);color:#FFFFFF;border-color:transparent;box-shadow:0 2px 8px rgba(99,102,241,.35);}
.sent-translate{
  background:#F8FAFC;border:2px dashed #CBD5E1;border-radius:14px;
  padding:14px;font-size:15px;color:#94A3B8;cursor:text;outline:none;
  transition:all .2s;width:100%;text-align:center;font-weight:600;
  min-height:46px;white-space:pre-wrap;
}
.sent-translate:empty:before{content:attr(data-ph);color:#94A3B8;}
.sent-translate:hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary);}
.sent-translate.shown{
  background:#F0FDF4;border:2px solid var(--accent-green);color:var(--text-dark);
  font-weight:700;text-align:left;
}
.sent-translate-hint{font-size:11px;color:var(--text-light);text-align:right;margin-top:-2px;}
.sent-ans{
  background:#FFF7ED;border:1px dashed #FDBA74;border-radius:12px;
  padding:12px 14px;font-size:14px;color:var(--text-dark);line-height:1.8;
  margin-top:2px;
}
.sent-gram{
  background:#F5F3FF;border:1px dashed #A78BFA;border-radius:12px;
  padding:12px 14px;font-size:14px;color:var(--text-dark);line-height:1.9;
  margin-top:2px;white-space:pre-wrap;word-break:break-word;
  box-shadow:inset 0 0 0 1px rgba(167,139,250,.08);
}
.sent-result{
  display:flex;flex-direction:column;gap:6px;
  background:#F8FAFC;border-radius:12px;padding:10px 14px;font-size:14px;
}
.sent-result-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.sent-result-label{font-weight:700;color:var(--text-mid);font-size:13px;min-width:108px;}
.sent-result-val{
  font-size:12px;font-weight:700;color:var(--text-light);
  font-variant-numeric:tabular-nums;min-width:0;text-align:center;
}
/* 已录音有分数时:大号高亮 */
.sent-result-val.pass,.sent-result-val.mid,.sent-result-val.fail{
  font-size:22px;font-weight:800;min-width:80px;
}
.sent-result-val.pass{color:var(--accent-green);}
.sent-result-val.mid{color:#F59E0B;}
.sent-result-val.fail{color:var(--accent-red);}
.sent-result-detail{font-size:12px;color:var(--text-light);flex:1;min-width:200px;}
.sent-playback{
  flex-shrink:0;display:none;padding:5px 12px;border-radius:9px;font-weight:700;font-size:12px;
  background:linear-gradient(135deg,#38BDF8,#0EA5E9);color:white;cursor:pointer;border:none;
  transition:all .2s;box-shadow:0 3px 8px rgba(14,165,233,.3);
}
.sent-playback:hover{transform:scale(1.05);}
.sent-rec-status{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;border-radius:12px;
  background:#FEF3C7;border:1px solid #FDE68A;
  font-size:14px;color:#92400E;font-weight:600;
}
.sent-rec-dot{
  width:10px;height:10px;border-radius:50%;background:var(--accent-red);
  box-shadow:0 0 0 0 rgba(248,113,113,.6);
  animation:sentPulse 1.4s infinite;
  flex-shrink:0;
}
@keyframes sentPulse{
  0%{box-shadow:0 0 0 0 rgba(248,113,113,.6);}
  70%{box-shadow:0 0 0 10px rgba(248,113,113,0);}
  100%{box-shadow:0 0 0 0 rgba(248,113,113,0);}
}
#sentRecLive{
  font-family:Consolas,"Courier New",monospace;
  font-size:11px;
  color:var(--accent-red);
  flex:1 1 0;min-width:0;
  text-align:left;line-height:1.45;
  white-space:normal;word-break:break-word;overflow-wrap:anywhere;
  max-height:52px;overflow-y:auto;
}
.sent-rec-stop{
  flex-shrink:0;padding:6px 16px;border-radius:10px;font-weight:800;font-size:14px;
  background:linear-gradient(135deg,#F87171,#EF4444);color:white;cursor:pointer;
  border:none;transition:all .2s;box-shadow:0 3px 10px rgba(239,68,68,.35);
}
.sent-rec-stop:hover{transform:scale(1.05);}
/* 语速档位 */
.sent-rate-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.sent-rate-lbl{font-size:12px;font-weight:700;color:var(--text-mid);}
.sent-rate-btn{
  padding:5px 12px;border-radius:999px;font-size:12px;font-weight:700;cursor:pointer;
  background:#F8FAFC;border:1px solid #E2E8F0;color:var(--text-mid);transition:all .2s;
}
.sent-rate-btn:hover{border-color:var(--primary);color:var(--primary);}
.sent-rate-btn.active{
  background:linear-gradient(135deg,var(--accent-purple),var(--primary));
  color:white;border-color:transparent;box-shadow:0 2px 6px rgba(91,141,239,.35);
}
/* 2026-10-09 王姐定制:按钮组由 6 列改 7 列 —— 新增「📋 返回待复习清单」放在「下一题」后面。
   该按钮只在学习模式(从待复习清单点进来)显示,其余时候第 7 格为空、不影响原 6 个按钮排布。 */
.sent-actions{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.sent-actions button{flex:1;min-width:0;padding:9px 2px;font-size:12px;white-space:nowrap;}
#sentBackToListBtn{font-size:11.5px;padding:9px 1px;}
@media(max-width:1100px){
  .sent-actions{grid-template-columns:repeat(4,1fr);}
}
.sent-footer{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text-mid);margin-top:6px;}
.sent-footer .sent-day-bar{flex:0.9;}
.sent-time-total{
  flex-shrink:0;font-size:12px;font-weight:600;color:var(--text-mid);
  background:#F1F5F9;border-radius:8px;padding:3px 10px;white-space:nowrap;
}
.sent-time-total b{color:var(--primary-dark);font-size:15px;}
.sent-time-btn{
  flex-shrink:0;padding:5px 10px;border-radius:8px;font-size:12px;font-weight:800;cursor:pointer;
  background:#F8FAFC;border:1px solid #CBD5E1;color:var(--text-mid);transition:all .2s;
}
.sent-time-btn:hover{border-color:var(--accent-orange);color:var(--accent-orange);}
.sent-duebar{
  align-items:center;gap:8px;background:#FFF4E5;border:1px solid #FFD7A8;border-radius:12px;
  padding:8px 12px;font-size:13px;color:#92400E;font-weight:600;line-height:1.5;
}
.sent-judge{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  background:#F8FAFC;border-radius:12px;padding:8px 12px;
}
.sent-judge-lbl{font-weight:700;font-size:13px;color:var(--text-mid);}
.sent-judge-btn{
  padding:7px 14px;border-radius:10px;font-weight:700;font-size:13px;
  border:2px solid transparent;transition:all .2s;cursor:pointer;
}
.sent-judge-btn.j-know{background:#E7F9F0;color:#0B9E5F;}
.sent-judge-btn.j-know:hover{border-color:#34D399;}
.sent-judge-btn.j-unfam{background:#FEF6E7;color:#D97706;}
.sent-judge-btn.j-unfam:hover{border-color:#FBBF24;}
.sent-judge-btn.j-wrong{background:#FEE7E7;color:#DC2626;}
.sent-judge-btn.j-wrong:hover{border-color:#F87171;}
.sent-judge-btn.active{transform:scale(1.06);box-shadow:0 2px 8px rgba(0,0,0,.12);}
.sent-judge-btn.j-know.active{border-color:#0B9E5F;background:#D1FAE5;}
.sent-judge-btn.j-unfam.active{border-color:#D97706;background:#FEF3C7;}
.sent-judge-btn.j-wrong.active{border-color:#DC2626;background:#FEE2E2;}
.sent-judge.has{box-shadow:inset 0 0 0 1px #CBD5E1;}
.sent-stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:8px;
}
.sent-stat-item{
  background:#F1F5F9;border-radius:10px;padding:7px 6px;
  text-align:center;font-size:11px;color:var(--text-mid);font-weight:600;
}
.sent-stat-item b{display:block;font-size:18px;color:var(--primary-dark);line-height:1.3;}
.sent-listen-state{font-size:11px;color:var(--text-light);line-height:1.6;word-break:break-all;}
.sent-footer-lbl{font-weight:700;flex-shrink:0;}
.sent-day-bar{flex:1;display:flex;gap:3px;height:14px;}
.sent-day-cell{flex:1;border-radius:3px;background:#E2E8F0;transition:background .2s;}
.sent-day-cell.done{background:var(--accent-green);}
.sent-day-cell.now{background:var(--primary);}
@media(max-width:768px){
  .eb-overview{grid-template-columns:repeat(2,1fr);}
  .eb-word{font-size:30px;}
}

/* ============== 📌 每日·我不会的 ============== */
.mist-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;}
.mist-select{
  padding:9px 14px;border-radius:12px;border:1px solid #E2E8F0;background:white;
  font-size:14px;font-weight:600;color:var(--text-dark);cursor:pointer;
}
.mist-search{
  flex:1;min-width:180px;padding:9px 14px;border-radius:12px;border:1px solid #E2E8F0;
  background:white;font-size:14px;color:var(--text-dark);
}
.mist-search:focus{border-color:var(--primary);}
.mist-stats{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;font-size:11px;color:var(--text-mid);align-items:center;}
.mist-stats .mist-stat b{font-size:16px;color:var(--text-dark);}
/* 2026-09-27 用户定制:错题列表上方的全选条 */
.mist-allbar{margin:-6px 0 10px;}
.mist-allbar .mist-all-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;padding:6px 12px;background:#fff;border:1px solid var(--border,#e5e7eb);border-radius:8px;font-size:13px;color:var(--text-dark);}
.mist-allbar .mist-all-label input[type=checkbox]{width:15px;height:15px;cursor:pointer;accent-color:var(--primary);}
.mist-allbar .mist-all-hint{font-size:12px;color:var(--text-light);}
/* 2026-10-02 王姐定制:全选条尾部「排序」下拉(小大排/大小排) */
.mist-allbar .mist-sort-wrap{display:inline-flex;align-items:center;gap:6px;margin-left:10px;padding:4px 10px;background:#fff;border:1px solid var(--border,#e5e7eb);border-radius:8px;font-size:13px;color:var(--text-dark);}
.mist-allbar .mist-sort-sel{border:1px solid var(--border,#e5e7eb);border-radius:6px;padding:2px 6px;font-size:13px;font-family:inherit;color:var(--text-dark);background:#F8FAFC;cursor:pointer;outline:none;}
.mist-allbar .mist-sort-sel:focus{border-color:var(--primary);}
/* 2026-09-26 用户定制:统计条快捷筛选按钮(待复习/未掌握/已掌握可点击) */
.mist-stats .mist-stat-btn{appearance:none;border:1px solid var(--line,#e3e8f0);background:#fff;border-radius:999px;padding:3px 9px;font-size:11px;color:var(--text-mid);cursor:pointer;transition:all .15s;font-family:inherit;line-height:1.4;white-space:nowrap;}
.mist-stats .mist-stat-btn b{font-size:13px;color:var(--text-dark);}
.mist-stats .mist-stat-btn:hover{border-color:var(--primary);color:var(--primary);}
.mist-stats .mist-stat-btn.on{background:var(--primary);border-color:var(--primary);color:#fff;}
.mist-stats .mist-stat-btn.on b{color:#fff;}
.mist-stats .mist-stat-btn.red{color:#dc2626;}
/* 2026-10-02 王姐定制:「未掌握」数量数字统一红色粗体;选中时浅红底红字保持可读 */
.mist-stats .mist-stat-btn.red b{color:#dc2626;font-weight:800;}
.mist-stats .mist-stat-btn.red.on{background:#fee2e2;border-color:#dc2626;color:#b91c1c;}
.mist-stats .mist-stat-btn.red.on b{color:#dc2626;}
/* 2026-10-02 王姐定制:掌握程度3个+错因分类3个,椭圆保持白色,外围区域变色(掌握程度=浅绿,错因分类=浅桔) */
.mist-stats .mist-stat-group{display:inline-flex;gap:4px;align-items:center;padding:3px 6px;border-radius:999px;}
.mist-stats .mist-stat-group.lv{background:#c7ebd1;}
.mist-stats .mist-stat-group.eb{background:#fbd9b4;}
.mist-list{display:flex;flex-direction:column;gap:14px;}
.mist-empty{
  background:white;border-radius:20px;padding:50px 20px;text-align:center;
  box-shadow:var(--shadow-sm);border:1px dashed #CBD5E1;
}
.mist-item{
  background:white;border-radius:18px;padding:16px 20px;
  box-shadow:var(--shadow-sm);border:1px solid #E2E8F0;transition:all .2s;
}
.mist-item:hover{box-shadow:var(--shadow-md);}
.mist-item.done{opacity:.72;}
.mist-item-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.mist-dot{font-size:16px;flex-shrink:0;}
.mist-subj{
  padding:3px 10px;border-radius:999px;background:var(--primary-light);
  color:var(--primary-dark);font-size:12px;font-weight:800;flex-shrink:0;
}
.mist-q-block{flex:1;min-width:160px;display:flex;flex-direction:column;gap:4px;}
.mist-q{font-size:15px;font-weight:700;color:var(--text-dark);line-height:1.5;}
.mist-q-opts{font-size:14px;font-weight:400;color:var(--text-2nd,#5a6472);line-height:1.6;}
/* 2026-09-29 王姐定制:题面图形单独一行放题干最下方,与文字分开 */
.mist-q-figs{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;margin-top:4px;padding-top:8px;border-top:1px dashed var(--line,#e5e7eb);}
.mist-q-figs img{max-width:100%;max-height:260px;width:auto;height:auto;border-radius:8px;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.08);}
.mist-mastered{color:var(--accent-green);font-size:12px;font-weight:800;flex-shrink:0;}
.mist-time{font-size:11px;color:var(--text-light);flex-shrink:0;}
.mist-item-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;align-items:center;}
.mist-tag{
  padding:2px 9px;border-radius:999px;background:#F5F3FF;color:#6B21A8;
  font-size:11px;font-weight:700;
}
.mist-diff{color:#F59E0B;font-size:12px;margin-left:4px;letter-spacing:1px;}
.mist-item-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;}
.mist-btn{padding:3.5px 7px;font-size:10px;border-radius:6px;}
/* 2026-10-09 王姐定制:错题卡片下方两行(标签行 + 按钮行)缩小到原值的 80%,比题面(15px)小、不喧宾夺主。
   限定在 .mist-item 卡片内 —— 错题详情弹窗(#mistDetail .mist-detail-tags)与其它模块不受影响。
   原值: .mist-tag 11px / .mist-diff 12px / .mist-btn 10px  →  80%: 8.8 / 9.6 / 8
   (先用过 50% = 5.5/6/5,王姐反馈"太小看不见",故回调到 80%) */
.mist-item .mist-item-tags .mist-tag{font-size:9px;}
.mist-item .mist-item-tags .mist-diff{font-size:9.5px;}
.mist-item .mist-item-actions .mist-btn{font-size:8px;}
/* 错题编号(2026-09-20):右下角,比题目略小、深灰色 */
.mist-no{margin-left:auto;font-size:12px;font-weight:400;color:#475569;letter-spacing:.3px;white-space:nowrap;}
/* 错题中心·日期范围筛选(2026-09-20) */
.mist-date-wrap{display:inline-flex;align-items:center;gap:4px;}
.mist-date-label{font-size:13px;font-weight:700;color:var(--text-dark);white-space:nowrap;}
.mist-date{padding:8px 10px;width:132px;}
.mist-date-sep{font-size:13px;font-weight:700;color:var(--text-dark);}
.mist-date-clear{padding:6px 9px;font-size:12px;border-radius:10px;line-height:1;}
.mist-date-clear:hover{color:var(--accent-red);border-color:var(--accent-red);}
.mist-answer{margin-top:12px;border-top:1px dashed #E2E8F0;padding-top:12px;}
.mist-answer-box{
  background:#F8FAFC;border-radius:12px;padding:14px 16px;
  font-size:14px;line-height:1.8;color:var(--text-dark);word-break:break-word;
}
.mist-answer-box img{max-width:100%;border-radius:8px;}
.mist-answer-meta{font-size:11px;color:var(--text-light);margin-top:8px;}
.mist-answer-meta .due{color:var(--accent-red);font-weight:700;}

/* 录入弹窗 */
.modal-wide{width:min(720px,94vw);}
.mist-form{display:flex;flex-direction:column;gap:14px;}
.mist-row{display:flex;gap:14px;flex-wrap:wrap;}
.mist-field{flex:1;min-width:140px;}
.mist-field.full{width:100%;flex:1 0 100%;}
.mist-field label{font-size:13px;font-weight:700;color:var(--text-mid);display:block;margin-bottom:6px;}
.mist-field label .req{color:var(--accent-red);}
.mist-field label .hint{font-weight:400;font-size:11px;color:var(--text-light);margin-left:6px;}
.mist-level{display:flex;gap:6px;}
.mist-level .lv{
  width:44px;height:40px;border-radius:10px;font-size:18px;
  background:#F8FAFC;border:2px solid transparent;transition:all .2s;
}
.mist-level .lv.active{border-color:var(--primary);background:white;box-shadow:var(--shadow-sm);}
.mist-stars{display:flex;gap:2px;font-size:22px;cursor:pointer;padding-top:4px;}
.mist-star{color:#E2E8F0;transition:color .15s;}
.mist-star.on{color:#FBBF24;}
.rich-toolbar{
  display:flex;align-items:center;gap:4px;flex-wrap:wrap;
  background:#F8FAFC;border-radius:10px 10px 0 0;padding:6px 8px;
  border:1px solid #E2E8F0;border-bottom:none;
}
.rt-btn{
  min-width:28px;height:28px;border-radius:7px;font-size:13px;color:var(--text-mid);
  background:white;border:1px solid #E2E8F0;transition:all .15s;padding:0 6px;
}
.rt-btn:hover{background:var(--primary-light);color:var(--primary);}
.rt-sep{width:1px;height:18px;background:#E2E8F0;margin:0 4px;}
.rich-box{
  min-height:96px;background:white;border:1px solid #E2E8F0;border-radius:0 0 10px 10px;
  padding:12px 14px;font-size:15px;line-height:1.8;color:var(--text-dark);
  word-break:break-word;outline:none;
}
.rich-box:focus{border-color:var(--primary);}
.rich-box img{max-width:100%;border-radius:8px;margin:4px 0;}
.rich-box:empty:before{content:attr(data-ph);color:#CBD5E1;pointer-events:none;}
.mist-input{
  width:100%;padding:10px 14px;border-radius:10px;border:1px solid #E2E8F0;
  background:white;font-size:14px;color:var(--text-dark);
}
.mist-input:focus{border-color:var(--primary);}
.mist-rec{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.mist-rec-timer{font-size:14px;font-weight:700;color:var(--accent-red);font-variant-numeric:tabular-nums;}
.mist-audio-box{display:flex;align-items:center;gap:8px;}

/* 详情弹窗 */
.mist-detail-q,.mist-detail-a{margin-bottom:14px;}
.mist-detail-label{font-size:12px;font-weight:800;color:var(--text-mid);margin-bottom:6px;}
.mist-detail-content{
  background:#F8FAFC;border-radius:12px;padding:14px 16px;
  font-size:15px;line-height:1.9;color:var(--text-dark);word-break:break-word;
}
.mist-detail-content img{max-width:100%;border-radius:8px;}
.mist-detail-a summary{cursor:pointer;font-weight:700;color:var(--primary);padding:8px 0;font-size:14px;}
/* 2026-10-02 王姐定制:答案/解析分层排版——步骤标题加粗、结论墨绿加粗、关键信息青色、易错红色加粗 */
.mist-ans-step{font-weight:800;color:var(--text-dark);}
.mist-ans-warn{display:block;font-weight:800;color:#dc2626;background:#fef2f2;border-radius:8px;padding:4px 10px;margin:4px 0;}
.mist-ans-concl{display:block;font-weight:800;color:#047857;margin:4px 0;}
.mist-ans-key{color:#0d9488;font-weight:700;}
.mist-detail-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;}
/* 2026-10-03 王姐定制:详情弹窗「放大」模式——题目在左、解析在右并排大字显示,再点还原 */
/* 2026-10-03 王姐:右上角按钮组——放大在前、关闭(X)在后,两者间隔 1cm;整组固定不随内容滚走 */
.mist-detail-topbtns{
  position:absolute;top:14px;right:14px;z-index:6;
  display:flex;align-items:center;gap:1cm;
}
.mist-detail-topbtns .modal-close{position:static;flex:0 0 auto;}
.mist-zoom-btn{font-size:15px;line-height:1;}
.mist-detail-close{font-size:18px;font-weight:800;line-height:1;}
/* 2026-10-03 王姐:错题编号挪到标题后面(内联小章,不再绝对定位挂在右上角) */
.mist-detail-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.mist-detail-title-row .mist-detail-no{position:static;display:inline-block;}
/* 放大模式下标题栏/按钮固定,只有内容区滚动——✕ 和 ⛶ 始终可见,不会随内容滚走 */
#mistDetail.zoomed .modal-box{display:flex;flex-direction:column;overflow:hidden;}
#mistDetail.zoomed .mist-detail-body{flex:1;overflow-y:auto;min-height:0;}
#mistDetail.zoomed .modal-actions{flex-shrink:0;}
#mistDetail.zoomed .modal-box{width:min(1500px,97vw);max-height:96vh;}
#mistDetail.zoomed .modal-title{font-size:24px;}
/* 2026-10-04 王姐:右侧解析很长时,左侧题目要"跟随滚动条一起走",方便随时看题——
   做法:左栏(题目+题型+标记区)整体一栏 .mist-detail-left,放大模式下 position:sticky 吸顶,
   右侧滚到哪题目都留在视野里;题目本身比可视区还高时,sticky 自动退化成跟着一起滚,
   照样能看全(不会把题目下半截永远挡住)。
   小窗(非放大)模式:左栏容器 display:contents「透明」,靠 order 还原原顺序
   题目→解析→标签→录音→元信息,排版与从前完全一致。 */
.mist-detail-body{display:flex;flex-direction:column;}
.mist-detail-left{display:contents;}
.mist-detail-q{order:0;}
.mist-detail-a{order:1;}
.mist-detail-tags{order:2;}
.mist-detail-audio{order:3;}
.mist-detail-meta{order:4;}
#mistDetail.zoomed .mist-detail-body{display:grid;grid-template-columns:1fr 1fr;column-gap:22px;align-items:start;}
#mistDetail.zoomed .mist-detail-left{
  display:block;grid-column:1;grid-row:1;align-self:start;
  position:sticky;top:0;z-index:2;background:#fff;
}
#mistDetail.zoomed .mist-detail-a{grid-column:2;grid-row:1;margin-bottom:0;}
#mistDetail.zoomed .mist-detail-content{font-size:17px;line-height:2.05;padding:18px 20px;}
#mistDetail.zoomed .mist-detail-a summary{font-size:16px;}
@media (max-width:900px){
  #mistDetail.zoomed .mist-detail-body{display:flex;flex-direction:column;}
  #mistDetail.zoomed .mist-detail-left{position:static;display:contents;background:none;}
  #mistDetail.zoomed .mist-detail-a{margin-bottom:14px;}
}
.mist-detail-audio{margin-bottom:12px;font-size:13px;color:var(--text-mid);}
.mist-detail-audio label{font-weight:700;margin-right:8px;}
.mist-detail-meta{font-size:12px;color:var(--text-light);line-height:2;}
.mist-lv-pick{
  cursor:pointer;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700;
  background:#F8FAFC;border:1px solid transparent;margin-right:4px;
}
.mist-lv-pick.on{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark);}
/* 详情顶部题型选择器(王姐红框位置) */
.mist-qtype-top{display:inline-flex;gap:2px;flex-wrap:wrap;}
/* 自动判断回填的「预判态」:虚线边框+浅色,区别于已保存的手动值 */
.mist-lv-pick.guess{border:1px dashed var(--primary);background:transparent;color:var(--text-mid);opacity:.75;}
/* 2026-10-01 王姐:顶部题型被标示出来的项,底色显示蓝色(已存=实心蓝,预判=浅蓝) */
.mist-qtype-top .mist-lv-pick.on{background:var(--primary);border-color:var(--primary);color:#fff;}
.mist-qtype-top .mist-lv-pick.guess{background:var(--primary-light);border:1px dashed var(--primary);color:var(--primary-dark);opacity:1;}

/* 2026-10-03 王姐:详情右下角「确认/关闭」行——放在按钮排(下一题)下面,靠右对齐
   2026-10-04 王姐:两钮间隔拉开到 2cm;10-04 再加固:width:100%+justify-self 确保任何容器下都横跨整行靠右 */
.mist-detail-confirm-row{grid-column:1 / -1;width:100%;justify-self:stretch;display:flex;justify-content:flex-end;gap:2cm;margin-top:4px;}
.mist-detail-confirm-row .btn-primary,.mist-detail-confirm-row .btn-ghost{min-width:96px;}

/* 2026-10-03 王姐:举一反三题的「掌握程度/错因分类」标记区(与详情弹窗同款选择器) */
.mist-sim-mark{
  margin-top:14px;padding:12px 14px;border-radius:12px;
  background:#F8FAFC;border:1px dashed #CBD5E1;
  display:flex;flex-direction:column;gap:8px;
}
.mist-sim-mark-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.mist-sim-mark-label{font-size:12px;font-weight:800;color:var(--text-mid);flex:0 0 auto;}
.mist-sim-mark-tip{font-size:11.5px;color:var(--text-light);line-height:1.6;}

/* 学科管理 */
.mist-subject-list{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;}
.mist-subject-row{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:#F8FAFC;border-radius:10px;padding:10px 14px;font-size:14px;font-weight:700;
}
.mist-subject-count{font-size:11px;color:var(--text-light);font-weight:400;}
.mist-add-subject{display:flex;gap:10px;}

/* ============== 通用弹窗 ============== */
.modal-overlay{
  position:fixed;inset:0;background:rgba(15,23,42,.45);
  display:none;align-items:center;justify-content:center;z-index:1200;
  padding:24px;backdrop-filter:blur(4px);
}
.modal-overlay.open{display:flex;}
.modal-box{
  width:min(520px,94vw);max-height:88vh;overflow-y:auto;
  background:white;border-radius:24px;padding:28px;position:relative;
  box-shadow:0 20px 60px rgba(0,0,0,.2);animation:popIn .25s ease;
}
@keyframes popIn{from{opacity:0;transform:scale(.95) translateY(10px);}to{opacity:1;transform:none;}}
.modal-close{
  position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:50%;
  background:#F1F5F9;color:#0F172A;font-size:16px;display:flex;align-items:center;
  justify-content:center;cursor:pointer;transition:all .15s;
}
.modal-close:hover{background:#FEE2E2;color:#DC2626;transform:rotate(90deg);}
.modal-title{font-size:20px;font-weight:800;margin-bottom:16px;color:var(--text-dark);}
/* 2026-10-02 王姐:错题详情右上角显示错题编号(关闭按钮左侧) */
.mist-detail-no{
  position:absolute;top:20px;right:58px;z-index:1;
  background:#F1F5F9;border:1px solid #E2E8F0;border-radius:999px;
  padding:3px 12px;font-size:13px;font-weight:800;color:#475569;
  letter-spacing:.5px;pointer-events:none;
}
.big-char{font-size:96px;text-align:center;font-weight:800;color:var(--text-dark);margin:10px 0;}
.info-block{border-radius:12px;padding:14px;margin-bottom:14px;font-size:14px;line-height:1.8;}
.info-block .ib-title{font-weight:700;margin-bottom:6px;}
.ib-blue{background:var(--primary-light);}
.ib-yellow{background:#FEF3C7;}
.ib-green{background:#DCFCE7;}
.modal-actions{display:flex;justify-content:center;gap:10px;margin-top:18px;flex-wrap:wrap;}

/* ============== 学生信息弹窗 ============== */
.modal-student{text-align:center;}
.student-avatar{
  width:72px;height:72px;border-radius:50%;margin:6px auto 10px;
  background:linear-gradient(135deg,#F472B6,#A78BFA);
  display:flex;align-items:center;justify-content:center;
  color:white;font-size:28px;font-weight:800;
}
.student-name{font-size:20px;font-weight:800;color:var(--text-dark);margin-bottom:16px;}
.student-fields{display:flex;flex-direction:column;gap:10px;text-align:left;}
.student-row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:#F8FAFC;border-radius:12px;padding:12px 16px;
}
.s-label{font-size:13px;color:var(--text-mid);font-weight:600;flex-shrink:0;}
.student-row input{
  flex:1;text-align:right;font-size:14px;font-weight:700;color:var(--text-dark);
  background:transparent;
}
.s-val{font-size:14px;font-weight:700;color:var(--text-dark);}

/* ============== Toast ============== */
.toast{
  position:fixed;bottom:30px;left:50%;transform:translateX(-50%) translateY(20px);
  padding:12px 24px;background:var(--text-dark);color:white;border-radius:999px;
  font-weight:600;box-shadow:var(--shadow-lg);opacity:0;transition:all .3s;z-index:2000;
  max-width:90vw;text-align:center;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* ============== 响应式 ============== */
@media(max-width:1200px){
  .kpi-row{grid-template-columns:repeat(2,1fr);}
  .dash-3col{grid-template-columns:1fr;}
}
@media(max-width:980px){
  .dash-2col{grid-template-columns:1fr;}
  .checkin-grid{grid-template-columns:1fr;}
  .sub-grid{grid-template-columns:1fr;}
  .content{padding:18px;}
  .topbar{padding:0 14px;}
  .brand-subtitle{display:none;}
  .age-btn{min-width:48px;padding:4px 8px;font-size:11px;}
  .age-sub{display:none;}
}
@media(max-width:768px){
  .menu-btn{display:flex;}
  .sidebar{
    position:fixed;left:0;top:64px;bottom:0;z-index:90;
    transform:translateX(-100%);transition:transform .25s ease;background:white;box-shadow:var(--shadow-lg);
  }
  .sidebar.open{transform:translateX(0);}
  .topbar-right .badge-chip span:not(.bc-count),.topbar-right .user-chip span{display:none;}
  .kpi-row{grid-template-columns:1fr 1fr;gap:12px;}
  .kpi-card{padding:14px;gap:10px;}
  .kpi-icon{width:48px;height:48px;font-size:22px;border-radius:14px;}
  .kpi-val{font-size:22px;}
  .hero-banner{padding:20px;flex-direction:column;align-items:flex-start;gap:14px;}
  .hero-right{text-align:left;}
  .hero-title{font-size:26px;}
  .err-summary{grid-template-columns:1fr 1fr;}
}

/* ============== 高中数学·知识图谱(人教A版2019) ============== */
.mkg-card{padding:20px 22px;}
.mkg-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:12px;}
.mkg-title{font-size:18px;font-weight:800;color:var(--text-dark);display:flex;align-items:center;gap:8px;}
.mkg-ver{font-size:11px;color:var(--accent-purple);background:#F3E8FF;border-radius:999px;padding:2px 10px;font-weight:700;}
.mkg-booktag{font-size:12px;color:var(--text-mid);background:#F8FAFC;border:1px solid #E2E8F0;border-radius:999px;padding:4px 12px;font-weight:600;}
.mkg-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.mkg-tab{
  display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:12px;cursor:pointer;
  border:1px solid #E2E8F0;background:#F8FAFC;font-size:13px;font-weight:700;color:var(--text-mid);
  transition:all .2s;
}
.mkg-tab:hover{border-color:var(--primary);color:var(--primary);}
.mkg-tab.active{
  background:linear-gradient(135deg,var(--accent-purple),var(--primary));color:#fff;
  border-color:transparent;box-shadow:0 4px 12px rgba(91,141,239,.35);
}
.mkg-tab-ico{font-size:16px;}
.mkg-tab-nm{white-space:nowrap;}
.mkg-list{display:flex;flex-direction:column;gap:8px;}
.mkg-ch{border:1px solid #E2E8F0;border-radius:14px;background:#fff;overflow:hidden;transition:box-shadow .2s;}
.mkg-ch.open{box-shadow:0 6px 18px rgba(91,141,239,.12);border-color:#C7D9FB;}
.mkg-ch-head{
  width:100%;display:flex;align-items:center;gap:12px;padding:13px 16px;cursor:pointer;
  background:linear-gradient(135deg,#F8FAFC,#F1F5F9);border:none;text-align:left;transition:background .2s;
}
.mkg-ch.open .mkg-ch-head{background:linear-gradient(135deg,#EEF4FF,#F5F3FF);}
.mkg-ch-no{flex-shrink:0;font-size:11px;font-weight:800;color:var(--primary-dark);background:#E3EDFF;border-radius:6px;padding:2px 8px;}
.mkg-ch-t{flex:1;font-size:15px;font-weight:800;color:var(--text-dark);}
.mkg-ch-badges{flex-shrink:0;font-size:11px;color:var(--text-light);font-weight:600;display:flex;gap:4px;flex-wrap:wrap;}
.mkg-arrow{color:var(--primary);font-size:12px;flex-shrink:0;}
.mkg-ch-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:12px;border-top:1px dashed #E2E8F0;}
.mkg-sec{background:#F8FAFC;border-radius:12px;padding:12px 14px;}
.mkg-sec-warn{background:#FFF7ED;border:1px dashed #FDBA74;}
.mkg-sec-h{font-size:13px;font-weight:800;color:var(--text-mid);margin-bottom:8px;}
.mkg-sec-warn .mkg-sec-h{color:#C2410C;}
.mkg-ol{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:7px;}
.mkg-ol li{font-size:13px;line-height:1.65;color:var(--text-mid);padding-left:14px;position:relative;}
.mkg-ol li::before{content:"";position:absolute;left:2px;top:9px;width:5px;height:5px;border-radius:50%;background:var(--primary);}
.mkg-sec-warn .mkg-ol li::before{background:#F97316;}
.mkg-ol li b{color:var(--text-dark);margin-right:6px;font-weight:800;}
.mkg-sec-warn .mkg-ol li b{color:#C2410C;}
.mkg-ol li span{color:var(--text-mid);}
.mkg-fs{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;}
.mkg-f{background:linear-gradient(135deg,#EEF4FF,#F5F3FF);border:1px solid rgba(91,141,239,.15);border-radius:10px;padding:9px 12px;}
.mkg-f-f{font-size:14px;font-weight:800;color:var(--text-dark);font-family:Consolas,"Cambria Math","Times New Roman",serif;letter-spacing:.2px;}
.mkg-f-n{font-size:11px;color:var(--text-light);margin-top:3px;font-weight:600;}
.mkg-none{color:#CBD5E1;}
@media(max-width:768px){
  .mkg-tab-nm{font-size:12px;}
  .mkg-ch-t{font-size:14px;}
  .mkg-ch-badges{display:none;}
  .mkg-fs{grid-template-columns:1fr 1fr;}
}

/* ============== 口算折叠卡片 ============== */
.calc-collapse{padding:0;overflow:hidden;}
.calc-collapse[open]{padding:0;}
.calc-collapse > *:not(summary){padding:0 24px 20px;}
.calc-collapse > .calc-toolbar:not(summary){padding-top:14px;}
.calc-summary{
  display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none;
  padding:16px 24px;font-size:15px;font-weight:800;color:var(--text-dark);user-select:none;
}
.calc-summary::-webkit-details-marker{display:none;}
.calc-summary::after{content:"▼";margin-left:auto;font-size:11px;color:var(--primary);transition:transform .2s;}
.calc-collapse[open] .calc-summary::after{transform:rotate(180deg);}
.calc-summary-ico{font-size:18px;}
.calc-summary-tip{font-size:11px;font-weight:600;color:var(--text-light);background:#F1F5F9;border-radius:999px;padding:2px 10px;margin-left:2px;}

/* ============== 高中数学图谱 · 新版(教材/章节下拉 + 5 板块) ============== */
.mkg-pick{display:flex;flex-direction:row;gap:12px;margin:6px 0 14px;background:#F8FAFC;border:1px solid #E2E8F0;border-radius:12px;padding:12px 16px;flex-wrap:wrap;}
.mkg-pick-row{display:flex;align-items:center;gap:8px;flex:1;min-width:260px;background:#fff;border:1px solid #E2E8F0;border-radius:10px;padding:6px 10px;}
.mkg-pick-ico{font-size:16px;flex-shrink:0;}
.mkg-pick-lbl{font-size:12px;font-weight:800;color:var(--text-mid);min-width:34px;letter-spacing:.5px;flex-shrink:0;}
.mkg-pick-row .mkg-select{flex:1;min-width:140px;border:none;background:transparent;font-size:13px;}
.mkg-select{
  min-width:230px;padding:9px 12px;border-radius:10px;border:1px solid #CBD5E1;background:#fff;
  font-size:14px;font-weight:700;color:var(--text-dark);cursor:pointer;transition:border-color .2s;
}
.mkg-select:hover,.mkg-select:focus{border-color:var(--primary);outline:none;}
.mkg-btabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.mkg-btab{
  padding:9px 14px;border-radius:999px;cursor:pointer;font-size:12px;font-weight:800;
  border:1px solid #E2E8F0;background:#fff;color:var(--text-mid);transition:all .2s;white-space:nowrap;
}
.mkg-btab:hover{border-color:var(--primary);color:var(--primary);}
.mkg-btab.active{
  background:linear-gradient(135deg,var(--accent-purple),var(--primary));color:#fff;
  border-color:transparent;box-shadow:0 4px 12px rgba(91,141,239,.35);
}
.mkg-body{display:flex;flex-direction:column;gap:12px;}
.mkg-sec-h{display:flex;align-items:center;gap:8px;justify-content:space-between;font-size:13px;font-weight:800;color:var(--text-mid);margin-bottom:8px;}
.mkg-sec-warn .mkg-sec-h{color:#C2410C;}
.mkg-cnt{font-size:11px;color:var(--text-light);background:#E2E8F0;border-radius:999px;padding:1px 8px;font-weight:800;}
.mkg-sec-warn .mkg-cnt{background:#FED7AA;color:#9A3412;}
/* 高考真题 */
.mkg-zt{background:#F0FDF4;border:1px solid #BBF7D0;border-radius:12px;padding:12px 14px;line-height:1.6;}
.mkg-zt-q b{color:var(--accent-green);margin-right:8px;}
.mkg-zt-q span:not(.katex):not(.katex *){font-weight:800;color:var(--text-dark);font-size:14px;}
/* 2026-09-26 王姐反馈:幂指数与底数字号不协调——排除 KaTeX 公式,使底数用正文字号、上下标按 0.7em 自动成比例 */
.mkg-zt-q .katex{font-size:16px;font-weight:normal;}
.mkg-zt-row{display:flex;gap:8px;font-size:13px;color:var(--text-mid);margin-top:6px;}
.mkg-zt-lbl{flex-shrink:0;font-weight:800;color:#15803D;font-size:12px;padding-top:1px;}
/* 高考真题:答案折叠 + 举一反三(2026-09-16 用户定制) */
.mkg-ans-box{margin-top:8px;padding:10px 12px;background:#FFFFFF;border:1px dashed #86EFAC;border-radius:10px;font-size:13px;color:var(--text-dark);line-height:1.7;}
.mkg-ans-btn{margin-top:6px;padding:1px 4px;border-radius:999px;border:1px solid #86EFAC;background:#FFFFFF;color:#15803D;font-size:9px;font-weight:700;cursor:pointer;transition:all .2s;}
.mkg-ans-btn:hover{background:#15803D;color:#FFFFFF;}
.mkg-yst{margin-top:10px;border-top:1px dashed #86EFAC;padding-top:8px;}
.mkg-yst-h{font-weight:800;color:#7C3AED;font-size:13px;margin-bottom:6px;}
.mkg-yst-item{background:#FAF5FF;border:1px solid #DDD6FE;border-radius:10px;padding:10px 12px;margin-top:6px;}
.mkg-yst-item .mkg-zt-q b{color:#7C3AED;}
/* 高考真题:勾选打印(2026-09-16 用户定制) */
.mkg-print-btn{padding:6px 18px;border-radius:999px;border:none;background:linear-gradient(135deg,#5B8DEF,#A78BFA);color:#FFF;font-size:13px;font-weight:800;cursor:pointer;box-shadow:0 2px 8px rgba(91,141,239,.35);transition:all .2s;flex-shrink:0;}
.mkg-print-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(91,141,239,.45);}
.mkg-print-btn2{background:#FFFFFF;color:#5B8DEF;border:2px solid #5B8DEF;box-shadow:none;}
.mkg-print-btn2:hover{background:#EEF4FF;box-shadow:0 2px 8px rgba(91,141,239,.25);}
.mkg-print-ck{display:inline-flex;align-items:center;margin-right:6px;cursor:pointer;flex-shrink:0;}
.mkg-print-ck input{width:16px;height:16px;accent-color:#5B8DEF;cursor:pointer;}
/* 列表勾选框布局适配 + 设问同行小字 */
.mkg-ol li{display:flex;align-items:flex-start;gap:6px;}
.mkg-ol li .mkg-print-ck{padding-top:2px;}
.mkg-ol li b{flex-shrink:0;margin-right:4px;}
.mkg-f{display:flex;align-items:flex-start;gap:8px;}
.mkg-f .mkg-f-w{flex:1;}
.mkg-zt-ask{font-size:12px;color:#94A3B8;font-weight:400;margin-left:10em;}
.mkg-zt-src{float:right;font-size:11px;color:#94A3B8;font-weight:400;margin-left:10em;}
.mkg-zt-q .mkg-zt-ask{color:#94A3B8!important;font-weight:400!important;}
.mkg-zt-q .mkg-zt-src{color:#94A3B8!important;font-weight:400!important;font-size:11px!important;}
/* 选择题选项排版(2026-09-16 用户定制):A B / C D 两行两列,字母与答案紧挨,选项间留3字间隔 */
.mkg-opts{display:grid;grid-template-columns:1fr 1fr;column-gap:3em;row-gap:8px;margin-top:6px;}
.mkg-opt{display:flex;align-items:baseline;min-width:0;}
.mkg-opt-letter{font-size:1.5em!important;font-weight:700!important;line-height:1;margin-right:4px;flex-shrink:0;}
.mkg-opt-text{flex:1;min-width:0;word-break:break-word;}
/* 选择题空括号可填写(2026-09-20 用户定制) */
.mkg-blank{display:inline-flex;min-width:46px;height:28px;align-items:center;justify-content:center;margin:0 4px;padding:0 8px;border:1.5px dashed #94A3B8;border-radius:6px;background:#F8FAFC;color:#0F172A;font-weight:700;font-size:1em;cursor:pointer;vertical-align:middle;position:relative;user-select:none;}
.mkg-blank:hover{border-color:#5B8DEF;background:#EFF6FF;}
.mkg-blank.open{border-color:#5B8DEF;background:#EFF6FF;}
.mkg-blank-pop{display:inline-flex;gap:3px;align-items:center;}
.mkg-blank-op{min-width:26px;height:26px;padding:0 4px;border-radius:6px;border:1px solid #5B8DEF;background:#FFFFFF;color:#1D4ED8;font-weight:700;font-size:13px;cursor:pointer;line-height:1;}
.mkg-blank-op:hover{background:#2563EB;color:#fff;}
.mkg-blank-clr{min-width:22px;height:26px;padding:0 4px;border-radius:6px;border:1px solid #E2E8F0;background:#FFFFFF;color:#94A3B8;font-size:13px;cursor:pointer;line-height:1;}
@media print{.mkg-blank{border:1px solid #999;background:#fff;color:#000;}}
/* 提示标签红粗体(2026-09-20 用户定制):命题意图/解题思路 */
.mkg-klabel{color:#DC2626;font-weight:700;}
/* 解析内表格(2026-09-27 王姐定制:解题思路里的分布表) */
.mkg-ans-box table.mkg-ktable{border-collapse:collapse;margin:8px auto;font-size:12.5px;}
.mkg-ans-box table.mkg-ktable th,.mkg-ans-box table.mkg-ktable td{border:1px solid #CBD5E1;padding:3px 10px;text-align:center;}
.mkg-ans-box table.mkg-ktable td:first-child,.mkg-ans-box table.mkg-ktable th:first-child{background:#F1F5F9;font-weight:600;}
/* 来源右下角靠边(2026-09-16 用户定制):灰色小字右对齐 */
.mkg-src-br{margin-top:8px;text-align:right;font-size:11px;color:#94A3B8;font-weight:400;line-height:1.4;}
/* 2026-10-02 错题编号反写(王姐定制):错数>0 的题在右下角、来源上方显示错题本编号 */
.mkg-mistno-br{margin-top:6px;text-align:right;font-size:11px;font-weight:700;color:#DC2626;line-height:1.4;}
/* 真题/变式 配图尺寸(2026-09-20 用户定制):题面截图缩小到50%、解析截图25%、大题整题图保持全宽;字体视觉大小与题目文字相近 */
.mkg-zt-imgbox{margin:8px 0 4px;}
.mkg-zt-imgbox img{max-width:50%;max-height:none;display:block;border:1px solid #E2E8F0;border-radius:8px;}
.mkg-zt-imgbox.mkg-bigimg img{max-width:100%;}
.mkg-zt-imgbox.mkg-kimgbox img{max-width:25%;}
.mkg-yst-item .mkg-zt-imgbox img{max-height:none;}
/* 真题对错统计按钮(2026-09-16 用户定制) */
.mkg-stat-wrap{display:inline-flex;gap:2px;margin-left:10em;vertical-align:middle;flex-wrap:wrap;}
.mkg-stat-btn{padding:1px 3px;border-radius:999px;border:1px solid #CBD5E1;background:#FFFFFF;font-size:9px;font-weight:700;cursor:pointer;transition:all .15s;}
.mkg-stat-btn:active{transform:scale(.94);}
.mkg-stat-btn.st-ok{color:#15803D;border-color:#86EFAC;background:#F0FDF4;}
.mkg-stat-btn.st-fuzzy{color:#D97706;border-color:#FCD34D;background:#FFFBEB;}
.mkg-stat-btn.st-wrong{color:#DC2626;border-color:#FCA5A5;background:#FEF2F2;}
/* 大类全选(2026-09-16 用户定制) */
.mkg-sec-all{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:#5B8DEF;cursor:pointer;white-space:nowrap;}
.mkg-sec-all input{width:15px;height:15px;accent-color:#5B8DEF;cursor:pointer;}
.mkg-all-bar{margin-bottom:8px;}
/* 错题集 */
.mkg-empty{background:#FFF7ED;border:1px dashed #FDBA74;border-radius:12px;padding:16px;font-size:13px;color:#9A3412;line-height:1.7;}
.mkg-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px;}
.mkg-wrong{display:flex;flex-direction:column;gap:8px;}
.mkg-w{background:#fff;border:1px solid #E2E8F0;border-radius:10px;padding:10px 12px;}
.mkg-w-head{display:flex;align-items:center;gap:8px;margin-bottom:5px;}
.mkg-w-lv{font-size:11px;font-weight:800;border-radius:999px;padding:1px 9px;}
.mkg-w-lv.red{background:#FEE2E2;color:#DC2626;}
.mkg-w-lv.yellow{background:#FEF3C7;color:#B45309;}
.mkg-w-lv.green{background:#D1FAE5;color:#047857;}
.mkg-w-time{font-size:11px;color:var(--text-light);margin-left:auto;}
.mkg-w-q{font-size:13px;color:var(--text-dark);line-height:1.6;}
.mkg-w-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
.mkg-w-tags span{font-size:11px;color:var(--accent-purple);background:#F5F3FF;border-radius:6px;padding:1px 8px;font-weight:600;}

/* ============== 侧边栏折叠组(地史政生) ============== */
.nav-group{display:flex;flex-direction:column;}
.nav-group-btn{justify-content:flex-start;}
.nav-group-btn .nav-caret{margin-left:auto;font-size:10px;color:var(--text-light);transition:transform .2s;}
.nav-group.open .nav-group-btn .nav-caret{color:var(--primary);}
.nav-sub{display:flex;flex-direction:column;gap:2px;margin:2px 0 6px;padding-left:10px;border-left:2px solid rgba(91,141,239,.25);margin-left:22px;}
.nav-sub-item{font-size:13.5px;padding:9px 12px;color:var(--text-light);}
.nav-sub-item .ico{font-size:15px;}
.nav-sub-item.active{font-size:13.5px;}
.nav-name{line-height:1.35;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* ============== 英语视图顶部模式切换(每日单词/句子练习) ============== */
.eng-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 14px;}
.eng-head-txt{min-width:0;transform:translateY(-0.5cm);}
.eng-tabs{display:flex;gap:8px;margin:0;background:#F8FAFC;border:1px solid #E2E8F0;border-radius:14px;padding:6px;width:fit-content;max-width:100%;flex-shrink:0;transform:translateY(-1cm);}
.eng-tab{
  padding:9px 20px;border-radius:10px;cursor:pointer;font-size:14px;font-weight:800;
  border:none;background:transparent;color:var(--text-mid);transition:all .2s;white-space:nowrap;
}
.eng-tab:hover{color:var(--primary);}
.eng-tab.active{background:linear-gradient(135deg,var(--accent-purple),var(--primary));color:#fff;box-shadow:0 4px 12px rgba(91,141,239,.35);}
.eng-panel{transform:translateY(-0.8cm);}
.eng-panel .sub-grid{align-items:stretch;}
.eng-panel .eb-card{display:flex;flex-direction:column;}
/* 2026-10-09 王姐定制:原来这里有一条 `.eng-panel .eb-overview + div{flex:1;}`,把学习区(ebStudy)
   撑满整张卡片 —— 于是「上一个/下一个/再来一组」被顶到卡片最底部,右侧词库一变长/换行就跟着下沉。
   去掉这条撑高后,学习区按内容自然高度排列,三个导航按钮固定在标题下方,与右侧内容彻底解耦。 */
@media(max-width:760px){
  .eng-head{flex-direction:column;align-items:stretch;}
  .eng-tabs{width:100%;}
  .eng-tab{flex:1;text-align:center;padding:10px 8px;font-size:13px;}
}

/* ============== 错题详情底部按钮(6 个紧凑等宽) ============== */
#mistDetailActions{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding:12px 18px;}
#mistDetailActions .btn-accent,#mistDetailActions .btn-ghost,#mistDetailActions .btn-primary{
  padding:8px 6px;font-size:12.5px;border-radius:10px;min-width:0;line-height:1.25;
  display:flex;align-items:center;justify-content:center;gap:4px;white-space:nowrap;
}
@media(max-width:780px){
  #mistDetailActions{grid-template-columns:repeat(3,1fr);}
}
@media(max-width:420px){
  #mistDetailActions{grid-template-columns:repeat(2,1fr);}
}

/* ============== 举一反三弹窗 ============== */
.mist-similar-box{max-width:780px;}
#mistSimilarModal .modal-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.mist-similar-ico{font-size:22px;}
.mist-similar-prog{
  margin-left:auto;background:#F1F5F9;border:1px solid #E2E8F0;border-radius:999px;
  padding:3px 12px;font-size:12px;font-weight:700;color:var(--text-mid);
}
.mist-similar-body{display:flex;flex-direction:column;gap:12px;padding:16px 18px 4px;}
.mist-sim-card{
  background:linear-gradient(135deg,#EEF4FF,#F5F3FF);border:1px solid rgba(91,141,239,.15);
  border-radius:14px;padding:16px 18px;line-height:1.65;
}
.mist-sim-type{
  display:inline-block;font-size:11px;font-weight:800;border-radius:6px;
  padding:2px 9px;background:#5B8DEF;color:#fff;letter-spacing:.5px;
}
.mist-sim-type.solve{background:#F59E0B;}
.mist-sim-src{
  display:inline-block;font-size:11px;font-weight:600;border-radius:6px;
  padding:2px 9px;background:rgba(91,141,239,.1);color:#5B8DEF;letter-spacing:.3px;
  margin-left:6px;vertical-align:1px;
}
/* 2026-10-03:题源来自网络检索补充题库时,用绿色徽章区分(本地题库是蓝色) */
.mist-sim-src.web-src{background:rgba(16,185,129,.12);color:#0F9D58;}
/* 2026-10-03:推不出非重复类似题时的空态 —— 明确写「暂无合适类似题」,不拿重复题填空 */
.mist-sim-empty{
  text-align:center;padding:26px 18px 20px;background:#F8FAFC;
  border:1px dashed #CBD5E1;border-radius:14px;
}
.mist-sim-empty-ico{font-size:38px;line-height:1;opacity:.75;}
.mist-sim-empty-t{font-size:16px;font-weight:800;color:var(--text-dark);margin:10px 0 8px;}
.mist-sim-empty-d{font-size:13px;color:var(--text-mid);line-height:1.85;}
.mist-sim-empty-d b{color:var(--accent-red);font-weight:800;}
.mist-sim-empty-tip{
  margin-top:12px;font-size:12px;color:var(--text-light);line-height:1.7;
  background:#fff;border:1px solid #E2E8F0;border-radius:10px;padding:8px 12px;text-align:left;
}
.mist-sim-q{font-size:15px;font-weight:600;color:var(--text-dark);margin-top:8px;white-space:pre-wrap;line-height:1.7;}
.mist-sim-opts{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
.mist-sim-opt{
  display:flex;align-items:flex-start;gap:10px;padding:10px 14px;
  background:#fff;border:1px solid #E2E8F0;border-radius:10px;
  cursor:pointer;transition:all .2s;font-size:14px;text-align:left;line-height:1.5;
}
.mist-sim-opt:hover{border-color:var(--primary);background:#F8FAFC;}
.mist-sim-opt.correct{border-color:#34D399;background:#D1FAE5;}
.mist-sim-opt.wrong{border-color:#F87171;background:#FEE2E2;}
.mist-sim-opt.disabled{cursor:default;opacity:.85;}
.mist-sim-opt .opt-mark{
  flex-shrink:0;width:22px;height:22px;border-radius:50%;
  background:#EEF4FF;color:var(--primary);font-weight:800;display:flex;align-items:center;justify-content:center;font-size:12px;
}
.mist-sim-opt.correct .opt-mark{background:#34D399;color:#fff;}
.mist-sim-opt.wrong .opt-mark{background:#F87171;color:#fff;}
.mist-sim-upload{
  margin-top:12px;background:#F8FAFC;border:2px dashed #CBD5E1;border-radius:12px;
  padding:16px;text-align:center;cursor:pointer;transition:all .2s;
}
.mist-sim-upload:hover{border-color:var(--primary);background:#EEF4FF;}
.mist-sim-upload input{display:none;}
.mist-sim-upload-icon{font-size:28px;display:block;margin-bottom:6px;}
.mist-sim-upload-tip{font-size:12px;color:var(--text-light);}
.mist-sim-thumb{display:flex;align-items:center;gap:8px;margin-top:10px;background:#fff;border:1px solid #E2E8F0;border-radius:10px;padding:8px 10px;font-size:12px;}
.mist-sim-thumb img{height:48px;border-radius:6px;object-fit:cover;}
.mist-sim-thumb .del{cursor:pointer;color:var(--accent-red);margin-left:auto;font-weight:700;}
.mist-sim-answer{
  background:#F0FDF4;border:1px solid #BBF7D0;border-radius:12px;
  padding:14px 16px;font-size:13.5px;line-height:1.7;color:#064E3B;
}
.mist-sim-answer b{color:#0F766E;}
.mist-sim-feedback{
  padding:8px 14px;border-radius:10px;font-size:13.5px;font-weight:700;
  margin-top:10px;
}
.mist-sim-feedback.right{background:#D1FAE5;color:#047857;}
.mist-sim-feedback.wrong{background:#FEE2E2;color:#B91C1C;}
/* 2026-10-01:题库未标注答案时不判对错——已选项中性蓝灰标记,提示对照解析自查 */
.mist-sim-feedback.neutral{background:#E0F2FE;color:#3B6FE0;}
.mist-sim-opt.picked{border-color:#93B4F5;background:#EFF5FF;}
.mist-sim-opt.picked .opt-mark{background:#5B8DEF;color:#fff;}

#mistSimilarActions{
  display:grid;grid-template-columns:1fr auto 1fr;gap:8px;padding:14px 18px 16px;
  border-top:1px solid #E2E8F0;background:#F8FAFC;
}
#mistSimilarActions button{padding:9px 14px;font-size:13px;border-radius:10px;min-width:0;}
#mistSimilarActions .btn-primary{font-weight:800;}
#mistSimAnswerBtn{min-width:130px;}

@media(max-width:560px){
  #mistSimilarActions{grid-template-columns:1fr 1fr;}
  #mistSimAnswerBtn{grid-column:span 2;}
}

/* ============== 错题录入 · 错误分析红框(语音识别结果) ============== */
.mist-rec{display:flex;flex-wrap:wrap;align-items:center;gap:8px;}
.mist-error-analysis{
  width:100%;margin-top:10px;background:#FFF5F5;
  border:2px solid #ef4444;border-radius:10px;padding:10px 12px;
  box-shadow:inset 0 0 0 1px rgba(239,68,68,.1);
}
.mist-error-analysis:focus-within{border-color:#dc2626;box-shadow:0 0 0 3px rgba(239,68,68,.15);}
.mist-ea-label{display:block;font-size:12px;font-weight:700;color:#991b1b;margin-bottom:6px;letter-spacing:.3px;}
.mist-error-analysis textarea{
  width:100%;min-height:84px;max-height:200px;border:none;background:transparent;
  resize:vertical;font-size:13px;line-height:1.65;color:#1f2937;
  font-family:inherit;outline:none;
}
.mist-error-analysis textarea::placeholder{color:#fca5a5;font-style:italic;}
#mistSpeechBtn.recording{
  background:linear-gradient(135deg,#dc2626,#b91c1c)!important;color:#fff!important;
  border-color:#dc2626!important;animation:pulse-rec 1.2s ease-in-out infinite;
}
@keyframes pulse-rec{
  0%,100%{box-shadow:0 0 0 0 rgba(220,38,38,.6);}
  50%{box-shadow:0 0 0 6px rgba(220,38,38,0);}
}

/* ============== 每日单词 KPI(renderEbOverview) ============== */
/* 2026-10-08 王姐定制:六项统计同排一行、等宽等高、不换行 */
.eb-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:12px;}
.eb-kpi{
  background:linear-gradient(135deg,#EEF4FF,#F5F3FF);border:1px solid rgba(91,141,239,.15);
  border-radius:12px;padding:10px 4px;text-align:center;
  display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;
  min-height:64px;box-sizing:border-box;overflow:hidden;
}
.eb-kpi b{display:block;font-size:20px;font-weight:800;color:var(--primary-dark, #3b5bdb);font-variant-numeric:tabular-nums;line-height:1.15;}
.eb-kpi span{font-size:10.5px;color:#64748B;font-weight:600;white-space:nowrap;line-height:1.3;}
@media(max-width:640px){
  .eb-kpis{grid-template-columns:repeat(6,1fr);gap:5px;}
  .eb-kpi{padding:7px 2px;min-height:54px;border-radius:10px;}
  .eb-kpi b{font-size:15px;}
  .eb-kpi span{font-size:8.5px;}
}

/* ============== 句子练习 · 翻译/语法查看按钮与展开框 ============== */
.sent-view-box{
  background:#FFF7ED;border:1px dashed #FDBA74;border-radius:12px;
  padding:12px 16px;margin-top:12px;font-size:14px;line-height:1.8;
  color:#7C2D12;text-align:left;
}
.sent-gram-box{background:#F5F3FF;border-color:#C4B5FD;color:#4C1D95;}

/* ============== 结构解码 · 词/标注对号入座（2026-10-09 王姐定制 v5）==============
   王姐要求：「每个词的词性、成分标注必须精确位于该词的正下方，逐词一一对应」
   +「句子的成份（汉语）要和上面的英文居中对齐，方便学习者对号入座」。

   v5 为什么不再用「空格凑网格」：英文行 15px、标签行 13px，浏览器里
   1 个汉字 ≠ 2 个英文格（实测 Consolas 15px 格宽 8.25px，13px 汉字 13px
   = 1.58 格；宋体 15px 也才 1.82 格），按 2 格算的列位会越往右越偏。
   现在改为「词+标注」inline-block 单元，标注在单元内 text-align:center 居中，
   由浏览器按真实字体排版 → 任何字体/字号/缩放下都不会错位。 */
.sent-gram-box .sd-title{font-weight:800;font-size:13.5px;color:#5B21B6;margin-bottom:8px;}
.sent-gram-box .sd-raw{white-space:pre-wrap;font-size:13.5px;line-height:1.9;}
.sent-gram-box .sd-body{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.sent-gram-box .sd-row{
  margin:0 0 10px 0;white-space:nowrap;letter-spacing:0;
}
.sent-gram-box .sd-row:last-child{margin-bottom:0;}
/* 每个「词 + 其下方标注」是一个单元；标注在单元内居中 = 对齐词的中心 */
.sent-gram-box .sd-row .sd-u{
  display:inline-block;text-align:center;vertical-align:top;
  margin-right:16px;
}
.sent-gram-box .sd-row .sd-u:last-child{margin-right:0;}
.sent-gram-box .sd-row .sd-u .sd-en,
.sent-gram-box .sd-row .sd-u .sd-lab{
  display:block;white-space:pre;
  font-family:Consolas,"Courier New","DejaVu Sans Mono",
    "Noto Sans Mono CJK SC","Microsoft YaHei",monospace;
  font-style:normal;font-weight:700;letter-spacing:0;
}
.sent-gram-box .sd-row .sd-u .sd-en{color:#312E81;font-size:15px;line-height:1.55;}
.sent-gram-box .sd-row .sd-u .sd-lab{color:#7C3AED;font-size:13px;line-height:1.5;margin-top:1px;}
.sent-gram-box .sd-row .sd-u .sd-lab:empty{display:none;}
/* ◎ 子块（宾语从句 / 定语从句 …） */
.sent-gram-box .sd-sub{margin:14px 0 0 0;padding:9px 13px 11px;border-left:3px solid #A78BFA;background:rgba(255,255,255,.6);border-radius:0 8px 8px 0;}
.sent-gram-box .sd-sub-h{font-weight:800;font-size:12.5px;color:#6D28D9;margin-bottom:8px;letter-spacing:.2px;}
/* ===== 难点突破（2026-10-08 王姐要求：加在结构解码下面）=====
   数据逐字照抄自原书【难点突破】板块；原书没有该板块的句子不渲染。 */
.sent-gram-box .sd-nd{
  margin:18px 0 0 0;padding:11px 14px 13px;
  border-left:3px solid #F59E0B;background:rgba(255,251,235,.85);
  border-radius:0 8px 8px 0;
}
.sent-gram-box .sd-nd-h{font-weight:800;font-size:13px;color:#B45309;margin-bottom:7px;letter-spacing:.2px;}
.sent-gram-box .sd-nd-b{font-size:13.5px;line-height:1.95;color:#78350F;text-align:left;word-break:break-word;}
.sent-gram-box .sd-nd-b .nd-tag{
  display:inline-block;padding:0 6px;margin:0 2px;border-radius:4px;
  background:#FDE68A;color:#92400E;font-size:12.5px;font-weight:800;
}
@media (max-width:560px){
  .sent-gram-box .sd-row .sd-u{margin-right:12px;}
  .sent-gram-box .sd-row .sd-u .sd-en{font-size:13.5px;}
  .sent-gram-box .sd-row .sd-u .sd-lab{font-size:12px;}
  .sent-gram-box .sd-nd-b{font-size:12.5px;}
}
.sent-view-btns{display:flex;gap:10px;justify-content:center;margin-top:12px;}
.sent-view-btn{
  padding:7px 16px;border-radius:999px;border:1px solid #CBD5E1;background:#fff;
  font-size:12.5px;font-weight:700;color:var(--text-mid);cursor:pointer;transition:all .2s;
}
.sent-view-btn:hover{border-color:var(--primary);color:var(--primary);}
.sent-view-btn.on{background:linear-gradient(135deg,#EEF4FF,#F5F3FF);border-color:var(--primary);color:var(--primary);}

/* ============== 学习词库 · 错词标记 ============== */
.word-cell{position:relative;}
.word-cell.has-err{border-color:#FCA5A5;background:#FFF5F5;}
.word-err-tag{
  display:inline-block;margin-left:5px;padding:0 5px;border-radius:6px;
  background:#DC2626;color:#fff;font-size:10px;font-weight:800;line-height:16px;vertical-align:1px;
}

/* 知识图谱:来源搜索 + 全部模式分组头(2026-09-18) */
.mkg-src-search{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;color:#475569;font-weight:600;margin-left:10px}
.mkg-src-search input{width:190px;padding:7px 10px;border:1.5px solid #cbd5e1;border-radius:9px;font-size:.85rem;outline:none;background:#fff}
.mkg-src-search input:focus{border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.12)}
.mkg-src-clear{border:none;background:#e2e8f0;border-radius:7px;padding:4px 9px;cursor:pointer;font-size:.8rem;font-weight:700;color:#475569}
.mkg-src-clear:hover{background:#cbd5e1}
.mkg-grp-head{margin:16px 0 10px;padding:9px 13px;background:#f1f5f9;border-left:4px solid #6366f1;border-radius:9px;font-weight:700;font-size:.95rem;color:#334155}
.mkg-src-sel{padding:6px 8px;border:1.5px solid #cbd5e1;border-radius:9px;font-size:.82rem;background:#fff;color:#334155;outline:none;max-width:130px}
.mkg-src-sel:focus{border-color:#6366f1}
/* 2026湖北卷原卷题图:固定显示宽度使图内字体与题目文字等大(2026-09-20 用户定制,不随屏幕拉伸) */
.mkg-zt-imgbox img[src*="hb26_q1full2"]{max-width:630px;}
.mkg-zt-imgbox img[src*="hb26_q4fig2"]{max-width:450px;}
.mkg-zt-imgbox img[src*="hb26_q5full2"]{max-width:810px;}
.mkg-zt-imgbox img[src*="hb26_q5opts2"]{max-width:600px;}

/* ============== 登录入口 + 登录弹窗（2026-09-27） ============== */
.login-chip{
  display:flex;align-items:center;gap:6px;padding:8px 14px;
  background:linear-gradient(135deg,#5B8DEF,#4F6EF7);border-radius:999px;
  color:white;font-weight:700;box-shadow:0 4px 12px rgba(91,141,239,.3);
  cursor:pointer;transition:transform .15s;font-size:13px;
}
.login-chip:hover{transform:translateY(-1px);}
.login-chip.logged{background:linear-gradient(135deg,#16A34A,#22C55E);box-shadow:0 4px 12px rgba(22,163,74,.3);}
.login-chip .badge-ver{
  font-size:11px;background:rgba(255,255,255,.25);padding:2px 8px;border-radius:999px;font-weight:600;
}
.modal-login{max-width:380px;}
.login-field{margin-bottom:14px;}
.login-field label{display:block;font-size:13px;color:var(--text-2, #4b5563);margin-bottom:6px;font-weight:600;}
.login-field input{width:100%;box-sizing:border-box;height:44px;border:1.5px solid #E2E8F0;border-radius:10px;padding:0 14px;font-size:15px;outline:none;transition:border-color .15s;}
.login-field input:focus{border-color:#5B8DEF;}
.login-code-row{display:flex;gap:10px;}
.login-code-row input{flex:1;}
.login-code-btn{flex:0 0 auto;height:44px;padding:0 16px;background:#F1F5F9;color:#4b5563;border:none;border-radius:10px;font-size:13px;cursor:pointer;white-space:nowrap;}
.login-code-btn:disabled{opacity:.5;cursor:not-allowed;}
.login-submit{width:100%;height:46px;background:linear-gradient(135deg,#5B8DEF,#4F6EF7);color:white;border:none;border-radius:12px;font-size:16px;font-weight:700;cursor:pointer;transition:opacity .15s;}
.login-submit:hover{opacity:.92;}
.login-submit:disabled{opacity:.6;cursor:not-allowed;}
.login-tip{margin-top:12px;font-size:12px;color:#9CA3AF;text-align:center;line-height:1.6;}
.login-logout{width:100%;height:42px;margin-top:12px;background:#FEE2E2;color:#DC2626;border:none;border-radius:12px;font-size:14px;font-weight:600;cursor:pointer;}
.login-logout:hover{background:#FECACA;}

/* ============== 登录门（未登录强制登录，2026-09-27） ============== */
.login-gate{
  position:fixed;inset:0;z-index:1100;
  background:linear-gradient(180deg,#F5F7FF 0%,#EEF2FF 100%);
  display:none;align-items:center;justify-content:center;padding:24px;
}
.login-gate-inner{text-align:center;max-width:420px;}
.login-gate-ico{font-size:64px;line-height:1;}
.login-gate-title{font-size:24px;font-weight:800;margin-top:14px;color:#111827;}
.login-gate-sub{font-size:14px;color:#6b7280;margin-top:10px;line-height:1.7;}
.login-gate-btn{
  margin-top:28px;height:48px;padding:0 44px;
  background:linear-gradient(135deg,#5B8DEF,#4F6EF7);color:#fff;
  border:none;border-radius:12px;font-size:16px;font-weight:700;cursor:pointer;
  box-shadow:0 6px 18px rgba(91,141,239,.35);transition:transform .15s,opacity .15s;
}
.login-gate-btn:hover{transform:translateY(-2px);opacity:.95;}

/* ============== 品牌 LOGO 显示（2026-09-27） ============== */
.login-gate-ico img{
  width:160px;height:160px;object-fit:contain;
  border-radius:24px;box-shadow:0 10px 30px rgba(0,0,0,.12);
  background:#fff;
}

/* ============== 登录切换标签 + 修改密码（2026-09-27） ============== */
.login-tabs{display:flex;gap:6px;margin-bottom:14px;background:#F1F5F9;border-radius:10px;padding:4px;}
.login-tabs .ltab{flex:1;text-align:center;padding:8px 0;font-size:13px;font-weight:600;color:#6b7280;border-radius:8px;cursor:pointer;transition:all .15s;}
.login-tabs .ltab.active{background:#fff;color:#4F6EF7;box-shadow:0 1px 4px rgba(0,0,0,.08);}
.login-extra{margin-top:10px;text-align:center;}
.login-link-btn{background:none;border:none;color:#4F6EF7;font-size:13px;cursor:pointer;text-decoration:underline;}
.login-guide{margin-top:12px;text-align:center;font-size:12px;}
.login-guide a{color:#6B7280;text-decoration:underline;}

/* ===== 2026-09-28 手机版字体优化（仅 ≤768px 生效，电脑端完全不受影响） ===== */
@media(max-width:768px){
  body{font-size:13px;}
  .page-title{font-size:19px !important;margin-bottom:4px;}
  .page-subtitle{font-size:12px !important;margin-bottom:12px;line-height:1.5;}
  .card-title{font-size:15px !important;margin-bottom:10px;}
  .card-title .sent-title-hint{display:none;}   /* 手机上隐藏卡片标题后的长提示 */
  .sent-target{font-size:17px !important;padding:18px 12px !important;min-height:64px;}
  .english-grid .sent-target{font-size:17px !important;padding:18px 12px;}
  /* 2026-10-02 窄屏:句子框内边距只有 18px,来源小字跟着调小、贴底,别压到句子 */
  .sent-src{font-size:10px;right:10px;bottom:5px;padding:1px 6px;}
  .eng-tab{font-size:12.5px;}
  .eb-kpi b{font-size:16px;}
  .eb-kpi span{font-size:9px;}
  /* .eb-word 由 JS 按词长动态控制字号,不在此覆盖 */
  .badge{font-size:10.5px;}
  .sentence-item .sen-ico{font-size:16px;}
}

/* ==========================================================
   2026-09-30 拍照识别（错题模块专用）
   只在文件末尾追加,不改动上面任何一行已有样式
   ========================================================== */
.mist-toolbar .mist-ai-btn{
  background:linear-gradient(135deg,#F59E0B,#F97316);
  box-shadow:0 4px 12px rgba(249,115,22,.3);
}
.mist-toolbar .mist-ai-btn:hover{box-shadow:0 6px 16px rgba(249,115,22,.42);}

.mist-ai-box{width:min(620px,94vw);}
.mist-ai-tip{
  float:right;font-size:12px;font-weight:600;color:var(--text-light);
  margin-top:6px;
}
.mist-ai-loading{padding:28px 0 20px;text-align:center;}
.mist-ai-spin{
  width:38px;height:38px;margin:0 auto 14px;border-radius:50%;
  border:3px solid #E2E8F0;border-top-color:#5B8DEF;
  animation:maiSpin .8s linear infinite;
}
@keyframes maiSpin{to{transform:rotate(360deg);}}
.mist-ai-load-t{font-size:15px;font-weight:700;color:var(--text-dark);}
.mist-ai-load-s{font-size:12.5px;color:var(--text-light);margin-top:6px;}

.mist-ai-warn{
  background:#FFF7ED;border:1px solid #FED7AA;color:#9A3412;
  border-radius:12px;padding:10px 14px;font-size:13px;line-height:1.75;margin-bottom:14px;
}
.mist-ai-figbox{
  background:#F8FAFC;border:1px solid #E2E8F0;border-radius:14px;
  padding:10px;margin-bottom:14px;text-align:center;
}
.mist-ai-figbox img{
  max-width:100%;max-height:230px;border-radius:10px;object-fit:contain;background:#fff;
}
.mist-ai-figbox img[src=""],.mist-ai-figbox img:not([src]){display:none;}

.mist-ai-row{display:flex;gap:12px;flex-wrap:wrap;}
.mist-ai-row .mist-ai-field{flex:1 1 240px;}
.mist-ai-field{margin-bottom:12px;}
.mist-ai-field label{
  display:block;font-size:13px;font-weight:700;color:var(--text-mid);margin-bottom:6px;
}
.mist-ai-stem{min-height:88px;line-height:1.7;resize:vertical;}
.mist-ai-opts{display:flex;flex-direction:column;gap:8px;}
.mist-ai-opt{display:flex;align-items:center;gap:8px;}
.mist-ai-opt b{
  flex:0 0 22px;text-align:center;font-size:13px;color:var(--primary);
}
.mist-ai-ans{
  background:#F8FAFC;border:1px solid #E2E8F0;border-radius:12px;
  padding:10px 14px;font-size:13.5px;line-height:1.75;color:var(--text-dark);
  max-height:220px;overflow-y:auto;
}
.mist-ai-conf{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:4px;}
.mist-ai-badge{
  font-size:11.5px;font-weight:700;border-radius:999px;padding:3px 11px;
  border:1px solid transparent;
}
.mist-ai-badge.ok{background:#DCFCE7;color:#15803D;border-color:#BBF7D0;}
.mist-ai-badge.mid{background:#FEF3C7;color:#B45309;border-color:#FDE68A;}
.mist-ai-badge.low{background:#FEE2E2;color:#B91C1C;border-color:#FECACA;}
.mist-ai-actions{position:sticky;bottom:-8px;background:#fff;padding-top:12px;}

/* ===== 手机端(≤640px):大按钮 + 宽弹窗,方便家长单手操作 ===== */
@media(max-width:640px){
  .mist-ai-box{width:96vw;max-height:92vh;padding:20px 16px;border-radius:20px;}
  .mist-ai-tip{float:none;display:block;margin-top:4px;}
  .mist-toolbar .mist-ai-btn{width:100%;justify-content:center;}
  .mist-ai-figbox img{max-height:180px;}
  .mist-ai-actions{position:static;gap:8px;}
  .mist-ai-actions button{
    flex:1 1 44%;min-height:44px;font-size:14.5px;padding:10px 8px;
  }
  .mist-ai-actions .btn-primary{flex:1 1 100%;order:-1;}
}

/* ==========================================================
   2026-10-02 句子库页面重构（王姐定制）
   顶部七类统计区 / 底部标记区 / 页面最底部「已掌握」模块
   只在文件末尾追加，不改动上面任何一行已有样式
   ========================================================== */

/* ---- 句库切换：原「句子库」整行已删，两个句库按钮挪到卡片标题右侧 ---- */
.sent-bank-switch{display:inline-flex;gap:6px;flex-shrink:0;}

/* ---- S 编号：原是库切换行里的独立胶囊，现并进句子框右下角来源条 ---- */
.sent-src{max-width:min(320px,74%);}
.sent-src .sent-num{
  padding:0 6px 0 0;margin-right:6px;border-radius:0;background:none;
  border-right:1px solid #CBD5E1;color:#475569;font-size:11px;font-weight:800;
}

/* ---- 一、顶部统计区（7 类一行） ---- */
.sent-statbar{margin:0 0 14px;}
.ssb-title{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:800;color:var(--text-mid);margin-bottom:8px;flex-wrap:wrap;}
.ssb-note{font-size:11.5px;font-weight:500;color:var(--text-light);}
.ssb-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;}
.ssb-card{
  position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:10px 6px 9px;border-radius:14px;border:1px solid var(--border);background:#fff;
  cursor:pointer;transition:transform .18s,box-shadow .18s,border-color .18s,background .18s;
}
.ssb-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--sc,#5B8DEF);opacity:.85;}
.ssb-card:hover{border-color:var(--sc,#5B8DEF);box-shadow:var(--shadow-sm);transform:translateY(-1px);}
.ssb-card.on{border-color:var(--sc,#5B8DEF);background:#F7FAFF;box-shadow:var(--shadow-md);}
.ssb-ico{font-size:15px;line-height:1;}
.ssb-num{font-size:22px;font-weight:900;line-height:1.15;color:var(--sc,#5B8DEF);font-variant-numeric:tabular-nums;}
.ssb-name{font-size:12px;font-weight:800;color:var(--text-dark);white-space:nowrap;}
.ssb-sub{font-size:10.5px;font-weight:600;color:var(--text-light);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;}

/* ---- 统计详情（原地展开） ---- */
.sent-stat-detail{border:1px solid var(--border);border-radius:14px;background:#FBFCFF;padding:12px 14px;margin:0 0 14px;}
.ssd-head{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:800;color:var(--text-dark);margin-bottom:8px;flex-wrap:wrap;}
.ssd-close{margin-left:auto;border:1px solid #CBD5E1;background:#fff;color:#475569;font-size:11.5px;font-weight:700;border-radius:999px;padding:3px 10px;cursor:pointer;}
.ssd-close:hover{border-color:#8B5CF6;color:#8B5CF6;}
.ssd-meta{font-size:12.5px;color:var(--text-mid);line-height:1.85;margin-bottom:6px;}
.ssd-meta b{color:var(--text-dark);}
.ssd-hint{font-size:11.5px;color:var(--text-light);}
.ssd-tags{display:flex;flex-wrap:wrap;gap:5px;max-height:190px;overflow:auto;padding:2px 0;}
.ssd-tag{font-size:11px;font-weight:700;color:#94A3B8;background:#F1F5F9;border:1px solid transparent;border-radius:6px;padding:2px 7px;cursor:pointer;}
.ssd-tag:hover{border-color:var(--primary);color:var(--primary);}
.ssd-tag.on{background:#E0F2FE;color:#3B6FE0;}
.ssd-tag.ok{background:#DCFCE7;color:#15803D;}
.ssd-sub{border-top:1px dashed var(--border);}
.ssd-sub-h{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;padding:8px 2px;cursor:pointer;text-align:left;}
.ssd-sub-n{flex:1;font-size:13px;font-weight:700;color:var(--text-mid);}
.ssd-sub-c{font-size:12px;font-weight:900;color:var(--sc,#5B8DEF);font-variant-numeric:tabular-nums;}
.ssd-sub-x{font-size:11.5px;font-weight:700;color:var(--text-light);}
.ssd-list{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow:auto;padding:4px 0 6px;}
.ssd-row{background:#fff;border:1px solid var(--border);border-radius:10px;padding:8px 10px;}
.ssd-row-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.ssd-code{font-size:12px;font-weight:900;color:#3B6FE0;background:#E0F2FE;border-radius:6px;padding:1px 7px;}
.ssd-go{margin-left:auto;border:1px solid #CBD5E1;background:#fff;color:#475569;font-size:11.5px;font-weight:700;border-radius:999px;padding:2px 9px;cursor:pointer;}
.ssd-go:hover{border-color:var(--primary);color:var(--primary);}
.ssd-en{font-size:13.5px;font-weight:700;color:var(--text-dark);margin-top:5px;line-height:1.5;}
.ssd-zh{font-size:12.5px;color:var(--text-mid);margin-top:2px;line-height:1.5;}
.ssd-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px;}
.ssd-chip{font-style:normal;font-size:11px;font-weight:700;border-radius:999px;padding:1px 8px;background:#F1F5F9;color:#475569;border:1px solid var(--border);}
.ssd-chip.ok{background:#DCFCE7;color:#15803D;border-color:#86EFAC;}
.ssd-chip.due{background:#FFF7ED;color:#C2410C;border-color:#FDBA74;}
.ssd-empty{font-size:12.5px;color:var(--text-light);padding:10px 2px;text-align:center;}

/* ---- 「今天待复习」清单的两组分节标题（2026-10-08 王姐定制：上面新句子 / 下面老句子） ---- */
.ssd-group-h{display:flex;align-items:center;gap:8px;margin:12px 0 6px;font-size:13px;font-weight:800;color:var(--text-dark);}
.ssd-group-h:first-child{margin-top:2px;}
.ssd-group-h::before{content:"";flex:0 0 auto;width:4px;height:14px;border-radius:2px;background:#94A3B8;}
.ssd-group-h.new::before{background:linear-gradient(180deg,#34D399,#059669);}
.ssd-group-h.rev::before{background:linear-gradient(180deg,#FBBF24,#F59E0B);}
.ssd-group-h .ssd-group-n{font-size:12px;font-weight:900;color:#0369A1;background:#E0F2FE;border-radius:999px;padding:1px 8px;}
.ssd-group-h.new .ssd-group-n{color:#047857;background:#D1FAE5;}
.ssd-group-h.rev .ssd-group-n{color:#B45309;background:#FEF3C7;}
.ssd-group-h small{font-size:11px;font-weight:600;color:var(--text-light);}

/* ---- 二、底部标记区（4/5 同行、6/7 同行，可多选） ---- */
.sent-mark-area{margin-top:16px;border-top:1px dashed var(--border);padding-top:14px;}
.sma-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap;}
.sma-pass{border:2px solid var(--accent-green);background:#fff;color:#15803D;font-size:14px;font-weight:900;border-radius:999px;padding:7px 18px;cursor:pointer;transition:all .18s;}
.sma-pass:hover{background:#F0FDF4;}
.sma-pass.on{background:linear-gradient(135deg,#34D399,#10B981);color:#fff;border-color:transparent;box-shadow:0 4px 12px rgba(16,185,129,.35);}
.sma-tip{font-size:12px;font-weight:600;color:var(--text-light);}
.sma-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.sma-block{border:1px solid var(--border);border-left:4px solid var(--sc,#5B8DEF);border-radius:12px;background:#FCFDFF;padding:9px 11px;}
.sma-block-h{display:flex;align-items:center;gap:8px;margin-bottom:7px;}
.sma-block-h b{font-size:13.5px;font-weight:900;color:var(--text-dark);}
.sma-block-c{margin-left:auto;font-size:11.5px;font-weight:900;color:var(--sc,#5B8DEF);background:#F1F5F9;border-radius:999px;padding:1px 9px;}
.sma-subs{display:flex;flex-wrap:wrap;gap:6px;}
.sma-sub{display:inline-flex;align-items:center;gap:6px;border:1px solid #CBD5E1;background:#fff;color:#475569;font-size:12.5px;font-weight:700;border-radius:999px;padding:5px 12px 5px 8px;cursor:pointer;transition:all .16s;}
.sma-sub:hover{border-color:var(--sc,#5B8DEF);color:var(--sc,#5B8DEF);}
.sma-sub.on{border-color:transparent;background:var(--sc,#5B8DEF);color:#fff;box-shadow:0 3px 10px rgba(0,0,0,.12);}
.sma-box{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;flex:0 0 15px;border-radius:4px;border:1.5px solid currentColor;font-size:11px;font-weight:900;font-style:normal;line-height:1;}
.sma-sub.on .sma-box{border-color:rgba(255,255,255,.9);background:rgba(255,255,255,.2);}

/* ---- 三、页面最底部「已掌握」模块 ---- */
.sent-mastered-card{margin-top:14px;}

/* ---- 窄屏适配 ---- */
@media(max-width:768px){
  .ssb-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;}
  .ssb-num{font-size:18px;}
  .ssb-name{font-size:11px;}
  .ssb-sub{display:none;}
  .sent-bank-switch{gap:4px;}
  .sent-bank-switch .sent-lib-btn{font-size:11px;padding:3px 9px;}
  .sma-sub{font-size:12px;padding:5px 10px 5px 7px;}
  .sent-mark-area{margin-top:12px;padding-top:10px;}
  .ssd-list{max-height:none;}
}

/* ---- 标记区:撤销过关小链接 + 到期提示强调（2026-10-02 补） ---- */
.sma-undo{border:1px solid #CBD5E1;background:#fff;color:#94A3B8;font-size:11.5px;font-weight:700;border-radius:999px;padding:4px 11px;cursor:pointer;transition:all .16s;}
.sma-undo:hover{border-color:var(--accent-red);color:var(--accent-red);}
.sma-tip b{color:#C2410C;}
/* ---- 2026-10-06 王姐定制:「这句还没学」提醒(待复习句未点已过关/未勾错误类型时显示) ---- */
.sma-warn{display:inline-block;color:#B91C1C;background:#FEF3C7;border:1px solid #FCD34D;border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:800;}

/* ---- 标记区:重点子分类红字粗体（2026-10-02 王姐定制,当前为「结构找错·主干找错」） ----
   勾选后底色是实心紫,红字会看不清 → 用 :not(.on) 让选中态回归白字,颜色只在未勾选时生效 */
.sma-sub.hi:not(.on){color:#DC2626;border-color:#FCA5A5;font-weight:900;}
.sma-sub.hi:not(.on):hover{border-color:#DC2626;color:#DC2626;background:#FEF2F2;}
.sma-sub.hi:not(.on) .sma-box{border-color:#DC2626;}

/* ---- 「今天待复习」详情:两行说明缩小后并到标题同一行（2026-10-04 王姐定制） ----
   只作用于该面板标题行内的 .ssd-inline-note,不影响其它类目仍在用的 .ssd-meta 两行样式。
   字号/间距是按「左侧栏 + 7 列统计条」实测调过的:1080px 宽的窗口刚好放得下一行,再窄就让它在
   原位折行 —— 宁可折行也不能用省略号把「今天到期 N 句」这类信息吃掉。 */
.ssd-head .ssd-inline-note{
  flex:1 1 auto;min-width:0;
  font-size:10px;font-weight:600;color:var(--text-light);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ssd-head .ssd-inline-note b{color:var(--text-dark);font-weight:800;}
.ssd-head .ssd-inline-note .ssd-sep{font-style:normal;color:#CBD5E1;margin:0 2px;font-weight:400;}
/* 窗口偏窄:标题行各元素间距收紧,给说明文字多挤几个像素 */
@media(max-width:1150px){
  .ssd-head{gap:5px;}
}
/* 更窄就一行放不下了 → 允许折行(信息完整优先,不能用省略号把「今天到期 N 句」吃掉) */
@media(max-width:1040px){
  .ssd-head .ssd-inline-note{white-space:normal;overflow:visible;}
}

/* ===== 学校作业板块(2026-10-06) ===== */
.mkg-hw-search{margin:8px 0 10px}
.mkg-hw-input{width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid var(--line,#d7dee8);border-radius:10px;font-size:14px;background:#fff;color:inherit;outline:none}
.mkg-hw-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.12)}
.mkg-hw-qt{display:inline-block;margin:0 8px;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:600;background:#eff6ff;color:#1d4ed8;vertical-align:2px}
.mkg-zt-q .mkg-hw-qt{margin-left:8px}
/* 学校作业(2026-10-06 王姐):选项长→每个选项单独成行(对齐错题本三档标准) */
.mkg-hw-card .mkg-opts{grid-template-columns:1fr;}
/* 学校作业(2026-10-06b 王姐):ABCD 选项行右缩,与题干文字(标题+徽章之后)起始位置对齐 */
.mkg-hw-card .mkg-zt-q{display:flex;align-items:baseline;}
.mkg-hw-card .mkg-zt-q > b,.mkg-hw-card .mkg-zt-q > span.mkg-hw-qt{flex-shrink:0;}
.mkg-hw-card .mkg-zt-q > span:last-child{flex:1 1 auto;min-width:0;}
/* 学校作业(2026-10-06c 王姐):题图太大,缩小到容器宽 20% */
.mkg-hw-card .mkg-zt-imgbox img{max-width:20%;}
