:root{--green:#178526;--green-dark:#0f6f1e;--mint:#c6efbf;--paper:#fbfff8;--line:#dfe8dd;--text:#273126;--muted:#6f7a6d;--panel:#fff;--danger:#d43c33;--shadow:0 12px 30px rgba(35,68,31,.12)}*{box-sizing:border-box}html{min-height:100%}body{margin:0;min-height:100vh;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--text);background:#eef8eb}button,input{font:inherit}button{border:0;cursor:pointer}.app-shell{flex:1 0 auto;min-height:0;background:linear-gradient(180deg,#d7f4d0 0,#f6fbf3 280px,#f7faf5 100%)}.app-shell.night{--paper:#202322;--panel:#2b302d;--line:#3d463f;--text:#eef4ec;--muted:#aab5aa;background:#181b19}.topbar{height:64px;display:flex;align-items:center;justify-content:center;position:sticky;top:0;z-index:4;background:var(--mint);box-shadow:0 1px 0 rgba(0,0,0,.04)}.night .topbar{background:#2d332e}.topbar h1{margin:0;font-size:20px;font-weight:800;letter-spacing:0}.home-layout{max-width:980px;margin:0 auto;padding:14px 14px 30px}.control-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:8px 0 14px}.control-unit{min-height:58px;background:rgba(255,255,255,.82);border:1px solid var(--line);border-radius:8px;display:flex;align-items:center;justify-content:space-between;padding:10px}.night .control-unit{background:rgba(43,48,45,.9)}.control-label{font-size:13px;color:var(--muted)}.switch{width:44px;height:24px;border-radius:999px;background:#cbd5c9;padding:3px;display:inline-flex;align-items:center;transition:.18s}.switch:after{content:"";width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.18);transition:.18s}.switch.on{background:var(--green)}.switch.on:after{transform:translateX(20px)}.main-panels{display:grid;grid-template-columns:1fr 270px;gap:14px;align-items:start}.card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.exercise-card{min-height:72px;border-radius:8px;background:var(--panel);border:1px solid var(--line);box-shadow:0 4px 12px rgba(35,68,31,.05);color:var(--text);font-size:19px;font-weight:800;display:flex;align-items:center;justify-content:center;text-align:center;padding:8px;white-space:pre-line}.exercise-card.active{background:var(--green);color:#fff;border-color:var(--green);box-shadow:var(--shadow)}.operation-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px;position:sticky;top:78px;box-shadow:var(--shadow)}.count-button,.secondary-button,.primary-button{width:100%;min-height:48px;border-radius:8px;margin-bottom:10px;font-weight:800}.count-button{background:#ecf5e9;color:var(--green-dark)}.primary-button{background:var(--green);color:#fff;font-size:18px}.secondary-button{background:#eef0ee;color:#3d463f}.night .count-button,.night .secondary-button{background:#3a423c;color:var(--text)}.count-display{text-align:center;margin:10px 0 16px;color:var(--muted);font-weight:700}.view{max-width:900px;margin:0 auto;padding:12px 14px 26px}.exercise-top{height:58px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:0 14px;box-shadow:var(--shadow)}.exercise-top .time{text-align:right;font-weight:800}.back-button{width:auto;min-width:44px;height:38px;border-radius:8px;background:#eef3ec}.question-area{min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.question{font-size:clamp(34px,8vw,72px);font-weight:900;text-align:center;line-height:1.18;word-break:break-word}.helper-text{min-height:22px;color:var(--muted);font-weight:700}.level-text{color:var(--muted)}.keyboard{max-width:620px;margin:0 auto;display:grid;gap:10px}.keyboard-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.key{height:58px;border-radius:8px;background:var(--panel);border:1px solid var(--line);box-shadow:0 4px 10px rgba(0,0,0,.04);font-size:22px;font-weight:900;color:var(--text)}.key.enter{background:var(--green);color:#fff}.key.utility{color:var(--green-dark)}.result-card,.modal-card,.drawer-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.result-card{padding:20px;margin-top:16px}.result-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}.summary-box{background:#f3f7f1;border-radius:8px;padding:12px;text-align:center}.night .summary-box{background:#343b36}.summary-box b{display:block;font-size:24px;margin-top:4px}.result-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:14px}.result-table th,.result-table td{border-bottom:1px solid var(--line);padding:9px 6px;text-align:left}.correct{color:var(--green);font-weight:800}.wrong{color:var(--danger);font-weight:800}.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.38);z-index:20;display:flex;align-items:center;justify-content:center;padding:18px}.modal-card{width:min(480px,100%);padding:16px}.modal-title{margin:0 0 14px;font-size:20px;font-weight:900}.option-list{display:grid;gap:10px}.option{min-height:48px;border-radius:8px;background:#f3f6f1;border:1px solid var(--line);display:flex;align-items:center;padding:0 12px;font-weight:800;color:var(--text)}.option.active{background:var(--green);color:#fff}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}.action{min-width:88px;height:42px;border-radius:8px;font-weight:800;background:#edf1ec;color:var(--text)}.action.primary{background:var(--green);color:#fff}.custom-count{width:100%;height:44px;border:1px solid var(--line);border-radius:8px;padding:0 10px;margin-top:10px;background:transparent;color:var(--text)}.drawer{position:fixed;inset:auto 0 0 0;z-index:21;background:rgba(0,0,0,.36);display:flex;align-items:flex-end;min-height:100%}.drawer-card{width:min(820px,100%);margin:0 auto;max-height:86vh;overflow:auto;padding:14px;border-bottom-left-radius:0;border-bottom-right-radius:0}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.tabs{display:flex;gap:8px;flex-wrap:wrap}.tab,.chip{min-height:38px;border-radius:8px;background:#f0f4ef;color:var(--text);padding:0 12px;display:inline-flex;align-items:center;justify-content:center;font-weight:800;border:1px solid transparent}.tab.active,.chip.active{background:var(--green);color:#fff}.close{width:40px;height:40px;border-radius:8px;background:#eef1ec}.section{margin:12px 0}.section-title{font-size:17px;font-weight:900;margin-bottom:8px}.chip-grid{display:flex;flex-wrap:wrap;gap:8px}.feature-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0}.range-input{width:120px;height:38px;border-radius:8px;border:1px solid var(--line);padding:0 10px;background:transparent;color:var(--text)}.percent-input{width:110px}.clear-inline{flex:1;min-height:38px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-weight:800}.toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);background:rgba(0,0,0,.78);color:#fff;border-radius:999px;padding:10px 16px;z-index:40;font-weight:800}.site-footer{flex:0 0 auto;padding:14px 16px calc(14px + env(safe-area-inset-bottom));background:#f7faf5;border-top:1px solid rgba(223,232,221,.85);display:flex;justify-content:center;align-items:center;gap:8px 12px;flex-wrap:wrap}.beian-link{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:6px 10px;border-radius:8px;color:#667264;text-decoration:none;font-size:13px;font-weight:700;line-height:1.4;transition:background-color .18s,color .18s}.beian-link:hover,.beian-link:focus-visible{background:#edf5ea;color:var(--green-dark);outline:0}.beian-link:focus-visible{box-shadow:0 0 0 3px rgba(23,133,38,.16)}.beian-icon{width:20px;height:20px;flex:0 0 20px;display:block}.night+.site-footer{background:#181b19;border-top-color:#303830}.night+.site-footer .beian-link{color:#aab5aa}.night+.site-footer .beian-link:hover,.night+.site-footer .beian-link:focus-visible{background:#242a26;color:#eef4ec}@media(max-width:760px){.control-bar{grid-template-columns:repeat(2,1fr)}.main-panels{grid-template-columns:1fr}.operation-panel{position:static}.card-grid{gap:10px}.exercise-card{min-height:64px;font-size:16px}.result-summary{grid-template-columns:repeat(2,1fr)}}