@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes scaleIn{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
:root {
  --bg: #f5f0eb; --card: #fffcf7; --text: #2c2c2c; --text2: #777;
  --primary: #8b5e3c; --primary-hover: #6e4a2e; --primary-light: #f0e8df;
  --border: #d9cdc0;
  --correct: #5b8c5a; --correct-bg: #eaf5ea; --wrong: #c45a5a; --wrong-bg: #fdeaea;
  --shadow: rgba(0,0,0,.06); --input-bg: #fffcf7;
  --bar-bg: #e0d5c8; --bar-fill: #8b5e3c;
}
[data-theme="dark"] {
  --bg: #1c1816; --card: #282320; --text: #d4ccc4; --text2: #9e9388;
  --primary: #c4956a; --primary-hover: #d4a87e; --primary-light: #342c26;
  --border: #3d352e;
  --correct: #7bb87b; --correct-bg: #1e2e1a; --wrong: #d47a7a; --wrong-bg: #2e1a1a;
  --shadow: rgba(0,0,0,.25); --input-bg: #2d2722;
  --bar-bg: #3d352e; --bar-fill: #c4956a;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,'Noto Sans SC','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--text);transition:background .2s,color .2s;min-height:100dvh}
.theme-row,.theme-btn,.panel,.q-card,.banner,.saved-item,.opt,.opt-marker,.flag-btn,.nav-dot,.nav-toggle,.fs-btn,.stat-box,.stat-tab,.stat-tabs,.res-area,.quiz-area,.key-row input{transition:background .2s,color .2s,border-color .2s}
.container{max-width:860px;margin:0 auto;padding:16px 20px}

.theme-row{display:flex;gap:8px;margin-bottom:8px}
.theme-btn{background:var(--card);border:1px solid var(--border);color:var(--text);padding:6px 14px;border-radius:20px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:5px;transition:.15s}
.theme-btn:hover{background:var(--primary-light)}

.banner{background:var(--card);border:1px solid var(--border);color:var(--text);padding:22px 18px;border-radius:10px;margin-bottom:14px;text-align:center}
.banner h1{font-size:20px;margin-bottom:4px}
.banner p{font-size:13px;color:var(--text2)}

.panel{background:var(--card);border-radius:10px;padding:20px;box-shadow:0 1px 4px var(--shadow);border:1px solid var(--border)}
.panel-title{font-size:16px;font-weight:600;margin-bottom:14px;padding-bottom:8px;border-bottom:1.5px solid var(--border)}

.mode-tabs{display:flex;margin-bottom:16px;border-radius:7px;overflow:hidden;border:1.5px solid var(--primary)}
.mode-tab{flex:1;padding:10px 6px;text-align:center;font-size:13px;font-weight:500;cursor:pointer;background:var(--card);color:var(--primary);transition:.12s}
.mode-tab.active{background:var(--primary);color:#fff}
.mode-tab:not(.active):hover{background:var(--primary-light)}

.row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px;align-items:center}
.row label{min-width:64px;font-size:14px;font-weight:500;color:var(--text2)}
.row input[type=number]{width:68px;padding:6px 8px;border:1px solid var(--border);border-radius:5px;font-size:14px;background:var(--input-bg);color:var(--text)}
.row input[type=checkbox]{margin-right:2px;accent-color:var(--primary)}
.cg{display:flex;gap:12px;flex-wrap:wrap}
.cg label{display:flex;align-items:center;gap:3px;font-size:13px;cursor:pointer;color:var(--text)}

.saved-list{margin-top:14px}
.saved-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border:1px solid var(--border);border-radius:7px;margin-bottom:8px;background:var(--bg)}
.saved-info{font-size:13px}
.saved-info strong{font-size:14px}
.saved-actions{display:flex;gap:6px}

.btn{padding:10px 28px;border:none;border-radius:7px;font-size:15px;cursor:pointer;transition:background .15s;display:inline-flex;align-items:center;justify-content:center;gap:5px;-webkit-tap-highlight-color:transparent;min-height:42px}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-hover)}
.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn-success{background:var(--correct);color:#fff}
.btn-success:hover{opacity:.9}
.btn-warning{background:var(--wrong);color:#fff}
.btn-warning:hover{opacity:.9}
.btn-outline{background:transparent;color:var(--primary);border:1.5px solid var(--primary)}
.btn-outline:hover{background:var(--primary-light)}
.btn-sm{padding:8px 20px;font-size:14px;min-height:38px}
.btn-del{background:transparent;color:var(--wrong);border:1px solid var(--wrong);padding:4px 10px;font-size:12px;border-radius:5px;cursor:pointer}

.quiz-area{display:none;animation:slideUp .25s ease}
.res-area{animation:slideUp .25s ease}
.top-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.top-left{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.progress-text{font-size:13px;color:var(--text2)}
.bar-wrap{height:5px;background:var(--bar-bg);border-radius:3px;margin-bottom:14px;overflow:hidden}
.bar-fill{height:100%;background:var(--bar-fill);border-radius:3px;transition:width .25s}

.q-card{background:var(--card);border-radius:10px;padding:18px;box-shadow:0 1px 4px var(--shadow);border:1px solid var(--border)}
.q-header{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.q-num{font-weight:600;color:var(--primary);font-size:14px}
.q-tag{font-size:11px;padding:2px 10px;border-radius:9px;font-weight:500;background:var(--tag-bg,var(--primary-light));color:var(--tag,var(--primary))}
.q-text{font-size:15px;line-height:1.8;margin-bottom:14px}

.opts{display:flex;flex-direction:column;gap:7px}
.opt{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1.5px solid var(--border);border-radius:8px;cursor:pointer;transition:.12s;background:var(--card);min-height:48px}
.opt:hover{border-color:var(--primary);background:var(--primary-light)}
.opt.disabled,.opt.disabled:hover{cursor:default;background:var(--card)}
.opt.selected{border-color:var(--primary);background:var(--primary-light)}
.opt.correct{border-color:var(--correct);background:var(--correct-bg)}
.opt.wrong{border-color:var(--wrong);background:var(--wrong-bg)}
.opt.reveal{border-color:var(--correct);background:var(--correct-bg)}
.opt-marker{width:26px;height:26px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0;transition:.12s}
.opt.selected .opt-marker{background:var(--primary);border-color:var(--primary);color:#fff}
.opt.correct .opt-marker,.opt.reveal .opt-marker{background:var(--correct);border-color:var(--correct);color:#fff}
.opt.wrong .opt-marker{background:var(--wrong);border-color:var(--wrong);color:#fff}
.opt-text{font-size:15px;line-height:1.6;padding-top:4px}
.note{font-size:12px;color:var(--text2);margin-top:6px}

.fb{margin-top:12px;padding:10px 14px;border-radius:7px;font-size:14px;font-weight:500;display:none}
.fb-ok{background:var(--correct-bg);color:var(--correct);border:1px solid var(--correct);display:block}
.fb-no{background:var(--wrong-bg);color:var(--wrong);border:1px solid var(--wrong);display:block}
.fb-ans{font-weight:400;margin-top:3px;font-size:13px}

.nav-row{display:flex;justify-content:space-between;align-items:center;margin-top:14px;flex-wrap:wrap;gap:10px}
.nav-row .btn{min-width:120px}

.res-area{display:none;text-align:center;padding:10px 0}
.res-area .score{font-size:40px;font-weight:700;color:var(--primary)}
.res-area .score-lbl{font-size:15px;color:var(--text2)}
.res-area .det{font-size:14px;color:var(--text2);margin-top:6px}
.stat-grid{display:flex;gap:12px;justify-content:center;margin-top:14px;flex-wrap:wrap}
.stat-box{text-align:center;padding:8px 16px;background:var(--bg);border-radius:7px;min-width:72px;border:1px solid var(--border)}
.stat-tabs{display:flex;gap:4px;margin-bottom:10px;border-bottom:1px solid var(--border);padding-bottom:6px}
.stat-tab{padding:4px 10px;font-size:13px;border-radius:4px;cursor:pointer;transition:background .15s,color .15s;color:var(--text);user-select:none}
.stat-tab:hover{background:var(--primary-light)}
.stat-tab.active{background:var(--primary);color:#fff}
.stat-tab span{opacity:.7}
.stat-box .num{font-size:20px;font-weight:700}
.stat-box .lbl{font-size:12px;color:var(--text2)}
.res-tbl{text-align:left;margin-top:14px;max-height:360px;overflow-y:auto;border:1px solid var(--border);border-radius:7px;background:var(--card)}
.res-tbl table{width:100%;border-collapse:collapse;font-size:12px}
.res-tbl th,.res-tbl td{padding:5px 6px;border-bottom:1px solid var(--border);text-align:center}
.res-tbl th{background:var(--bg);font-weight:500;position:sticky;top:0}
.res-tbl .q-pre{text-align:left;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tg-ok{color:var(--correct);font-weight:600}
.tg-no{color:var(--wrong);font-weight:600}
.res-acts{display:flex;gap:8px;justify-content:center;margin-top:14px;flex-wrap:wrap}
.empty-saved{font-size:13px;color:var(--text2);text-align:center;padding:8px 0}
.key-row{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.key-row input{flex:1;min-width:140px;padding:8px 12px;border:1.5px solid var(--border);border-radius:6px;font-size:15px;background:var(--input-bg);color:var(--text);outline:none}
.key-row input:focus{border-color:var(--primary)}
.key-row .key-msg{font-size:12px;color:var(--text2);width:100%}
.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:999;animation:fadeIn .15s ease}
.modal-box{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:24px;max-width:360px;width:90%;box-shadow:0 8px 32px rgba(0,0,0,.15);animation:scaleIn .2s ease}
.modal-msg{font-size:15px;line-height:1.6;margin-bottom:18px;color:var(--text)}
.modal-acts{display:flex;gap:10px;justify-content:flex-end}
.modal-acts .btn{min-width:80px}

.nav-grid{display:none;grid-template-columns:repeat(auto-fill,minmax(28px,1fr));gap:3px;margin:8px 0 0;max-height:160px;overflow-y:auto;padding:2px;background:var(--card);border:1px solid var(--border);border-radius:7px}
.nav-grid.show{display:grid}
.nav-toggle{font-size:12px;color:var(--text2);cursor:pointer;padding:6px 12px;display:inline-flex;align-items:center;gap:5px;user-select:none;background:var(--card);border:1px solid var(--border);border-radius:6px;margin-bottom:4px;transition:.12s}
.nav-toggle:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}
.nav-dot{aspect-ratio:1;border:1.5px solid var(--border);border-radius:4px;cursor:pointer;font-size:10px;display:flex;align-items:center;justify-content:center;transition:.1s;background:var(--card);color:var(--text2);position:relative;font-weight:500;min-height:24px;min-width:24px}
.nav-dot:hover{border-color:var(--primary);color:var(--primary)}
.nav-dot.answered{background:var(--primary);color:#fff;border-color:var(--primary)}
.nav-dot.current{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-light);font-weight:700;color:var(--primary)}
.nav-dot.answered.current{background:var(--primary);color:#fff;box-shadow:none}
.nav-dot.correct{background:#2e7d32;color:#fff;border-color:#1b5e20;font-weight:700;font-size:9px}
.nav-dot.wrong{background:#c62828;color:#fff;border-color:#b71c1c;font-weight:700;font-size:9px}
.nav-dot.flagged{background:var(--primary-light);border-color:var(--primary);color:var(--primary);font-weight:700}
.nav-dot.answered.flagged{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:700}

.timer{font-size:14px;font-weight:600;color:var(--primary);display:inline-flex;align-items:center;gap:3px;margin-left:8px}
.timer.warning{color:var(--wrong);animation:pulse 1s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}

.flag-btn{background:none;border:1.5px solid var(--border);cursor:pointer;font-size:12px;padding:6px 12px;border-radius:6px;color:var(--text2);transition:.12s;min-height:38px;display:inline-flex;align-items:center;gap:4px}
.flag-btn:hover{border-color:var(--primary);color:var(--primary)}
.flag-btn.flagged{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}

.fs-btn{background:var(--card);border:1px solid var(--border);color:var(--text2);padding:4px 10px;cursor:pointer;font-size:12px;border-radius:4px;transition:.12s}
.fs-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.fs-btn:not(.active):hover{background:var(--primary-light)}
[data-font="small"] .q-text{font-size:14px}
[data-font="small"] .opt-text{font-size:14px}
[data-font="medium"] .q-text{font-size:16px}
[data-font="medium"] .opt-text{font-size:16px}
[data-font="large"] .q-text{font-size:19px;line-height:2}
[data-font="large"] .opt-text{font-size:18px;line-height:1.7}

.res-q{text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px;cursor:pointer;font-size:12px}
.res-q.expanded{white-space:normal;text-overflow:clip;max-width:none}
.toggle-all-btn{font-size:12px;color:var(--text2);cursor:pointer;padding:6px 14px;display:inline-flex;align-items:center;gap:4px;background:var(--card);border:1px solid var(--border);border-radius:6px;margin:6px auto 0;transition:.12s}
.toggle-all-btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}

@media(max-width:600px){
  .theme-row{flex-wrap:nowrap;overflow-x:auto;gap:4px;padding-bottom:2px;-webkit-overflow-scrolling:touch}
  .theme-btn{font-size:12px;padding:5px 10px;white-space:nowrap;flex-shrink:0}
  .container{padding:10px 8px}
  .banner h1{font-size:17px}
  .banner{padding:16px 12px}
  .panel{padding:14px}
  .q-card{padding:14px}
  .q-text{font-size:14px}
  .opt{padding:10px 10px}
  .opt-text{font-size:14px}
  .opt-marker{width:30px;height:30px}
  .mode-tab{font-size:13px;padding:10px 4px}
  .btn{padding:10px 20px;font-size:14px;min-height:44px}
  .btn-sm{padding:8px 16px;font-size:13px;min-height:40px}
  .top-bar .btn-sm{padding:8px 14px;font-size:13px;min-height:40px}
  .nav-row .btn{flex:1;min-width:0}
  .nav-row{gap:8px}
  .nav-row .btn{padding:10px 12px}
  .res-tbl table{font-size:11px}
  .res-tbl th,.res-tbl td{padding:5px 4px}
  .stat-box{min-width:60px;padding:6px 12px}
  .stat-box .num{font-size:17px}
}