  :root{
    --bg1:#eef2ff; --bg2:#f8fafc;
    --card:#ffffff; --ink:#0f172a; --ink2:#334155; --muted:#64748b;
    --line:#e8edf5; --brand:#6366f1; --brand2:#8b5cf6; --brand-soft:#eef2ff;
    --ok:#10b981; --ok-soft:#ecfdf5; --bad:#f43f5e; --bad-soft:#fff1f2;
    --warn:#f59e0b; --warn-soft:#fff7ed;
    --grad:linear-gradient(135deg,#6366f1,#8b5cf6);
    --shadow-sm:0 1px 2px rgba(15,23,42,.06);
    --shadow:0 4px 14px rgba(79,70,229,.08),0 2px 6px rgba(15,23,42,.05);
    --shadow-lg:0 18px 50px rgba(79,70,229,.14);
    --radius:18px; --radius-sm:12px;
  }
  *{box-sizing:border-box}
  body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
    background:
     radial-gradient(1200px 600px at 10% -10%, #e0e7ff 0%, transparent 60%),
     radial-gradient(1000px 500px at 100% 0%, #f3e8ff 0%, transparent 55%),
     linear-gradient(180deg,var(--bg1),var(--bg2));
    background-attachment:fixed;
    color:var(--ink);line-height:1.6;}
  header{position:sticky;top:0;z-index:20;backdrop-filter:blur(10px);
    background:rgba(255,255,255,.72);border-bottom:1px solid var(--line);
    display:flex;align-items:center;gap:8px;padding:10px 16px;flex-wrap:wrap;}
  header .logo{font-weight:800;font-size:18px;color:var(--ink);margin-right:auto;letter-spacing:.3px;}
  nav{display:inline-flex;gap:4px;background:#fff;border:1px solid var(--line);
    border-radius:999px;padding:5px;box-shadow:var(--shadow-sm);}
  nav a{text-decoration:none;color:var(--muted);font-size:14px;padding:8px 16px;border-radius:999px;font-weight:600;transition:.18s;}
  nav a:hover{color:var(--ink);background:#f1f5f9;}
  nav a.active{background:var(--grad);color:#fff;box-shadow:var(--shadow);}
  .wrap{max-width:1040px;margin:0 auto;padding:22px 16px 60px;}
  .card{background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:var(--radius);
    padding:22px;margin-bottom:18px;box-shadow:var(--shadow);backdrop-filter:blur(4px);}
  .grid{display:grid;gap:14px;}
  .stats-grid{grid-template-columns:repeat(4,1fr);}
  @media(max-width:600px){.stats-grid{grid-template-columns:repeat(2,1fr);}}
  .stat{border-radius:var(--radius-sm);padding:16px 14px;color:#fff;position:relative;overflow:hidden;box-shadow:var(--shadow);text-align:center;}
  .stats-grid .stat:nth-child(1){background:linear-gradient(135deg,#6366f1,#818cf8);}
  .stats-grid .stat:nth-child(2){background:linear-gradient(135deg,#10b981,#34d399);}
  .stats-grid .stat:nth-child(3){background:linear-gradient(135deg,#f59e0b,#fbbf24);}
  .stats-grid .stat:nth-child(4){background:linear-gradient(135deg,#8b5cf6,#a78bfa);}
  .stats-grid .stat:nth-child(5){background:linear-gradient(135deg,#ec4899,#f472b6);}
  .stats-grid .stat:nth-child(6){background:linear-gradient(135deg,#06b6d4,#22d3ee);}
  .stats-grid .stat:nth-child(7){background:linear-gradient(135deg,#84cc16,#a3e635);}
  .stats-grid .stat:nth-child(8){background:linear-gradient(135deg,#f43f5e,#fb7185);}
  .stat .num{font-size:30px;font-weight:800;line-height:1;color:#fff;}
  .stat .lbl{font-size:12px;opacity:.92;margin-top:6px;}
  h2{font-size:20px;margin:0 0 14px;}
  h3{font-size:15px;margin:14px 0 8px;color:var(--ink);}
  .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;border:none;
    background:var(--grad);color:#fff;padding:11px 18px;border-radius:12px;font-size:15px;font-weight:600;box-shadow:var(--shadow-sm);transition:.18s;}
  .btn:hover{transform:translateY(-1px);box-shadow:var(--shadow);}
  .btn.ghost{background:#fff;color:var(--brand);border:1px solid var(--brand);box-shadow:none;}
  .btn.soft{background:var(--brand-soft);color:var(--brand);box-shadow:none;}
  .btn.gray{background:#f1f5f9;color:var(--muted);box-shadow:none;}
  .btn.sm{padding:7px 12px;font-size:13px;border-radius:10px;}
  .btn.lg{padding:16px 36px;font-size:18px;border-radius:14px;}
  .btn:disabled{opacity:.5;cursor:not-allowed;transform:none;}
  .modes{grid-template-columns:repeat(2,1fr);}
  @media(max-width:600px){.modes{grid-template-columns:1fr;}}
  .mode{border:none;border-radius:var(--radius-sm);padding:22px 20px;cursor:pointer;transition:.18s;
    box-shadow:var(--shadow);position:relative;overflow:hidden;color:#fff;text-align:center;}
  .mode:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);}
  .mode .t{font-weight:700;font-size:18px;margin-bottom:8px;color:#fff;}
  .mode .d{font-size:13px;color:rgba(255,255,255,.9);}
  /* 4种练习模式的渐变色 */
  .mode[data-mode="sequence"]{background:linear-gradient(135deg,#6366f1,#8b5cf6);}
  .mode[data-mode="random"]{background:linear-gradient(135deg,#10b981,#34d399);}
  .mode[data-mode="topic"]{background:linear-gradient(135deg,#f59e0b,#fbbf24);}
  .mode[data-mode="exam"]{background:linear-gradient(135deg,#ec4899,#f472b6);}
  .mode[data-mode="sequence"]:hover{background:linear-gradient(135deg,#4f46e5,#7c3aed);}
  .mode[data-mode="random"]:hover{background:linear-gradient(135deg,#059669,#10b981);}
  .mode[data-mode="topic"]:hover{background:linear-gradient(135deg,#d97706,#f59e0b);}
  .mode[data-mode="exam"]:hover{background:linear-gradient(135deg,#db2777,#ec4899);}
  .badge{display:inline-block;font-size:12px;padding:3px 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-weight:600;border:1px solid var(--line);}
  .badge.warn{background:var(--warn-soft);color:var(--warn);border-color:#fed7aa;}
  .badge.ok{background:var(--ok-soft);color:var(--ok);border-color:#bbf7d0;}
  select,input,textarea{font:inherit;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);width:100%;transition:.15s;}
  select:focus,input:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-soft);}
  textarea{resize:vertical;min-height:120px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;}
  .row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;}
  .opt{display:flex;align-items:center;gap:12px;border:1.5px solid var(--line);border-radius:14px;padding:14px;margin:10px 0;cursor:pointer;background:#fff;transition:.16s;}
  .opt:hover{border-color:#c7d2fe;background:#fafbff;transform:translateX(2px);}
  .opt.sel{border-color:var(--brand);background:var(--brand-soft);}
  .opt.correct{border-color:var(--ok);background:var(--ok-soft);}
  .opt.wrong{border-color:var(--bad);background:var(--bad-soft);}
  .opt input{flex:none;width:auto;padding:0;border:none;background:transparent;margin:0;cursor:pointer;}
  .opt .lbl{font-weight:800;width:30px;height:30px;flex:none;border-radius:9px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;}
  .opt .body{flex:1;min-width:0;line-height:1.55;}
  /* 选项图统一方案：height:3em（≈39px @13px 选项字号），用户选定放大以便看清瘦高公式。
     用 em 单位跟随各页字号；三处渲染路径（quiz / 解析预览 / 统计页）结构相同，故尺寸一致。
     更高特异性 (.opt-img .qfig img / .opt .body.opt-img-body .qfig img) 覆盖 .qfig img 默认 max-height:280。 */
  .opt .body.opt-img-body{padding:4px 0;display:flex;align-items:center;gap:6px;}
  .opt .body.opt-img-body .qfig{display:inline-block;max-width:90px;margin:0;vertical-align:middle;}
  .opt .body.opt-img-body .qfig img{height:3em;width:auto;max-width:10em;display:inline-block;vertical-align:middle;margin:0;object-fit:contain;}
  /* 纯图片选项（如受力分析图/电路图）：大尺寸独立显示 */
  .opt .body.opt-img-only{display:block;padding:8px 0;}
  .opt .body.opt-img-only .qfig{display:block;max-width:280px;margin:0 auto;}
  .opt .body.opt-img-only .qfig img{height:auto;max-height:220px;max-width:280px;display:block;margin:0 auto;object-fit:contain;}
  .opt-img{display:inline-block;vertical-align:middle;margin:0 2px;line-height:0;font-size:0;}
  .opt-img .qfig{display:inline-block;margin:0;padding:0;vertical-align:middle;border:none;background:transparent;line-height:0;overflow:visible;max-width:100%;}
  .opt-img .qfig img{display:inline-block;max-height:72px;height:auto;width:auto;max-width:320px;vertical-align:middle;object-fit:contain;line-height:0;}
  .opt-img .qmath{font-size:15px;line-height:1.4;}  /* 覆盖父级 font-size:0，确保公式可见 */
  .qmeta{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:10px;font-size:12px;}
  .explain{background:linear-gradient(180deg,#fafbff,#f8fafc);border:1px dashed #cbd5e1;border-radius:14px;padding:16px;margin-top:14px;font-size:14px;}
  .explain .h{font-weight:700;margin-bottom:8px;color:var(--brand);}
  .opt-review{margin:10px 0 4px;display:flex;flex-direction:column;gap:6px;}
  .optr{display:flex;align-items:flex-start;gap:8px;padding:6px 10px;border-radius:8px;font-size:14px;line-height:1.5;}
  .optr .mk{font-weight:800;flex:none;width:18px;text-align:center;}
  .optr .lk{font-weight:700;flex:none;width:16px;}
  .optr.ok{background:#eafaf0;border:1px solid #b7e4c7;}
  .optr.ok .mk{color:#1f9d55;}
  .optr.no{background:#fdeef0;border:1px solid #f5c2c7;}
  .optr.no .mk{color:#e03131;}
  .optr .ot{color:var(--ink);}
  .exp-body{margin-top:10px;white-space:pre-wrap;line-height:1.65;color:var(--ink);}
  .ai-box{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px;margin-top:10px;font-size:14px;white-space:pre-wrap;}
  .ai-text{white-space:pre-wrap;line-height:1.7;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:14px;}
  /* 首页 AI 对话 */
  .chat-box{max-height:360px;overflow:auto;display:flex;flex-direction:column;gap:10px;margin:10px 0 4px;padding-right:4px;}
  .chat-msg{padding:11px 14px;border-radius:14px;font-size:14px;line-height:1.6;white-space:pre-wrap;max-width:92%;word-break:break-word;box-shadow:var(--shadow-sm);}
  .chat-msg.user{background:var(--grad);color:#fff;align-self:flex-end;border-bottom-right-radius:3px;}
  .chat-msg.ai{background:#f5f3ff;border:1px solid #ede9fe;color:var(--ink);align-self:flex-start;border-bottom-left-radius:3px;}
  .chat-quick{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px;}
  .chat-msg .cursor{display:inline-block;width:7px;color:var(--brand);animation:blinker 1s steps(2,start) infinite;margin-left:1px;}
  @keyframes blinker{50%{opacity:0;}}
  .qfig{margin:10px auto;text-align:center;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:#fafbff;padding:6px;}
  .qfig img{max-width:100%;max-height:280px;border-radius:8px;background:#fff;display:block;margin:0 auto;}
  .qfig-svg svg{display:block;margin:0 auto;max-width:100%;max-height:300px;}
  .qfig-desc{font-size:12px;color:var(--muted,#7a7a7a);padding:6px 10px;background:#f8fafc;border:1px dashed var(--line);border-radius:8px;margin-top:6px;}
  .qmath{display:inline-block;max-width:100%;overflow-x:auto;vertical-align:middle;}
  .opt .body.opt-img-body .qfig{max-width:90px;}
  .opt .body.opt-img-body .qmath{font-size:0.92em;}
  .math-fallback{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--muted,#7a7a7a);}
  .result-item{border:1px solid var(--line);border-radius:12px;padding:14px;margin:10px 0;background:#fff;box-shadow:var(--shadow-sm);}
  .bar-row{display:flex;align-items:center;gap:10px;margin:6px 0;font-size:13px;}
  .bar-row .name{width:130px;flex:none;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .bar-track{flex:1;background:#eef1f5;border-radius:6px;height:18px;position:relative;overflow:hidden;}
  .bar-fill{height:100%;border-radius:6px;}
  .bar-val{width:46px;flex:none;text-align:right;color:var(--muted);}
  .rec{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:10px;margin:8px 0;}
  .muted{color:var(--muted);font-size:13px;}
  .hidden{display:none!important;}
  .timer{font-weight:700;color:var(--warn);}
  table{width:100%;border-collapse:collapse;font-size:13px;}
  th,td{border:1px solid var(--line);padding:6px 8px;text-align:left;}
  th{background:#f8fafc;}
  .tips{font-size:13px;color:var(--muted);background:var(--warn-soft);border:1px solid #fde9c8;border-radius:12px;padding:12px;margin:12px 0;line-height:1.7;}
  .toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:12px;font-size:14px;z-index:50;opacity:0;transition:.25s;pointer-events:none;box-shadow:var(--shadow-lg);}
  .toast.show{opacity:1;}
  .spinner{display:inline-block;width:14px;height:14px;border:2px solid #fff;border-top-color:transparent;border-radius:50%;animation:s .7s linear infinite;vertical-align:-2px;}
  @keyframes s{to{transform:rotate(360deg)}}
  .seg{display:inline-flex;border:1px solid var(--line);border-radius:12px;overflow:hidden;}
  .seg button{border:none;background:#fff;padding:8px 14px;cursor:pointer;font:inherit;color:var(--muted);transition:.15s;}
  .seg button.on{background:var(--grad);color:#fff;font-weight:600;}
  .smart-table{width:100%;border-collapse:collapse;font-size:13px;min-width:780px;}
  .smart-table th,.smart-table td{border:1px solid var(--line);padding:6px 8px;vertical-align:top;}
  .smart-table select,.smart-table input,.smart-table textarea{width:100%;box-sizing:border-box;}
  @media(max-width:600px){
    .wrap{padding:14px 10px 60px;}
    header{padding:8px 10px;gap:6px;}
    .logo{font-size:16px;}
    nav{overflow-x:auto;flex-wrap:nowrap;white-space:nowrap;-webkit-overflow-scrolling:touch;}
    nav a{padding:6px 10px;font-size:13px;}
    #quiz-question{font-size:16px;line-height:1.6;}
    .opt{padding:14px 12px;gap:12px;}
    .opt .body{font-size:15px;}
    .bar-row .name{width:88px;font-size:12px;}
    #bank-list table{font-size:12px;}
    .stat .num{font-size:22px;}
    .seg button{padding:8px 10px;font-size:13px;}
    .explain{font-size:14px;}
    .mode{padding:14px;}
  }

/* ============ 深色模式 ============ */
body.dark{
  --bg1:#0f172a; --bg2:#1e293b;
  --card:#1e293b; --ink:#f1f5f9; --ink2:#cbd5e1; --muted:#94a3b8;
  --line:#334155; --brand:#818cf8; --brand2:#a78bfa; --brand-soft:#1e1b4b;
  --ok:#34d399; --ok-soft:#064e3b; --bad:#fb7185; --bad-soft:#4c0519;
  --warn:#fbbf24; --warn-soft:#451a03;
  --grad:linear-gradient(135deg,#6366f1,#8b5cf6);
  --shadow-sm:0 1px 2px rgba(0,0,0,.3);
  --shadow:0 4px 14px rgba(0,0,0,.3),0 2px 6px rgba(0,0,0,.2);
  --shadow-lg:0 18px 50px rgba(0,0,0,.4);
  background:
    radial-gradient(1200px 600px at 10% -10%, #1e1b4b 0%, transparent 60%),
    radial-gradient(1000px 500px at 100% 0%, #2e1065 0%, transparent 55%),
    linear-gradient(180deg,var(--bg1),var(--bg2));
}
body.dark header{background:rgba(15,23,42,.72);}
body.dark .card{background:rgba(30,41,59,.85);}
body.dark .opt{background:#1e293b;}
body.dark .opt:hover{background:#263449;}
body.dark .opt.sel{background:#1e1b4b;}
body.dark select,body.dark input,body.dark textarea{background:#0f172a;color:#f1f5f9;border-color:#334155;}
body.dark select:focus,body.dark input:focus,body.dark textarea:focus{border-color:#818cf8;box-shadow:0 0 0 4px rgba(129,140,248,.15);}
body.dark .btn.ghost{background:#1e293b;color:#818cf8;border-color:#818cf8;}
body.dark .btn.soft{background:#1e1b4b;color:#818cf8;}
body.dark .btn.gray{background:#334155;color:#94a3b8;}
body.dark .chat-msg.ai{background:#1e1b4b;border-color:#312e81;color:#f1f5f9;}
body.dark .qfig{background:#0f172a;border-color:#334155;}
body.dark .qfig-desc{background:#1e293b;border-color:#334155;color:#94a3b8;}
body.dark .result-item{background:#1e293b;}
body.dark .bar-track{background:#334155;}
body.dark table th{background:#0f172a;}
body.dark .seg button{background:#1e293b;color:#94a3b8;}
body.dark .seg button.on{background:var(--grad);color:#fff;}
body.dark .math-fallback{color:#94a3b8;}
body.dark .tips{background:#451a03;border-color:#78350f;color:#fbbf24;}
body.dark .toast{background:#f1f5f9;color:#0f172a;}
/* 深色模式下练习卡片保持渐变色，稍微调整亮度更协调 */
body.dark .mode[data-mode="sequence"]{background:linear-gradient(135deg,#4f46e5,#7c3aed);}
body.dark .mode[data-mode="random"]{background:linear-gradient(135deg,#059669,#10b981);}
body.dark .mode[data-mode="topic"]{background:linear-gradient(135deg,#d97706,#f59e0b);}
body.dark .mode[data-mode="exam"]{background:linear-gradient(135deg,#db2777,#ec4899);}
body.dark .mode[data-mode="sequence"]:hover{background:linear-gradient(135deg,#4338ca,#6d28d9);}
body.dark .mode[data-mode="random"]:hover{background:linear-gradient(135deg,#047857,#059669);}
body.dark .mode[data-mode="topic"]:hover{background:linear-gradient(135deg,#b45309,#d97706);}
body.dark .mode[data-mode="exam"]:hover{background:linear-gradient(135deg,#be185d,#db2777);}
body.dark .mode{border-color:transparent;}
body.dark .mode:hover{border-color:transparent;}
body.dark .explain{background:#0f172a;border-color:#334155;}
body.dark .explain .h{color:#f1f5f9;}
body.dark .optr.ok{background:#064e3b;border-color:#34d399;}
body.dark .optr.no{background:#4c0519;border-color:#fb7185;}
body.dark .exp-body{color:#cbd5e1;}
body.dark .ai-box{background:#0f172a;border-color:#334155;}
body.dark .ai-text{color:#cbd5e1;}
body.dark .result-item{background:#1e293b;border-color:#334155;}
body.dark .rec{background:#1e293b;border-color:#334155;}
body.dark .qmeta .badge{background:#1e1b4b;color:#818cf8;border-color:#312e81;}
body.dark .qmeta .badge.warn{background:#451a03;color:#fbbf24;border-color:#78350f;}
body.dark .qmeta .badge.ok{background:#064e3b;color:#34d399;border-color:#065f46;}

/* 深色模式切换开关 */
.theme-toggle{display:inline-flex;align-items:center;gap:6px;cursor:pointer;padding:6px 12px;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:13px;font-weight:600;color:var(--muted);transition:.18s;}
.theme-toggle:hover{color:var(--ink);background:#f1f5f9;}
body.dark .theme-toggle{background:#1e293b;border-color:#334155;color:#94a3b8;}
body.dark .theme-toggle:hover{color:#f1f5f9;background:#263449;}

/* 收藏/笔记按钮 */
.q-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.q-actions .btn.sm{font-size:12px;padding:6px 10px;}
.fav-btn.active{background:#fef3c7;color:#92400e;border-color:#fbbf24;}
body.dark .fav-btn.active{background:#451a03;color:#fbbf24;border-color:#fbbf24;}
.note-box{margin-top:10px;padding:10px 12px;background:#f8fafc;border:1px solid var(--line);border-radius:10px;}
.note-box textarea{width:100%;min-height:60px;font-size:13px;resize:vertical;margin-bottom:6px;}
body.dark .note-box{background:#0f172a;border-color:#334155;}
.note-display{font-size:13px;color:var(--ink2);background:#fefce8;padding:8px 10px;border-radius:8px;border-left:3px solid #fbbf24;margin-top:6px;white-space:pre-wrap;}
body.dark .note-display{background:#451a03;border-left-color:#fbbf24;color:#fde68a;}

/* 艾宾浩斯复习提醒 */
.review-badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;background:#dbeafe;color:#1e40af;font-weight:600;margin-left:6px;}
.review-badge.due{background:#fee2e2;color:#dc2626;}
body.dark .review-badge{background:#1e3a8a;color:#93c5fd;}
body.dark .review-badge.due{background:#4c0519;color:#fb7185;}
.review-due{background:#fef2f2;border:1px solid #fecaca;border-radius:12px;padding:12px;margin-bottom:12px;}
body.dark .review-due{background:#4c0519;border-color:#7f1d1d;}

/* ============ 字体大小调整 ============ */
body.font-small{font-size:13px;}
body.font-small .opt .body{font-size:13px;}
body.font-small #quiz-question{font-size:14px;}
body.font-small h2{font-size:17px;}
body.font-small .stat .num{font-size:24px;}

body.font-medium{font-size:15px;}
body.font-medium .opt .body{font-size:15px;}
body.font-medium #quiz-question{font-size:16px;}
body.font-medium h2{font-size:20px;}
body.font-medium .stat .num{font-size:30px;}

body.font-large{font-size:17px;}
body.font-large .opt .body{font-size:17px;}
body.font-large #quiz-question{font-size:19px;}
body.font-large h2{font-size:23px;}
body.font-large .stat .num{font-size:36px;}
body.font-large .btn{font-size:16px;padding:13px 20px;}
body.font-large input,body.font-large select,body.font-large textarea{font-size:16px;padding:13px 15px;}

body.font-xlarge{font-size:19px;}
body.font-xlarge .opt .body{font-size:19px;}
body.font-xlarge #quiz-question{font-size:22px;}
body.font-xlarge h2{font-size:26px;}
body.font-xlarge .stat .num{font-size:42px;}
body.font-xlarge .btn{font-size:18px;padding:15px 24px;}
body.font-xlarge input,body.font-xlarge select,body.font-xlarge textarea{font-size:18px;padding:15px 18px;}
body.font-xlarge .badge{font-size:14px;padding:5px 12px;}


/* ============ 成就徽章 ============ */
.achievement-badge{
  width:100px;
  padding:10px 8px;
  border-radius:12px;
  text-align:center;
  border:1px solid var(--line);
  background:var(--card);
  transition:.2s;
}
.achievement-badge.unlocked{
  background:linear-gradient(135deg,#fef3c7,#fde68a);
  border-color:#fbbf24;
  box-shadow:0 2px 8px rgba(251,191,36,.2);
}
.achievement-badge.locked{
  opacity:.5;
  filter:grayscale(1);
}
.achievement-badge:hover{
  transform:translateY(-2px);
  box-shadow:0 4px 12px rgba(0,0,0,.1);
}
.achievement-badge .ach-icon{
  font-size:28px;
  margin-bottom:4px;
}
.achievement-badge .ach-name{
  font-size:12px;
  font-weight:700;
  color:var(--ink);
  margin-bottom:2px;
}
.achievement-badge .ach-desc{
  font-size:10px;
  color:var(--muted);
  line-height:1.3;
}
body.dark .achievement-badge.unlocked{
  background:linear-gradient(135deg,#78350f,#92400e);
  border-color:#fbbf24;
}
body.dark .achievement-badge.unlocked .ach-name{
  color:#fef3c7;
}
body.dark .achievement-badge.unlocked .ach-desc{
  color:#fde68a;
}
