:root{
  --blue:#2563EB; --blue-dark:#1E3A8A; --bg:#F1F5F9; --top:#F0F4F8;
  --border:#E2E8F0; --word-bg:#DBEAFE; --gray:#64748B; --green:#10B981;
  --red:#d32f2f; --card-alt:#F8FAFC; --phon-gray:#94A3B8;
  --correct-bg:#EFF6FF; --wrong-bg:#FEF2F2;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
body{font-family:"Microsoft YaHei",Arial,sans-serif;background:var(--bg);color:#0F172A}
.hidden{display:none!important}

/* 顶栏 */
.topbar{display:flex;align-items:center;gap:8px;height:56px;padding:0 18px;background:var(--top);flex-shrink:0}
.logo{display:flex;align-items:center;gap:0;margin-right:6px}
.dot{width:14px;height:14px;border-radius:50%;background:var(--blue);display:inline-block}
.dot.green{margin-left:-8px;background:var(--green)}
.logo-text{font-size:15px;font-weight:bold;color:var(--blue-dark);margin-left:6px}
.grade-combo{font-size:12px;padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:#fff;cursor:pointer;outline:none}
.btn{font-size:12px;font-weight:bold;padding:7px 14px;border:0;border-radius:6px;cursor:pointer}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:#1D4ED8}
.btn-outline{background:#fff;color:var(--gray);border:1px solid var(--border)}
.btn-outline:hover{background:var(--bg)}
.mode-switch{margin-left:auto;display:flex;background:#E2E8F0;border-radius:8px;padding:3px}
.mode-btn{border:0;background:transparent;padding:7px 16px;border-radius:6px;cursor:pointer;font-size:12px;color:var(--phon-gray)}
.mode-btn.active{background:#fff;color:var(--blue-dark);font-weight:bold;box-shadow:0 1px 3px rgba(0,0,0,.1)}

/* 页面容器 */
.page{padding:0;height:calc(100vh - 56px);overflow:auto}
#practicePage{display:flex;align-items:stretch;justify-content:center}

/* 目录页 */
.dir-scroll{padding:14px 15px 10px}
.dir-title{text-align:center;color:var(--blue-dark);font-size:20px;margin-bottom:14px}
.dir-inner{display:flex;flex-direction:column;align-items:center;gap:10px}
.unit-card{width:100%;max-width:780px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:14px 18px}
.unit-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.unit-num{background:var(--blue);color:#fff;width:26px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:bold;font-size:13px}
.unit-name{font-size:16px;font-weight:bold;color:var(--blue-dark)}
.unit-count{margin-left:auto;background:var(--bg);color:var(--gray);font-size:10px;padding:3px 10px;border-radius:20px}
.word-box{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.word-pill{background:var(--word-bg);color:var(--blue-dark);border:0;border-radius:20px;padding:6px 14px;font-size:11px;cursor:pointer}
.word-pill:hover{background:#BFDBFE}
.phrase-label{color:var(--phon-gray);font-size:11px;margin:8px 0 6px 2px}
.phrase-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.item-card{background:var(--card-alt);border:1px solid var(--border);border-radius:8px;padding:8px 12px;cursor:pointer}
.item-card:hover{border-color:var(--blue)}
.item-tag{background:var(--word-bg);color:var(--blue-dark);font-size:10px;padding:1px 8px;border-radius:4px;display:inline-block}
.item-en{font-size:13px;font-weight:bold;color:var(--blue-dark);margin-top:4px;background:transparent;border:0;text-align:left;width:100%;cursor:pointer;padding:2px 0}
.item-zh{font-size:11px;color:var(--phon-gray)}

/* 练习页 */
.practice-card{background:#fff;border:1px solid var(--border);border-radius:14px;margin:20px 40px;flex:1;display:flex;flex-direction:column;align-items:center;padding:0 0 30px 0}
.practice-top-spacer{flex:1}
.q-chinese{font-size:44px;font-weight:bold;color:var(--red);text-align:center;margin-bottom:24px;padding:0 20px}
.word-grid{display:flex;flex-wrap:wrap;gap:10px 16px;justify-content:center;padding:10px}
.word-cell{display:flex;flex-direction:column;align-items:center;gap:6px}
.word-pos{font-size:20px;color:var(--blue-dark);min-height:24px;text-align:center}
.word-input{font-size:28px;padding:6px 8px;border:0;border-radius:6px;text-align:center;width:auto;min-width:60px;background:var(--card-alt);color:var(--blue-dark);outline:2px solid var(--border)}
.word-input:focus{outline:2px solid var(--blue)}
.word-input.correct{color:var(--blue);background:var(--correct-bg);outline:2px solid var(--blue)}
.word-input.wrong{color:var(--red);background:var(--wrong-bg);outline:2px solid var(--red)}
.word-input.readonly{color:var(--blue);background:var(--correct-bg);outline:2px solid var(--blue);font-weight:bold;cursor:default}
.word-phon{font-size:21px;color:var(--phon-gray);min-height:26px;text-align:center}
.practice-bot-spacer{flex:1}
.practice-actions{display:flex;gap:12px}

/* 模态框 */
.modal{position:fixed;inset:0;background:rgba(15,23,42,.5);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}
.file-warn{background:#FEF3C7;color:#92400E;border-bottom:1px solid #F59E0B;padding:8px 18px;font-size:12px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
.file-warn code{background:#FDE68A;padding:1px 6px;border-radius:4px;font-family:Consolas,monospace;font-size:11px;margin:0 4px}
.file-warn a{color:#B45309;text-decoration:underline;margin-left:8px}
.modal-card{background:#fff;border-radius:14px;max-width:560px;width:100%;max-height:90vh;overflow:hidden;position:relative;display:flex;flex-direction:column}
.modal-close{position:absolute;top:8px;right:14px;border:0;background:transparent;font-size:26px;cursor:pointer;color:var(--phon-gray);z-index:1}
.help-scroll{overflow-y:auto;padding:20px 20px 10px}
.help-title{color:var(--blue-dark);font-size:14px;font-weight:bold;margin-bottom:10px}
.help-text{font-family:"Microsoft YaHei",monospace;font-size:11px;line-height:1.8;color:#334155;white-space:pre-wrap}
.modal-sep{border:0;border-top:1px solid var(--border);margin:0}
.decl{padding:16px 20px;text-align:center}
.decl-title{color:var(--blue-dark);font-size:13px;font-weight:bold;margin-bottom:8px}
.decl-text{color:#475569;font-size:11px;line-height:1.6;margin-bottom:12px}
.decl-contact{color:#475569;font-size:11px;margin-bottom:8px}
.qr{width:180px;height:180px;border:1px solid #CBD5E1;border-radius:8px;object-fit:contain}
.qr-tip{color:var(--phon-gray);font-size:10px;margin-top:6px}
