/* ==========================================================================
   英语单词学习 · 桌面版 V3 —— 活泼版视觉系统
   纯离线：所有插画为本地 SVG，图标使用系统 Emoji，无任何网络字体/图片
   ========================================================================== */

:root{
  /* 底色与文字 */
  --bg:#f5f7fd; --bg-2:#eef2fb; --panel:#ffffff; --line:#e4e9f5; --line-2:#eef1f9;
  --ink:#18213a; --ink-2:#5a6784; --ink-3:#8e99b0;

  /* 主色（靛蓝 → 紫） */
  --brand:#4a6cf7; --brand-dark:#3450d8; --brand-2:#e9eeff; --brand-3:#dfe7ff;
  --violet:#8c63ff; --violet-2:#f0eaff;

  /* 语义色 */
  --green:#12a150; --green-bg:#e4f7ec; --green-2:#3ecf86;
  --amber:#c77700; --amber-bg:#fff4e2; --amber-2:#ffb648;
  --red:#dc3545; --red-bg:#fdebeb; --red-2:#ff7b8a;
  --pink:#ff6f9c; --pink-2:#ffe9f0;
  --mint:#22b07d; --mint-2:#e3f8f0;
  --sky:#38bdf8; --sky-2:#e4f5fe;
  --slate-bg:#eef1f9;

  --radius:14px; --radius-lg:20px; --radius-xl:26px;
  --shadow-sm:0 1px 2px rgba(24,33,58,.04);
  --shadow:0 2px 4px rgba(24,33,58,.04),0 10px 26px rgba(24,33,58,.07);
  --shadow-pop:0 14px 34px rgba(74,108,247,.20);
  --ease:cubic-bezier(.22,1,.36,1);
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  background:
    radial-gradient(900px 460px at 8% -6%, #e9efff 0%, rgba(233,239,255,0) 62%),
    radial-gradient(760px 420px at 96% 4%, #fdeef5 0%, rgba(253,238,245,0) 60%),
    var(--bg);
  color:var(--ink);
  font-family:"Segoe UI","Microsoft YaHei","PingFang SC","Hiragino Sans GB",system-ui,sans-serif;
  font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
img,svg{display:block}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#cfd8ea;border-radius:8px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#b4c1da;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}
::selection{background:#d8e2ff}

.hidden{display:none !important}

/* ========================== 动画 ========================== */
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(.86);opacity:0}60%{transform:scale(1.04)}100%{transform:scale(1);opacity:1}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
@keyframes floatSlow{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-14px) rotate(6deg)}}
@keyframes wiggle{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(74,108,247,.42)}70%{box-shadow:0 0 0 14px rgba(74,108,247,0)}100%{box-shadow:0 0 0 0 rgba(74,108,247,0)}}
@keyframes shimmer{0%{background-position:-160% 0}100%{background-position:260% 0}}
@keyframes blob{0%,100%{border-radius:44% 56% 62% 38%/48% 42% 58% 52%;transform:translate(0,0) scale(1)}
  50%{border-radius:56% 44% 38% 62%/58% 56% 44% 42%;transform:translate(10px,-14px) scale(1.06)}}
@keyframes fall{to{transform:translate3d(var(--dx,0),105vh,0) rotate(var(--rot,540deg));opacity:0}}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes ring{0%{transform:scale(.5);opacity:.75}100%{transform:scale(1.5);opacity:0}}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001s !important;animation-iteration-count:1 !important;transition-duration:.001s !important}
}

/* ========================== 顶栏 ========================== */
.topbar{
  background:rgba(255,255,255,.86);backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50;
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 6px 20px rgba(24,33,58,.045);
}
.topbar-inner{max-width:1260px;margin:0 auto;height:64px;display:flex;align-items:center;gap:22px;padding:0 24px}
.brand{display:flex;align-items:center;gap:11px;font-weight:800;font-size:16px;letter-spacing:.2px;flex:none}
.brand:hover .logo{animation:wiggle .5s var(--ease)}
.brand .logo{
  width:34px;height:34px;border-radius:11px;color:#fff;font-size:14px;font-weight:800;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#5b7cff,#8c63ff 55%,#ff6f9c);
  box-shadow:0 6px 16px rgba(110,120,255,.42);
}
.brand small{display:block;font-size:10px;color:var(--ink-3);font-weight:700;letter-spacing:1.3px}

.nav{display:flex;align-items:center;gap:3px;flex:1;flex-wrap:wrap}
.nav a{
  padding:7px 12px;border-radius:11px;color:var(--ink-2);font-weight:600;font-size:13.5px;
  transition:background .18s var(--ease),color .18s var(--ease),transform .18s var(--ease);
  display:inline-flex;align-items:center;gap:6px;white-space:nowrap;
}
.nav a:hover{background:var(--brand-2);color:var(--brand-dark);transform:translateY(-2px)}
.nav a.active{
  background:linear-gradient(135deg,var(--brand),var(--violet));color:#fff;
  box-shadow:0 6px 16px rgba(74,108,247,.32);
}
.nav a b{
  font-size:11px;font-weight:800;background:var(--brand-2);color:var(--brand-dark);
  border-radius:20px;padding:1px 7px;min-width:20px;text-align:center;
}
.nav a.active b{background:rgba(255,255,255,.26);color:#fff}
.nav-sep{width:1px;height:20px;background:var(--line);margin:0 7px}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.pill{
  background:linear-gradient(135deg,#eef3ff,#f6efff);color:var(--brand-dark);
  font-size:12px;font-weight:700;padding:6px 13px;border-radius:20px;white-space:nowrap;
  border:1px solid #e3e9fb;display:inline-flex;align-items:center;gap:6px;
}
.pill::before{content:"⚡"}

/* ========================== 布局 ========================== */
.container{max-width:1260px;margin:0 auto;padding:24px 24px 64px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.page-head h2{margin:0;font-size:23px;letter-spacing:-.3px;display:flex;align-items:center;gap:9px}
.page-head h2 .ico{
  width:34px;height:34px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;
  font-size:17px;background:linear-gradient(135deg,var(--brand-2),var(--violet-2));border:1px solid #e6ebfb;
}
.page-head p{margin:5px 0 0;color:var(--ink-2)}
.grid{display:grid;gap:16px}
.card{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:20px;box-shadow:var(--shadow);transition:box-shadow .25s var(--ease),transform .25s var(--ease);
}
.card.tight{padding:16px}
.card.hoverable:hover{transform:translateY(-3px);box-shadow:0 16px 36px rgba(24,33,58,.10)}
.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.section-title h3{margin:0;font-size:15.5px;display:flex;align-items:center;gap:7px}
.muted{color:var(--ink-2)}
.small{font-size:12.5px}
.mono{font-family:"Cascadia Mono",Consolas,"Courier New",monospace}

/* 入场stagger */
.stagger > *{animation:fadeUp .5s var(--ease) both}
.stagger > *:nth-child(1){animation-delay:.02s}
.stagger > *:nth-child(2){animation-delay:.06s}
.stagger > *:nth-child(3){animation-delay:.10s}
.stagger > *:nth-child(4){animation-delay:.14s}
.stagger > *:nth-child(5){animation-delay:.18s}
.stagger > *:nth-child(6){animation-delay:.22s}
.stagger > *:nth-child(7){animation-delay:.26s}
.stagger > *:nth-child(8){animation-delay:.30s}
.stagger > *:nth-child(n+9){animation-delay:.34s}

/* ========================== 按钮 ========================== */
.btn{
  border:1px solid transparent;border-radius:12px;padding:9px 16px;font-size:13.5px;font-weight:700;
  cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:.18s var(--ease);
  background:#fff;color:var(--ink);position:relative;overflow:hidden;
}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0) scale(.985)}
.btn-primary{
  background:linear-gradient(135deg,var(--brand),var(--violet));color:#fff;
  box-shadow:0 8px 20px rgba(74,108,247,.32);
}
.btn-primary:hover{box-shadow:0 12px 26px rgba(74,108,247,.42)}
.btn-outline{border-color:var(--line);color:var(--ink-2);background:#fff}
.btn-outline:hover{border-color:#c6d3f7;color:var(--brand);background:#fbfcff}
.btn-ghost{background:var(--slate-bg);color:var(--ink-2)}
.btn-ghost:hover{background:#e3e9f7;color:var(--ink)}
.btn-danger{background:linear-gradient(135deg,#ff7b8a,#dc3545);color:#fff;box-shadow:0 8px 18px rgba(220,53,69,.26)}
.btn-sm{padding:6px 12px;font-size:12.5px;border-radius:10px}
.btn-lg{padding:13px 24px;font-size:15px;border-radius:14px}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}

/* ========================== 首页 Hero ========================== */
.hero{
  position:relative;overflow:hidden;
  display:grid;grid-template-columns:1.3fr .9fr;gap:20px;align-items:center;
  background:linear-gradient(135deg,#ffffff 0%,#f2f6ff 48%,#fdf3f8 100%);
  border:1px solid #e4eafb;border-radius:var(--radius-xl);
  padding:34px 34px 30px;margin-bottom:18px;
  box-shadow:0 18px 42px rgba(74,108,247,.10);
}
.hero-blob{position:absolute;filter:blur(2px);opacity:.55;pointer-events:none;z-index:0}
.hero-blob.b1{width:230px;height:230px;right:-54px;top:-70px;background:linear-gradient(135deg,#c9d8ff,#e6dcff);animation:blob 14s ease-in-out infinite}
.hero-blob.b2{width:170px;height:170px;right:190px;bottom:-92px;background:linear-gradient(135deg,#ffe0ec,#fff0d8);animation:blob 18s ease-in-out infinite reverse}
.hero-blob.b3{width:120px;height:120px;left:-46px;bottom:-52px;background:linear-gradient(135deg,#d8f6ec,#e2f2ff);animation:blob 16s ease-in-out infinite}
.hero > *{position:relative;z-index:1}
.eyebrow{
  display:inline-flex;align-items:center;gap:8px;font-size:11px;letter-spacing:2.2px;font-weight:800;
  color:var(--brand-dark);background:#eef3ff;border:1px solid #e0e8ff;border-radius:20px;padding:5px 13px;
}
.hero h1{font-size:31px;margin:14px 0 10px;line-height:1.24;letter-spacing:-.5px}
.hero h1 em{
  font-style:normal;
  background:linear-gradient(120deg,var(--brand),var(--violet) 55%,var(--pink));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero p{color:var(--ink-2);margin:0 0 20px;max-width:540px}
.hero-actions{display:flex;gap:10px;flex-wrap:wrap}
.hero-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.chip{
  font-size:12px;font-weight:700;color:var(--ink-2);background:#fff;border:1px solid var(--line);
  border-radius:20px;padding:5px 12px;display:inline-flex;align-items:center;gap:6px;
}
.hero-side{display:flex;flex-direction:column;align-items:center;gap:14px}
.hero-art{width:100%;max-width:330px;animation:float 6s ease-in-out infinite}
.hero-ring{
  justify-self:center;align-self:center;width:158px;height:158px;border-radius:50%;flex:none;
  background:conic-gradient(from -90deg,var(--brand) var(--deg,0deg),#e6ecf8 0deg);
  display:flex;align-items:center;justify-content:center;position:relative;
  box-shadow:0 10px 28px rgba(74,108,247,.16);
}
.hero-ring::before{content:"";position:absolute;inset:11px;border-radius:50%;background:#fff}
.hero-ring div{position:relative;text-align:center;line-height:1.25}
.hero-ring b{display:block;font-size:29px;letter-spacing:-1px}
.hero-ring span{font-size:11.5px;color:var(--ink-2)}

/* 统计卡 */
.stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:18px}
.stat{
  background:#fff;border:1px solid var(--line);border-radius:18px;padding:15px 16px 13px;
  box-shadow:var(--shadow);position:relative;overflow:hidden;
  transition:transform .22s var(--ease),box-shadow .22s var(--ease);
}
.stat:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(24,33,58,.11)}
.stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--brand)}
.stat .ico{font-size:19px;margin-bottom:5px}
.stat b{display:block;font-size:26px;line-height:1.15;letter-spacing:-.6px;font-variant-numeric:tabular-nums}
.stat span{font-size:12.5px;color:var(--ink-2);display:flex;align-items:center;gap:6px}
.stat i{font-style:normal;display:inline-block;width:8px;height:8px;border-radius:3px}
.stat.s-new::before{background:#9aa6bd}.stat.s-new .ico{color:#9aa6bd}
.stat.s-learning::before{background:var(--amber-2)}.stat.s-learning b{color:var(--amber)}
.stat.s-mastered::before{background:var(--green-2)}.stat.s-mastered b{color:var(--green)}
.stat.s-acc::before{background:var(--brand)}.stat.s-acc b{color:var(--brand)}

.feature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:6px}
.feature{
  background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;
  transition:.24s var(--ease);box-shadow:var(--shadow);position:relative;overflow:hidden;
}
.feature::after{content:"";position:absolute;inset:auto -30% -60% auto;width:150px;height:150px;border-radius:50%;
  background:radial-gradient(circle,rgba(74,108,247,.10),transparent 68%);opacity:0;transition:.3s var(--ease)}
.feature:hover{transform:translateY(-5px);border-color:#cfdcfb;box-shadow:var(--shadow-pop)}
.feature:hover::after{opacity:1}
.feature:hover em{animation:float 1.6s ease-in-out infinite}
.feature em{
  font-style:normal;font-size:21px;width:44px;height:44px;border-radius:14px;display:inline-flex;
  align-items:center;justify-content:center;background:linear-gradient(135deg,#eef3ff,#f5eeff);border:1px solid #e6ebfb;
}
.feature h4{margin:11px 0 4px;font-size:14.5px}
.feature p{margin:0;font-size:12.5px;color:var(--ink-2)}

.bar-wrap{height:9px;background:var(--slate-bg);border-radius:99px;overflow:hidden}
.bar{height:100%;border-radius:99px;background:linear-gradient(90deg,#4a6cf7,#8c63ff);transition:width .6s var(--ease)}
.bar.green{background:linear-gradient(90deg,#12a150,#3ecf86)}
.bar.shine{background-image:linear-gradient(90deg,#4a6cf7,#8c63ff,#4a6cf7);background-size:220% 100%;animation:shimmer 2.4s linear infinite}
.chart{display:flex;align-items:flex-end;gap:8px;height:100px;padding-top:6px}
.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px}
.chart .bar2{
  width:100%;max-width:36px;border-radius:8px 8px 0 0;min-height:5px;
  background:linear-gradient(180deg,#6b8bff,#c3d2ff);transition:height .5s var(--ease);
}
.chart .col:hover .bar2{background:linear-gradient(180deg,#4a6cf7,#8c63ff)}
.chart small{font-size:10.5px;color:var(--ink-3);white-space:nowrap}

/* ========================== 单词卡 ========================== */
.word-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:13px}
.word-card{
  background:#fff;border:1px solid var(--line);border-left:4px solid var(--line);
  border-radius:16px;padding:14px 15px;display:flex;flex-direction:column;gap:7px;
  transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease);
}
.word-card:hover{border-color:#cfdcfb;box-shadow:0 14px 30px rgba(24,33,58,.10);transform:translateY(-3px)}
.word-card[data-status="mastered"]{border-left-color:var(--green-2)}
.word-card[data-status="learning"]{border-left-color:var(--amber-2)}
.word-card[data-status="new"]{border-left-color:#c9d3e6}
.word-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.word-top h4{margin:0;font-size:16.5px;letter-spacing:-.2px}
.word-top h4 a{color:inherit;transition:color .15s}
.word-top h4 a:hover{color:var(--brand)}
.ipa{font-size:12.5px;color:var(--brand);white-space:nowrap}
.word-card .cn{
  font-size:13px;color:var(--ink-2);margin:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.pager{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:22px;flex-wrap:wrap}
.pager a,.pager span{
  min-width:38px;height:36px;padding:0 11px;border-radius:11px;display:inline-flex;
  align-items:center;justify-content:center;border:1px solid var(--line);background:#fff;
  font-size:13px;color:var(--ink-2);transition:.16s var(--ease);
}
.pager a:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-2px)}
.pager .cur{background:linear-gradient(135deg,var(--brand),var(--violet));border-color:transparent;color:#fff;font-weight:700;box-shadow:0 6px 14px rgba(74,108,247,.3)}
.pager .info{border:0;background:transparent;color:var(--ink-3)}

.tags{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.tag{font-size:11px;padding:3px 9px;border-radius:7px;background:var(--slate-bg);color:var(--ink-2);font-weight:600}
.tag.blue{background:var(--brand-2);color:var(--brand-dark)}
.tag.green{background:var(--green-bg);color:var(--green)}
.tag.amber{background:var(--amber-bg);color:var(--amber)}
.tag.red{background:var(--red-bg);color:var(--red)}

/* ========================== 工具栏 ========================== */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.field{display:flex;align-items:center;gap:6px}
.input,select{
  height:38px;border:1px solid var(--line);border-radius:11px;padding:0 13px;font-size:13.5px;
  background:#fff;color:var(--ink);outline:none;transition:.16s var(--ease);font-family:inherit;
}
input.input{min-width:240px}
.input:hover,select:hover{border-color:#cfd9ee}
.input:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(74,108,247,.13)}
.letter-row{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:2px}
.letter{
  width:33px;height:33px;border-radius:10px;border:1px solid var(--line);background:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:12.5px;
  color:var(--ink-2);text-transform:uppercase;cursor:pointer;transition:.15s var(--ease);
}
.letter:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-2px) scale(1.05)}
.letter.on{background:linear-gradient(135deg,var(--brand),var(--violet));border-color:transparent;color:#fff;box-shadow:0 6px 14px rgba(74,108,247,.28)}
.letter.off{opacity:.4}
.letter.all{width:auto;padding:0 13px}

/* ========================== 详情 ========================== */
.detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.detail-word{font-size:40px;font-weight:800;letter-spacing:-1.2px;margin:0;line-height:1.14}
.detail-ipa{font-size:16px;color:var(--brand);margin-left:12px;font-weight:600}
.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}
.kv b{display:block;font-size:11.5px;letter-spacing:1.4px;color:var(--ink-3);margin-bottom:5px}
.kv p{margin:0;font-size:14.5px}
.example{background:linear-gradient(135deg,#f8faff,#fbf8ff);border:1px solid var(--line-2);border-radius:14px;padding:15px 17px}
.example .en{font-size:15px;margin:0 0 6px}
.example .zh{font-size:13.5px;color:var(--ink-2);margin:0}
.fav-btn{cursor:pointer;user-select:none;transition:transform .18s var(--ease)}
.fav-btn:hover{transform:scale(1.2) rotate(-6deg)}
.fav-btn.on .star{color:var(--amber-2)}
.detail-nav{display:flex;gap:10px;justify-content:space-between;margin-top:22px}

/* ========================== 发音按钮 ========================== */
.speak{
  width:36px;height:36px;border-radius:12px;border:1px solid var(--line);background:#fff;
  color:var(--brand);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  font-size:15px;transition:.18s var(--ease);flex:none;
}
.speak:hover{background:var(--brand-2);border-color:#c9d8fb;transform:scale(1.08)}
.speak.sm{width:29px;height:29px;font-size:12px;border-radius:9px}
.speak.big{
  width:70px;height:70px;border-radius:24px;font-size:28px;color:#fff;border-color:transparent;
  background:linear-gradient(135deg,var(--brand),var(--violet));box-shadow:0 12px 28px rgba(74,108,247,.36);
}
.speak.big:hover{transform:scale(1.06) translateY(-2px)}
.speak.playing{animation:pulse 1.1s infinite}

/* ========================== 测试 ========================== */
.quiz-wrap{max-width:780px;margin:0 auto}
.quiz-card{
  background:#fff;border:1px solid var(--line);border-radius:24px;padding:30px;
  box-shadow:0 16px 40px rgba(24,33,58,.09);position:relative;overflow:hidden;
}
.quiz-card::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;
  background:linear-gradient(90deg,var(--brand),var(--violet),var(--pink))}
.quiz-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}
.quiz-top .mode-badge{
  display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:800;color:var(--brand-dark);
  background:var(--brand-2);border-radius:20px;padding:5px 12px;white-space:nowrap;
}
.progress-line{flex:1;height:9px;background:var(--slate-bg);border-radius:99px;margin:0 14px;overflow:hidden}
.progress-line i{
  display:block;height:100%;width:0;border-radius:99px;transition:width .4s var(--ease);
  background:linear-gradient(90deg,#4a6cf7,#8c63ff,#4a6cf7);background-size:220% 100%;
  animation:shimmer 2.4s linear infinite;
}
.quiz-count{font-weight:800;font-size:13.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.quiz-prompt{text-align:center;padding:20px 10px 10px;animation:fadeUp .4s var(--ease)}
.quiz-word{font-size:42px;font-weight:800;letter-spacing:-1.2px;margin:0}
.quiz-ipa{color:var(--brand);font-size:16px;margin-top:5px}
.quiz-cn{font-size:25px;font-weight:700;margin:0;letter-spacing:-.3px}
.quiz-sub{color:var(--ink-2);margin-top:7px}
.options{display:grid;gap:10px;margin-top:20px}
.option{
  border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:#fff;cursor:pointer;
  font-size:15px;text-align:left;transition:.16s var(--ease);display:flex;gap:12px;align-items:center;
}
.option:hover{border-color:#bfd0f8;background:#fafbff;transform:translateX(4px)}
.option .idx{
  width:26px;height:26px;border-radius:9px;background:var(--slate-bg);color:var(--ink-2);
  display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex:none;
  transition:.16s var(--ease);
}
.option.picked{border-color:var(--brand);background:var(--brand-2)}
.option.picked .idx{background:var(--brand);color:#fff}
.option.right{border-color:var(--green);background:var(--green-bg)}
.option.right .idx{background:var(--green);color:#fff}
.option.wrong{border-color:var(--red);background:var(--red-bg);animation:wiggle .3s}
.option.wrong .idx{background:var(--red);color:#fff}
.option[disabled]{cursor:default}
.feedback{margin-top:18px;border-radius:16px;padding:16px 18px;display:none}
.feedback.show{display:block;animation:pop .3s var(--ease)}
.feedback.ok{background:linear-gradient(135deg,#e8f9f0,#f2fdf7);border:1px solid #b9e8ce}
.feedback.no{background:linear-gradient(135deg,#fdeded,#fff5f5);border:1px solid #f6caca}
.feedback h4{margin:0 0 8px;font-size:16px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.feedback .en{font-size:14.5px;margin:0 0 4px}
.feedback .zh{font-size:13.5px;color:var(--ink-2);margin:0}
.spell-input{
  width:100%;height:58px;border:2px solid var(--line);border-radius:16px;padding:0 18px;
  font-size:21px;letter-spacing:2px;text-align:center;outline:none;font-family:inherit;
  transition:.18s var(--ease);background:#fcfdff;
}
.spell-input:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 5px rgba(74,108,247,.12)}
.spell-input.ok{border-color:var(--green);background:var(--green-bg)}
.spell-input.no{border-color:var(--red);background:var(--red-bg)}
.setup-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}
.opt-card{
  border:1px solid var(--line);border-radius:16px;padding:15px;cursor:pointer;background:#fff;
  transition:.18s var(--ease);position:relative;
}
.opt-card:hover{border-color:#bfd0f8;transform:translateY(-2px);box-shadow:var(--shadow)}
.opt-card b{display:block;font-size:14px;margin-bottom:3px;display:flex;align-items:center;gap:7px}
.opt-card span{font-size:12px;color:var(--ink-2)}
.opt-card.on{border-color:var(--brand);background:linear-gradient(135deg,#eef3ff,#f6efff);box-shadow:0 0 0 3px rgba(74,108,247,.12)}
.opt-card.on::after{content:"✓";position:absolute;top:10px;right:12px;color:var(--brand);font-weight:900}
.result-ring{
  width:158px;height:158px;border-radius:50%;margin:0 auto;flex:none;
  background:conic-gradient(from -90deg,#12a150 var(--deg,0deg),#e6ecf8 0deg);
  display:flex;align-items:center;justify-content:center;position:relative;
}
.result-ring::before{content:"";position:absolute;inset:11px;border-radius:50%;background:#fff}
.result-ring div{position:relative;text-align:center;line-height:1.25}
.result-ring b{display:block;font-size:31px;letter-spacing:-1px}
.result-ring span{font-size:12px;color:var(--ink-2)}
.result-emoji{font-size:52px;text-align:center;animation:pop .5s var(--ease)}
.result-art{width:230px;margin:0 auto;animation:float 5s ease-in-out infinite}

/* 成绩评语条 */
.verdict{
  display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:14px;
  padding:7px 16px;border-radius:20px;background:var(--brand-2);color:var(--brand-dark);
}
.verdict.great{background:var(--green-bg);color:var(--green)}
.verdict.good{background:var(--sky-2);color:#0284c7}
.verdict.soso{background:var(--amber-bg);color:var(--amber)}
.verdict.bad{background:var(--red-bg);color:var(--red)}

/* ========================== 表格 ========================== */
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line-2)}
th{font-size:11.5px;letter-spacing:1px;color:var(--ink-3);font-weight:700;text-transform:uppercase}
tbody tr{transition:background .16s}
tbody tr:hover{background:#f8faff}
td .mono{font-size:12px;color:var(--ink-3)}
.score-pill{display:inline-block;padding:2px 9px;border-radius:20px;font-weight:700;font-size:12.5px}
.score-pill.hi{background:var(--green-bg);color:var(--green)}
.score-pill.mid{background:var(--amber-bg);color:var(--amber)}
.score-pill.lo{background:var(--red-bg);color:var(--red)}

/* ========================== 空状态 ========================== */
.empty{text-align:center;padding:44px 20px 50px;color:var(--ink-2);animation:fadeUp .5s var(--ease)}
.empty img{width:180px;margin:0 auto 14px;opacity:.96;animation:float 6s ease-in-out infinite}
.empty em{font-style:normal;font-size:44px;display:block;margin-bottom:10px}
.empty b{display:block;font-size:16px;color:var(--ink);margin-bottom:6px}
.empty p{margin:0}
.empty .btn{margin-top:16px}

/* ========================== 徽章 / 成就 ========================== */
.badge-row{display:flex;gap:10px;flex-wrap:wrap}
.badge{
  display:flex;align-items:center;gap:9px;border:1px solid var(--line);background:#fff;
  border-radius:14px;padding:10px 14px;transition:.2s var(--ease);opacity:.45;filter:grayscale(1);
}
.badge.got{opacity:1;filter:none;border-color:#e2e9fb;background:linear-gradient(135deg,#fff,#f7f9ff);box-shadow:var(--shadow)}
.badge.got:hover{transform:translateY(-3px) scale(1.03)}
.badge em{font-style:normal;font-size:20px}
.badge div b{display:block;font-size:13px}
.badge div span{font-size:11.5px;color:var(--ink-3)}
.streak-card{
  display:flex;align-items:center;gap:16px;
  background:linear-gradient(135deg,#fff7ec,#fff1e2);border:1px solid #ffe0bd;border-radius:18px;padding:16px 20px;
}
.streak-card .flame{font-size:38px;animation:float 2.6s ease-in-out infinite}
.streak-card b{font-size:26px;letter-spacing:-.5px;display:block;line-height:1.15}
.streak-card span{font-size:12.5px;color:var(--ink-2)}

/* ========================== Toast / 彩带 ========================== */
.toast{
  position:fixed;left:50%;bottom:34px;transform:translateX(-50%) translateY(20px);
  background:#18213a;color:#fff;padding:11px 20px;border-radius:14px;font-size:13.5px;opacity:0;
  transition:.28s var(--ease);pointer-events:none;z-index:200;box-shadow:0 12px 30px rgba(24,33,58,.28);
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.confetti{position:fixed;inset:0;pointer-events:none;z-index:150;overflow:hidden}
.confetti i{
  position:absolute;top:-14px;width:10px;height:14px;border-radius:2px;opacity:.95;
  animation:fall linear forwards;
}
.footer{text-align:center;color:var(--ink-3);font-size:12px;padding:30px 0 0}
.footer .heart{color:var(--pink)}

/* ========================== 响应式 ========================== */
@media(max-width:1100px){
  .stat-grid{grid-template-columns:repeat(3,1fr)}
  .feature-grid{grid-template-columns:repeat(2,1fr)}
  .hero{grid-template-columns:1fr}
  .hero-side{display:none}
}
@media(max-width:760px){
  .topbar-inner{height:auto;padding:10px 14px;flex-wrap:wrap;gap:10px}
  .nav{order:3;width:100%;overflow-x:auto}
  .container{padding:16px 14px 44px}
  .detail-grid,.setup-grid{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .hero{padding:24px 20px}
  .hero h1{font-size:25px}
}
